#include <InfoDirFile.hpp>
#include <iostream>

void test1()
{
    DirFileInfo info;
    DirFileInfo info2;
    info.fullPath = "C:\\Users\\Administrator\\Desktop\\test.txt";

    info.name.resize(1024);
    info.name[0] = 'a';
    info.name[10] = 'd';
    info.name[11] = '\0';
    info.name[12] = 'c';

    info.lastModifyTime = 1610995200;
    info.size = 1024;
    info.permission = 0777;
    info.type = FileType::File;

    std::stringstream ss;

    {
        cereal::BinaryOutputArchive archive(ss);
        archive(info);
    }

    std::string ret = ss.str();
    std::cout << "Serialized size: " << ret.size() << " bytes\n";

    {
        std::stringstream inputSs(ret);
        cereal::BinaryInputArchive inputArchive(inputSs);
        inputArchive(info2);
    }
}

void test2()
{
    DirFileInfoVec v;
    DirFileInfoVec v2;
    DirFileInfo d1;
    d1.fullPath = "Java";
    DirFileInfo d2;
    d2.fullPath = "CPP";
    v.vec.push_back(d1);
    v.vec.push_back(d2);

    std::stringstream ss;

    {
        cereal::BinaryOutputArchive archive(ss);
        archive(v);
    }

    std::string ret = ss.str();
    std::cout << "Serialized size: " << ret.size() << " bytes\n";

    {
        std::stringstream inputSs(ret);
        cereal::BinaryInputArchive inputArchive(inputSs);
        inputArchive(v2);
    }
}

int main()
{
    test2();
    return 0;
}