Objects adding dict test & fixes
This commit is contained in:
parent
63029e6083
commit
a679ab1c4b
6 changed files with 56 additions and 6 deletions
|
|
@ -221,7 +221,7 @@ namespace obj {
|
||||||
ndf << tp::String(in->type->name);
|
ndf << tp::String(in->type->name);
|
||||||
|
|
||||||
// allocate for object file header
|
// allocate for object file header
|
||||||
ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + 1);
|
ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + sizeof(tp::String::Logic::Index));
|
||||||
|
|
||||||
// calc max size needed for saving all hierarchy of types
|
// calc max size needed for saving all hierarchy of types
|
||||||
tp::alni file_alloc_size = objsize_file_util(in, in->type);
|
tp::alni file_alloc_size = objsize_file_util(in, in->type);
|
||||||
|
|
@ -372,8 +372,10 @@ namespace obj {
|
||||||
|
|
||||||
ndf.setAddress(0);
|
ndf.setAddress(0);
|
||||||
|
|
||||||
loaded_file = (tp::int1*) malloc(ndf.getSize());
|
const auto fileSize = ndf.getSize();
|
||||||
ndf.readBytes(loaded_file, ndf.getSize());
|
loaded_file = (tp::int1*) malloc(fileSize);
|
||||||
|
tp::memSetVal(loaded_file, fileSize, 0);
|
||||||
|
ndf.readBytes(loaded_file, fileSize);
|
||||||
|
|
||||||
ndf.setAddress(sizeof(ObjectsFileHeader));
|
ndf.setAddress(sizeof(ObjectsFileHeader));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,10 @@ alni DictObject::save_size(DictObject* self) {
|
||||||
|
|
||||||
for (auto item : self->items) {
|
for (auto item : self->items) {
|
||||||
// string length
|
// string length
|
||||||
save_size += (item->key.size() + 1) * sizeof(*item->key.read());
|
auto size = item->key.size();
|
||||||
|
save_size += size * sizeof(*item->key.read());
|
||||||
|
save_size += sizeof(decltype(size));
|
||||||
|
|
||||||
// object file adress
|
// object file adress
|
||||||
save_size += sizeof(alni);
|
save_size += sizeof(alni);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,11 @@ alnf StringObject::to_float(StringObject* self) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static alni save_size(StringObject* self) {
|
static alni save_size(StringObject* self) {
|
||||||
// return self->val.save_size();
|
alni save_size = 0;
|
||||||
return {};
|
auto size = self->val.size();
|
||||||
|
save_size += (size) * sizeof(*self->val.read());
|
||||||
|
save_size += sizeof(decltype(size));
|
||||||
|
return save_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void save(StringObject* self, ArchiverOut& file_self) {
|
static void save(StringObject* self, ArchiverOut& file_self) {
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ using namespace obj;
|
||||||
|
|
||||||
|
|
||||||
void testCore();
|
void testCore();
|
||||||
|
void testPrimitives();
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
|
|
||||||
|
|
@ -18,6 +19,7 @@ int main() {
|
||||||
if (module.initialize()) {
|
if (module.initialize()) {
|
||||||
|
|
||||||
testCore();
|
testCore();
|
||||||
|
testPrimitives();
|
||||||
|
|
||||||
module.deinitialize();
|
module.deinitialize();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,11 @@ TEST_DEF_STATIC(BasicAPI) {
|
||||||
|
|
||||||
printf("%s\n", NDO->toString(savedInt).read());
|
printf("%s\n", NDO->toString(savedInt).read());
|
||||||
|
|
||||||
|
TEST(NDO->compare(integer, savedInt));
|
||||||
|
TEST(NDO_CAST(IntObject, savedInt));
|
||||||
|
TEST(integer->val == NDO_CAST(IntObject, savedInt)->val);
|
||||||
|
|
||||||
|
|
||||||
NDO->destroy(integer);
|
NDO->destroy(integer);
|
||||||
NDO->destroy(savedInt);
|
NDO->destroy(savedInt);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
35
Objects/tests/primitives/TestPrimitives.cpp
Normal file
35
Objects/tests/primitives/TestPrimitives.cpp
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
|
||||||
|
#include "NewPlacement.hpp"
|
||||||
|
|
||||||
|
#include "Testing.hpp"
|
||||||
|
|
||||||
|
#include "core/object.h"
|
||||||
|
|
||||||
|
#include "primitives/dictobject.h"
|
||||||
|
#include "primitives/intobject.h"
|
||||||
|
|
||||||
|
using namespace tp;
|
||||||
|
using namespace obj;
|
||||||
|
|
||||||
|
TEST_DEF_STATIC(Dict) {
|
||||||
|
auto integer = NDO_CAST(IntObject, NDO->create("int"));
|
||||||
|
integer->val = 10;
|
||||||
|
|
||||||
|
auto dict = NDO_CAST(DictObject, NDO->create("dict"));
|
||||||
|
|
||||||
|
dict->put("val", integer);
|
||||||
|
|
||||||
|
NDO->save(dict, "dict.o");
|
||||||
|
|
||||||
|
auto dictLoaded = NDO_CAST(DictObject, NDO->load("dict.o"));
|
||||||
|
|
||||||
|
TEST(dictLoaded->presents("val").isValid());
|
||||||
|
TEST(NDO_CAST(IntObject, dictLoaded->get("val"))->val == 10);
|
||||||
|
|
||||||
|
NDO->destroy(dict);
|
||||||
|
NDO->destroy(dictLoaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_DEF(Primitives) {
|
||||||
|
testDict();
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue