From 15852dc8075af0201d6f1bf62ff4eb82d67ecdb4 Mon Sep 17 00:00:00 2001 From: cxl Date: Wed, 9 May 2012 08:00:08 +0000 Subject: [PATCH] .upptst: GuiJsonize git-svn-id: svn://ultimatepp.org/upp/trunk@4916 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- upptst/GuiJsonize/GuiJsonize.upp | 9 + upptst/GuiJsonize/init | 4 + upptst/GuiJsonize/main.cpp | 84 +++++++ upptst/SvoValue/SvoValue.cpp | 210 +++++++++--------- upptst/SvoValue/SvoValue.h | 362 +++++++++++++++---------------- upptst/SvoValue/SvoValue.upp | 5 +- upptst/SvoValue/init | 1 + 7 files changed, 388 insertions(+), 287 deletions(-) create mode 100644 upptst/GuiJsonize/GuiJsonize.upp create mode 100644 upptst/GuiJsonize/init create mode 100644 upptst/GuiJsonize/main.cpp diff --git a/upptst/GuiJsonize/GuiJsonize.upp b/upptst/GuiJsonize/GuiJsonize.upp new file mode 100644 index 000000000..78afc12a4 --- /dev/null +++ b/upptst/GuiJsonize/GuiJsonize.upp @@ -0,0 +1,9 @@ +uses + CtrlLib; + +file + main.cpp; + +mainconfig + "" = "GUI SSE2"; + diff --git a/upptst/GuiJsonize/init b/upptst/GuiJsonize/init new file mode 100644 index 000000000..2c0027215 --- /dev/null +++ b/upptst/GuiJsonize/init @@ -0,0 +1,4 @@ +#ifndef _GuiJsonize_icpp_init_stub +#define _GuiJsonize_icpp_init_stub +#include "CtrlLib/init" +#endif diff --git a/upptst/GuiJsonize/main.cpp b/upptst/GuiJsonize/main.cpp new file mode 100644 index 000000000..2ba0fd07d --- /dev/null +++ b/upptst/GuiJsonize/main.cpp @@ -0,0 +1,84 @@ +#include +using namespace Upp; + +struct TestStruct +{ + struct TestV : Moveable + { + double a; + Value b; + String ToString() const + { + return Format("a=%d, b=%d", a,b); + } + + void Jsonize(JsonIO &json) + { + json + ("a", a) + ("b", b) + ; + } + }; + + void Add(double a, Value b) + { + TestV v; + v.a = a; + v.b = b; + static int ii; + map.Add("SomeKey" + AsString(++ii), v); + } + + void Jsonize(JsonIO &json) + { + StringMap(json, map); // <- string map + } + VectorMap map; +}; + +GUI_APP_MAIN +{ + StdLogSetup(LOG_COUT|LOG_FILE); + + Vector a, b; + a.Add(); + String json = StoreAsJson(a); + RDUMP(json); + LoadFromJson(b, json); + RDUMPC(b); + ASSERT(b.GetCount() == 1 && IsNull(b[0])); + + String xml = StoreAsXML(a, "test"); + RDUMP(xml); + LoadFromXML(b, xml); + RDUMPC(b); + ASSERT(b.GetCount() == 1 && IsNull(b[0])); + + TestStruct test, test2; + test.Add(0, 0); + test.Add(-1.2345, Date(2007, 12, 12)); + + LoadFromJson(test2, StoreAsJson(test)); + + RLOG(StoreAsJson(test)); + RLOG("==================="); + RLOG(StoreAsJson(test2)); + ASSERT(StoreAsJson(test) == StoreAsJson(test2)); + RLOG("==================="); + StoreAsJsonFile(test, NULL, true); + LoadFromJsonFile(test2); + ASSERT(StoreAsJson(test) == StoreAsJson(test2)); + String fn = ConfigFile("h"); + StoreAsJsonFile(test, fn, true); + RDUMP(LoadFile(fn)); + LoadFromJsonFile(test2); + ASSERT(StoreAsJson(test) == StoreAsJson(test2)); + + TestStruct test3; + ASSERT(!LoadFromJson(test2, "{\"SomeKey1\":{\"a\":\"X\",\"b\":2},\"SomeKey2\":{\"a\":1,\"b\":2}}")); + + ASSERT(!LoadFromJsonFile(test2, "c:aksjdfhkjaskjdfkhasdf")); + + RLOG("Everything is OK."); +} diff --git a/upptst/SvoValue/SvoValue.cpp b/upptst/SvoValue/SvoValue.cpp index 0d96f0710..0c5d59ab8 100644 --- a/upptst/SvoValue/SvoValue.cpp +++ b/upptst/SvoValue/SvoValue.cpp @@ -1,104 +1,106 @@ -#include "SvoValue.h" - -CONSOLE_APP_MAIN -{ - StdLogSetup(LOG_COUT|LOG_FILE); - -// temporary - Value ist = Opt0(); - if(ist.Is()) - RLOG("int"); - if(IsNumber(ist)) - RLOG("number"); -// - - - Value v; - ASSERT(v.IsVoid()); - - CheckType(Value()); - CheckType(String("ahoj"), true); - CheckType(String('a', 20), true); - CheckType(String('b', 200), true); - CheckType(WString("ahoj")); - CheckType(123); - CheckType(123.0); - CheckType(true); - CheckType((int64)123, true); - CheckType(Date(2012, 1, 1)); - CheckType(Time(2012, 1, 1, 15, 30), true); - CheckType(Complex(1, 2), true); - ValueArray va; - va.Add(123); - va.Add("ahoj"); - ASSERT(va.GetCount() == 2); - ASSERT(va[0] == 123); - ASSERT(va[1] == "ahoj"); - CheckType(va, true); - ValueMap map; - map.Add("1", 1); - map.Add("2", 2); - CheckType(map, true); - CheckType(Point(20, 20), true); - CheckType(Size(20, 20), true); - CheckType(Rect(0, 0, 123, 123), true); - CheckType(Point64(20, 20), true); - CheckType(Size64(20, 20), true); - CheckType(Rect64(0, 0, 123, 123), true); - CheckType(Pointf(20, 20), true); - CheckType(Sizef(20, 20), true); - CheckType(Rectf(0, 0, 123, 123), true); - CheckType(Blue(), true); - Uuid uuid; - uuid.a = 11234; - uuid.b = 321; - uuid.c = 1111; - uuid.d = 19999; - CheckType(uuid, true); - - v = ErrorValue("error"); - CheckType(v, true); - ASSERT(v.IsVoid()); - ASSERT(v.IsError()); - ASSERT(!Value().IsError()); - RDUMP(GetErrorText(v)); - ASSERT(GetErrorText(v) == "error"); - - CheckValueMap(); - - CheckNumber(); - CheckNumber(); - CheckNumber(); - CheckNumber(); - - RLOG("------------------------------"); - RLOG("CheckString"); - CheckString(); - - RLOG("------------------------------"); - RLOG("CheckDateTime"); - CheckDateTime(); - - RLOG("------------------------------"); - RLOG("CheckValue"); - CheckRawValue(); - - RLOG("------------------------------"); - RLOG("CheckRawValue"); - CheckRawValue(); - - RLOG("------------------------------"); - RLOG("CheckRawPickValue"); - CheckRawPickValue(); - - RLOG("------------------------------"); - RLOG("CheckCreateRawValue"); - CheckCreateRawValue(); - - RLOG("------------------------------"); - RLOG("OtherChecks"); - OtherChecks(); - - RLOG("------------------------------"); - RLOG("######## Everything is OK"); -} +#include "SvoValue.h" + +GUI_APP_MAIN +{ + StdLogSetup(LOG_COUT|LOG_FILE); + +// temporary + Value ist = Opt0(); + if(ist.Is()) + RLOG("int"); + if(IsNumber(ist)) + RLOG("number"); +// + + + Value v; + ASSERT(v.IsVoid()); + + CheckType(Value()); + CheckType(String("ahoj"), true); + CheckType(String('a', 20), true); + CheckType(String('b', 200), true); + CheckType(WString("ahoj")); + CheckType(123); + CheckType(123.0); + CheckType(true); + CheckType((int64)123, true); + CheckType(Date(2012, 1, 1)); + CheckType(Time(2012, 1, 1, 15, 30), true); + CheckType(Complex(1, 2), true); + ValueArray va; + va.Add(123); + va.Add("ahoj"); + ASSERT(va.GetCount() == 2); + ASSERT(va[0] == 123); + ASSERT(va[1] == "ahoj"); + CheckType(va, true); + ValueMap map; + map.Add("1", 1); + map.Add("2", 2); + CheckType(map, true); + CheckType(Point(20, 20), true); + CheckType(Size(20, 20), true); + CheckType(Rect(0, 0, 123, 123), true); + CheckType(Point64(20, 20), true); + CheckType(Size64(20, 20), true); + CheckType(Rect64(0, 0, 123, 123), true); + CheckType(Pointf(20, 20), true); + CheckType(Sizef(20, 20), true); + CheckType(Rectf(0, 0, 123, 123), true); + CheckType(Blue(), true); + Uuid uuid; + uuid.a = 11234; + uuid.b = 321; + uuid.c = 1111; + uuid.d = 19999; + CheckType(uuid, true); + + CheckType(Arial(50), true); + + v = ErrorValue("error"); + CheckType(v, true); + ASSERT(v.IsVoid()); + ASSERT(v.IsError()); + ASSERT(!Value().IsError()); + RDUMP(GetErrorText(v)); + ASSERT(GetErrorText(v) == "error"); + + CheckValueMap(); + + CheckNumber(); + CheckNumber(); + CheckNumber(); + CheckNumber(); + + RLOG("------------------------------"); + RLOG("CheckString"); + CheckString(); + + RLOG("------------------------------"); + RLOG("CheckDateTime"); + CheckDateTime(); + + RLOG("------------------------------"); + RLOG("CheckValue"); + CheckRawValue(); + + RLOG("------------------------------"); + RLOG("CheckRawValue"); + CheckRawValue(); + + RLOG("------------------------------"); + RLOG("CheckRawPickValue"); + CheckRawPickValue(); + + RLOG("------------------------------"); + RLOG("CheckCreateRawValue"); + CheckCreateRawValue(); + + RLOG("------------------------------"); + RLOG("OtherChecks"); + OtherChecks(); + + RLOG("------------------------------"); + RLOG("######## Everything is OK"); +} diff --git a/upptst/SvoValue/SvoValue.h b/upptst/SvoValue/SvoValue.h index cebee4417..2821eaa4a 100644 --- a/upptst/SvoValue/SvoValue.h +++ b/upptst/SvoValue/SvoValue.h @@ -1,181 +1,181 @@ -#ifndef _SvoValue_SvoValue_h_ -#define _SvoValue_SvoValue_h_ - -#include - -using namespace Upp; - -void DumpNumber(const Value& v); -Value Opt0(); -void Opt(); -void CheckString(); -void CheckDateTime(); -void CheckValueMap(); -void OtherChecks(); -void CheckRawPickValue(); -void CheckRawValue(); -void CheckCreateRawValue(); - -template -void CheckNumber() -{ - RLOG("========================================================"); - RLOG("CheckNumber " << typeid(T).name()); - Value v = (T)123; - Value v2 = (T)0; - Value vn = (T)Null; - Value dv = 123.0; - ASSERT(IsNumber(v)); - ASSERT(!IsError(v)); - ASSERT(!IsVoid(v)); - ASSERT(!IsString(v)); - ASSERT(!IsDateTime(v)); - ASSERT(vn.Is() || GetHashValue(v) == GetHashValue(dv)); - ASSERT(v != v2); - ASSERT(v != vn); - ASSERT(IsNull(vn) || vn.Is()); - DumpNumber(v); - DumpNumber(vn); - Value v1 = v; - RDUMP(v1); - RDUMP(v2); - RDUMP(v1 != v2); - ASSERT(v1 != v2); - v2 = v1; - RDUMP(v1); - RDUMP(v2); - RDUMP(v1 == v2); - ASSERT(v1 == v2); - Opt(); -} - -template -void CheckType(const T& x, bool checkhash = false) -{ - RLOG("========================================================"); - RLOG("CheckType " << typeid(T).name() << " = " << x); - String fn; - Value vf; - Value tt = x; - bool isvoid = tt.IsVoid(); - if(!isvoid) { - fn = ConfigFile(AsString(tt.GetType()) + ":" + AsString(x)); - if(FileExists(fn)) { - LoadFromFile(vf, fn); - if(IsValueMap(tt)) { - RDUMP(ValueMap(vf)); - ASSERT(ValueMap(vf) == ValueMap(x)); - } - else { - RDUMP(vf.To()); - ASSERT(vf.To() == x); - } - } - } - Value v = x; - RDUMP(v); - ASSERT((T)v == x); - ASSERT(isvoid ? v.IsVoid() : v.Is()); - if(!isvoid) { - StoreToFile(v, fn); - RDUMP(GetValueTypeNo()); - ASSERT(v.GetType() == GetValueTypeNo()); - if(!tt.Is() && !tt.Is()) - ASSERT(v.To() == x); - ASSERT((T)(v) == x); - if(!tt.Is() && !tt.Is() && !tt.Is()) { - Value hh; - for(int i = 0; i < 2; i++) { - ASSERT(IsNull(hh.Get())); - ASSERT(IsNull((T)hh)); - hh = (int)Null; - } - } - } - if(!vf.IsVoid()) - ASSERT(vf == v); - String h = StoreAsString(v); - Value vv; - LoadFromString(vv, h); - RDUMP(vv); - ASSERT(vv == v); - T xx = vv; - RDUMP(xx); - ASSERT(vv == v); - - RDUMP(GetHashValue(v)); - RDUMP(GetHashValue(xx)); - ASSERT(!checkhash || GetHashValue(v) == GetHashValue(xx)); - - Value vn = (T)Null; - ASSERT(IsNull(vn) || vn.Is()); - - DLOG("----------"); - RDUMP(v); - String xml = StoreAsXML(v, "test"); - RDUMP(xml); - vv = Null; - LoadFromXML(vv, xml); - RDUMP(vv); - ASSERT(vv == v); - - String json = StoreAsJson(v); - RDUMP(json); - vv = Null; - LoadFromJson(vv, json); - RDUMP(vv); - ASSERT(vv == v); - - if(!tt.Is()) { - DLOG("----------"); - v = Null; - - RDUMP(v); - String data = StoreAsString(v); - vv = x; - LoadFromString(vv, data); - RDUMP(vv); - ASSERT(IsNull(vv)); - - RDUMP(v); - xml = StoreAsXML(v, "test"); - RDUMP(xml); - vv = x; - LoadFromXML(vv, xml); - RDUMP(vv); - ASSERT(IsNull(vv)); - - json = StoreAsJson(v); - RDUMP(json); - vv = x; - LoadFromJson(vv, json); - RDUMP(vv); - ASSERT(IsNull(vv)); - - DLOG("----------"); - T tx = Null; - ASSERT(IsNull(tx)); - data = StoreAsString(tx); - T ty = x; - LoadFromString(ty, data); - RDUMP(ty); - ASSERT(IsNull(ty)); - - RDUMP(v); - xml = StoreAsXML(tx, "test"); - RDUMP(xml); - ty = x; - LoadFromXML(ty, xml); - RDUMP(ty); - ASSERT(IsNull(ty)); - - json = StoreAsJson(tx); - RDUMP(json); - ty = x; - LoadFromJson(ty, json); - RDUMP(ty); - ASSERT(IsNull(vv)); - } -} - -#endif +#ifndef _SvoValue_SvoValue_h_ +#define _SvoValue_SvoValue_h_ + +#include + +using namespace Upp; + +void DumpNumber(const Value& v); +Value Opt0(); +void Opt(); +void CheckString(); +void CheckDateTime(); +void CheckValueMap(); +void OtherChecks(); +void CheckRawPickValue(); +void CheckRawValue(); +void CheckCreateRawValue(); + +template +void CheckNumber() +{ + RLOG("========================================================"); + RLOG("CheckNumber " << typeid(T).name()); + Value v = (T)123; + Value v2 = (T)0; + Value vn = (T)Null; + Value dv = 123.0; + ASSERT(IsNumber(v)); + ASSERT(!IsError(v)); + ASSERT(!IsVoid(v)); + ASSERT(!IsString(v)); + ASSERT(!IsDateTime(v)); + ASSERT(vn.Is() || GetHashValue(v) == GetHashValue(dv)); + ASSERT(v != v2); + ASSERT(v != vn); + ASSERT(IsNull(vn) || vn.Is()); + DumpNumber(v); + DumpNumber(vn); + Value v1 = v; + RDUMP(v1); + RDUMP(v2); + RDUMP(v1 != v2); + ASSERT(v1 != v2); + v2 = v1; + RDUMP(v1); + RDUMP(v2); + RDUMP(v1 == v2); + ASSERT(v1 == v2); + Opt(); +} + +template +void CheckType(const T& x, bool checkhash = false) +{ + RLOG("========================================================"); + RLOG("CheckType " << typeid(T).name() << " = " << x); + String fn; + Value vf; + Value tt = x; + bool isvoid = tt.IsVoid(); + if(!isvoid) { + fn = ConfigFile(AsString(tt.GetType()) + ":" + AsString(x)); + if(FileExists(fn)) { + LoadFromFile(vf, fn); + if(IsValueMap(tt)) { + RDUMP(ValueMap(vf)); + ASSERT(ValueMap(vf) == ValueMap(x)); + } + else { + RDUMP(vf.To()); + ASSERT(vf.To() == x); + } + } + } + Value v = x; + RDUMP(v); + ASSERT((T)v == x); + ASSERT(isvoid ? v.IsVoid() : v.Is()); + if(!isvoid) { + StoreToFile(v, fn); + RDUMP(GetValueTypeNo()); + ASSERT(v.GetType() == GetValueTypeNo()); + if(!tt.Is() && !tt.Is()) + ASSERT(v.To() == x); + ASSERT((T)(v) == x); + if(!tt.Is() && !tt.Is() && !tt.Is()) { + Value hh; + for(int i = 0; i < 2; i++) { + ASSERT(IsNull(hh.Get())); + ASSERT(IsNull((T)hh)); + hh = (int)Null; + } + } + } + if(!vf.IsVoid()) + ASSERT(vf == v); + String h = StoreAsString(v); + Value vv; + LoadFromString(vv, h); + RDUMP(vv); + ASSERT(vv == v); + T xx = vv; + RDUMP(xx); + ASSERT(vv == v); + + RDUMP(GetHashValue(v)); + RDUMP(GetHashValue(xx)); + ASSERT(!checkhash || GetHashValue(v) == GetHashValue(xx)); + + Value vn = (T)Null; + ASSERT(IsNull(vn) || vn.Is()); + + DLOG("----------"); + RDUMP(v); + String xml = StoreAsXML(v, "test"); + RDUMP(xml); + vv = Null; + LoadFromXML(vv, xml); + RDUMP(vv); + ASSERT(vv == v); + + String json = StoreAsJson(v); + RDUMP(json); + vv = Null; + LoadFromJson(vv, json); + RDUMP(vv); + ASSERT(vv == v); + + if(!tt.Is()) { + DLOG("----------"); + v = Null; + + RDUMP(v); + String data = StoreAsString(v); + vv = x; + LoadFromString(vv, data); + RDUMP(vv); + ASSERT(IsNull(vv)); + + RDUMP(v); + xml = StoreAsXML(v, "test"); + RDUMP(xml); + vv = x; + LoadFromXML(vv, xml); + RDUMP(vv); + ASSERT(IsNull(vv)); + + json = StoreAsJson(v); + RDUMP(json); + vv = x; + LoadFromJson(vv, json); + RDUMP(vv); + ASSERT(IsNull(vv)); + + DLOG("----------"); + T tx = Null; + ASSERT(IsNull(tx)); + data = StoreAsString(tx); + T ty = x; + LoadFromString(ty, data); + RDUMP(ty); + ASSERT(IsNull(ty)); + + RDUMP(v); + xml = StoreAsXML(tx, "test"); + RDUMP(xml); + ty = x; + LoadFromXML(ty, xml); + RDUMP(ty); + ASSERT(IsNull(ty)); + + json = StoreAsJson(tx); + RDUMP(json); + ty = x; + LoadFromJson(ty, json); + RDUMP(ty); + ASSERT(IsNull(vv)); + } +} + +#endif diff --git a/upptst/SvoValue/SvoValue.upp b/upptst/SvoValue/SvoValue.upp index 44cbe55b6..9b08c205f 100644 --- a/upptst/SvoValue/SvoValue.upp +++ b/upptst/SvoValue/SvoValue.upp @@ -3,7 +3,8 @@ description "Value unit testing\377"; optimize_speed; uses - Core; + Core, + CtrlLib; file SvoValue.h, @@ -13,5 +14,5 @@ file SvoValue.cpp optimize_speed; mainconfig - "" = "SSE2 SVO_VALUE"; + "" = "SSE2 SVO_VALUE GUI"; diff --git a/upptst/SvoValue/init b/upptst/SvoValue/init index 3957f4265..4307fa1b8 100644 --- a/upptst/SvoValue/init +++ b/upptst/SvoValue/init @@ -1,4 +1,5 @@ #ifndef _SvoValue_icpp_init_stub #define _SvoValue_icpp_init_stub #include "Core/init" +#include "CtrlLib/init" #endif