ultimatepp/autotest/Xmlize/Xmlize.cpp
cxl d02fe7d7c7 Creating the *real* autotest nest
git-svn-id: svn://ultimatepp.org/upp/trunk@7141 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2014-04-02 18:36:01 +00:00

120 lines
2.3 KiB
C++

#include <Core/Core.h>
using namespace Upp;
template <class T>
struct Data {
T val;
void Xmlize(XmlIO xml) {
xml("value", val);
}
};
template <class T>
void Test(const T& x) {
LOG("----------------------------------------");
LOG("Xmlize: " << x << " [" << typeid(T).name() << "]");
Data<T> data;
data.val = x;
String xml = StoreAsXML(data, "XmlizeTest");
LOG("Xml: ");
LOG(xml);
Data<T> data2;
ASSERT(LoadFromXML(data2, xml));
LOG("Loaded: " << data2.val);
ASSERT(data2.val == x);
}
struct DataV {
Value val;
void Xmlize(XmlIO xml) {
xml("Value", val);
}
};
template <class T>
void TestV(const T& x) {
Test(x);
LOG("-----");
DataV data;
data.val = x;
String xml = StoreAsXML(data, "XmlizeValue");
LOG("Value Xml: ");
LOG(xml);
DataV data2;
ASSERT(LoadFromXML(data2, xml));
LOG("Loaded: " << data2.val);
ASSERT(data2.val == data.val);
}
template <class T>
struct DefData {
T val;
T def;
void Xmlize(XmlIO xml) {
xml("value", val, def);
}
};
template <class T>
void TestDef(const T& x, const T& def) {
Test(x);
LOG("-----");
DefData<T> data;
data.def = def;
LoadFromXML(data, "<empty/>");
DLOG("Retrieved default value: " << data.val);
ASSERT(data.val == def);
data.val = x;
String xml = StoreAsXML(data, "XmlizeValue");
LOG("Value Xml: ");
LOG(xml);
DefData<T> data2;
ASSERT(LoadFromXML(data2, xml));
LOG("Loaded: " << data2.val);
ASSERT(data2.val == data.val);
}
CONSOLE_APP_MAIN
{
StdLogSetup(LOG_FILE|LOG_COUT);
TestV(String("Just a test!"));
TestV(WString("Just a test!"));
TestV((int) 123);
Test((dword) 0xffff0000);
TestV(12.3456789);
Test((int16)20000);
TestV((int64)I64(0xffff000025689));
Test((int16)123);
TestV(GetSysTime());
TestV(GetSysDate());
TestV(Point(1, 2));
Test(Point16(1, 2));
TestV(Point64(1, 2));
TestV(Pointf(1, 2));
TestV(Size(3, 4));
Test(Size16(3, 4));
TestV(Size64(3, 4));
TestV(Sizef(3, 4));
TestV(Rect(23, 12, 56, 88));
Test(Rect16(23, 12, 56, 88));
TestV(Rect64(23, 12, 56, 88));
TestV(Rectf(23, 12, 56, 88));
TestV(Magenta());
TestDef(Magenta(), Blue());
TestDef(String("Hello"), String("Hi"));
TestDef(3.14, 2.78);
TestDef(123, 321);
LOG("*************** OK");
}