Objects adding dict test & fixes

This commit is contained in:
IlushaShurupov 2023-07-31 22:10:46 +03:00
parent 2c8e1470d1
commit a918c83ec1
6 changed files with 56 additions and 6 deletions

View file

@ -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));

View file

@ -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);
} }

View file

@ -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) {

View file

@ -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();
} }

View file

@ -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);
} }

View 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();
}