Objects adding dict test & fixes
This commit is contained in:
parent
2c8e1470d1
commit
a918c83ec1
6 changed files with 56 additions and 6 deletions
|
|
@ -221,7 +221,7 @@ namespace obj {
|
|||
ndf << tp::String(in->type->name);
|
||||
|
||||
// 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
|
||||
tp::alni file_alloc_size = objsize_file_util(in, in->type);
|
||||
|
|
@ -372,8 +372,10 @@ namespace obj {
|
|||
|
||||
ndf.setAddress(0);
|
||||
|
||||
loaded_file = (tp::int1*) malloc(ndf.getSize());
|
||||
ndf.readBytes(loaded_file, ndf.getSize());
|
||||
const auto fileSize = ndf.getSize();
|
||||
loaded_file = (tp::int1*) malloc(fileSize);
|
||||
tp::memSetVal(loaded_file, fileSize, 0);
|
||||
ndf.readBytes(loaded_file, fileSize);
|
||||
|
||||
ndf.setAddress(sizeof(ObjectsFileHeader));
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,10 @@ alni DictObject::save_size(DictObject* self) {
|
|||
|
||||
for (auto item : self->items) {
|
||||
// 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
|
||||
save_size += sizeof(alni);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,8 +50,11 @@ alnf StringObject::to_float(StringObject* self) {
|
|||
}
|
||||
|
||||
static alni save_size(StringObject* self) {
|
||||
// return self->val.save_size();
|
||||
return {};
|
||||
alni save_size = 0;
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ using namespace obj;
|
|||
|
||||
|
||||
void testCore();
|
||||
void testPrimitives();
|
||||
|
||||
int main() {
|
||||
|
||||
|
|
@ -18,6 +19,7 @@ int main() {
|
|||
if (module.initialize()) {
|
||||
|
||||
testCore();
|
||||
testPrimitives();
|
||||
|
||||
module.deinitialize();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,11 @@ TEST_DEF_STATIC(BasicAPI) {
|
|||
|
||||
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(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