#include using namespace Upp; template void Test(T& data) { T data2; String xml = StoreAsXML(data); DUMP(xml); LoadFromXML(data2, xml); ASSERT(StoreAsJson(data) == StoreAsJson(data2)); ASSERT(StoreAsString(data) == StoreAsString(data2)); String json = StoreAsJson(data); DUMP(json); data2.Clear(); LoadFromJson(data2, json); ASSERT(StoreAsXML(data) == StoreAsXML(data2)); ASSERT(StoreAsString(data) == StoreAsString(data2)); } template void Test() { T data; data.Add(typeid(T).name()); data.Add("123"); data.Add("433"); Test(data); } template void TestMap() { T data; data.Add(1, typeid(T).name()); data.Add(2, "123"); data.Add(3, "433"); Test(data); } CONSOLE_APP_MAIN { Test< Vector >(); Test< WithDeepCopy< Vector > >(); Test< Vector >(); Test< WithDeepCopy< Vector > >(); Test< Array >(); Test< WithDeepCopy< Array > >(); Test< Array >(); Test< WithDeepCopy< Array > >(); Test< Index >(); Test< WithDeepCopy< Index > >(); Test< Index >(); Test< WithDeepCopy< Index > >(); Test< ArrayIndex >(); Test< WithDeepCopy< ArrayIndex > >(); Test< ArrayIndex >(); Test< WithDeepCopy< ArrayIndex > >(); TestMap< VectorMap >(); TestMap< WithDeepCopy< VectorMap > >(); TestMap< VectorMap >(); TestMap< WithDeepCopy< VectorMap > >(); LOG("========= EVERYTHING OK =========="); }