#include using namespace Upp; template void Test(T& data) { LOG("-----------------"); T data2; String bin = StoreAsString(data); LoadFromString(data2, bin); data2.Shrink(); ASSERT(StoreAsJson(data) == StoreAsJson(data2)); ASSERT(StoreAsString(data) == StoreAsString(data2)); String xml = StoreAsXML(data); DUMP(xml); LoadFromXML(data2, xml); data2.Shrink(); ASSERT(StoreAsJson(data) == StoreAsJson(data2)); ASSERT(StoreAsString(data) == StoreAsString(data2)); String json = StoreAsJson(data); DUMP(json); data2.Clear(); LoadFromJson(data2, json); data2.Shrink(); 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); } template void TestFixedMap() { T data; data.Add(1, typeid(T).name()); data.Add(2, "123"); data.Add(3, "433"); data.Finish(); Test(data); } CONSOLE_APP_MAIN { StdLogSetup(LOG_FILE|LOG_COUT); Test< Vector >(); Test< WithDeepCopy< Vector > >(); Test< Array >(); Test< WithDeepCopy< Array > >(); Test< Index >(); Test< WithDeepCopy< Index > >(); Test< InVector >(); Test< WithDeepCopy > >(); Test< InArray >(); Test< WithDeepCopy > >(); Test< SortedIndex >(); Test< WithDeepCopy > >(); TestMap< VectorMap >(); TestMap< WithDeepCopy< VectorMap > >(); TestMap< ArrayMap >(); TestMap< WithDeepCopy< ArrayMap > >(); TestMap< SortedVectorMap >(); TestMap< WithDeepCopy< SortedVectorMap > >(); TestMap< SortedArrayMap >(); TestMap< WithDeepCopy< SortedArrayMap > >(); TestFixedMap< FixedVectorMap >(); TestFixedMap< WithDeepCopy< FixedVectorMap > >(); TestFixedMap< FixedArrayMap >(); TestFixedMap< WithDeepCopy< FixedArrayMap > >(); LOG("========= EVERYTHING OK =========="); }