diff --git a/upptst/SvoValue/SvoValue.cpp b/upptst/SvoValue/SvoValue.cpp index 79467e325..1afb96916 100644 --- a/upptst/SvoValue/SvoValue.cpp +++ b/upptst/SvoValue/SvoValue.cpp @@ -5,7 +5,7 @@ CONSOLE_APP_MAIN StdLogSetup(LOG_COUT|LOG_FILE); Date d = Null; - DDUMP(IsNull(d)); + RDUMP(IsNull(d)); Value ist = Opt0(); if(ist.Is()) @@ -42,6 +42,9 @@ CONSOLE_APP_MAIN 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); diff --git a/upptst/SvoValue/SvoValue.h b/upptst/SvoValue/SvoValue.h index b67f8534b..7af4e462f 100644 --- a/upptst/SvoValue/SvoValue.h +++ b/upptst/SvoValue/SvoValue.h @@ -1,113 +1,129 @@ -#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()); -} - -#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()); + + 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); +} + +#endif