diff options
Diffstat (limited to 'akregator/src/mk4storage/metakit/tests/tstore1.cpp')
-rw-r--r-- | akregator/src/mk4storage/metakit/tests/tstore1.cpp | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/akregator/src/mk4storage/metakit/tests/tstore1.cpp b/akregator/src/mk4storage/metakit/tests/tstore1.cpp new file mode 100644 index 000000000..c071648a6 --- /dev/null +++ b/akregator/src/mk4storage/metakit/tests/tstore1.cpp @@ -0,0 +1,180 @@ +// tstore1.cpp -- Regression test program, storage tests, part 1 +// $Id$ +// This is part of Metakit, the homepage is http://www.equi4.com/metakit/ + +#include "regress.h" + +void TestStores1() +{ + B(s00, Simple storage, 0) W(s00a); + { + c4_Storage s1 ("s00a", 1); + s1.SetStructure("a[p1:I]"); + s1.Commit(); + } D(s00a); R(s00a); E; + + B(s01, Integer storage, 0) W(s01a); + { + c4_IntProp p1 ("p1"); + c4_Storage s1 ("s01a", 1); + s1.SetStructure("a[p1:I]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 [123]); + v1.Add(p1 [456]); + v1.InsertAt(1, p1 [789]); + A(v1.GetSize() == 3); + s1.Commit(); + A(v1.GetSize() == 3); + } D(s01a); R(s01a); E; + +#if !q4_TINY + B(s02, Float storage, 0) W(s02a); + { + c4_FloatProp p1 ("p1"); + c4_Storage s1 ("s02a", 1); + s1.SetStructure("a[p1:F]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 [12.3]); + v1.Add(p1 [45.6]); + v1.InsertAt(1, p1 [78.9]); + s1.Commit(); + } D(s02a); R(s02a); E; +#endif + + B(s03, String storage, 0) W(s03a); + { + c4_StringProp p1 ("p1"); + c4_Storage s1 ("s03a", 1); + s1.SetStructure("a[p1:S]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 ["one"]); + v1.Add(p1 ["two"]); + v1.InsertAt(1, p1 ["three"]); + s1.Commit(); + } D(s03a); R(s03a); E; + + B(s04, View storage, 0) W(s04a); + { + c4_StringProp p1 ("p1"); + c4_ViewProp p2 ("p2"); + c4_IntProp p3 ("p3"); + c4_Storage s1 ("s04a", 1); + s1.SetStructure("a[p1:S,p2[p3:I]]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 ["one"]); + v1.Add(p1 ["two"]); + c4_View v2 = p2 (v1[0]); + v2.Add(p3 [1]); + v2 = p2 (v1[1]); + v2.Add(p3 [11]); + v2.Add(p3 [22]); + v1.InsertAt(1, p1 ["three"]); + v2 = p2 (v1[1]); + v2.Add(p3 [111]); + v2.Add(p3 [222]); + v2.Add(p3 [333]); + s1.Commit(); + } D(s04a); R(s04a); E; + + B(s05, Store and reload, 0) W(s05a); + { + c4_IntProp p1 ("p1"); + { + c4_Storage s1 ("s05a", 1); + s1.SetStructure("a[p1:I]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 [123]); + s1.Commit(); + } + { + c4_Storage s1 ("s05a", 0); + c4_View v1 = s1.View("a"); + A(v1.GetSize() == 1); + A(p1 (v1[0]) == 123); + } + } D(s05a); R(s05a); E; + + B(s06, Commit twice, 0) W(s06a); + { + c4_IntProp p1 ("p1"); + { + c4_Storage s1 ("s06a", 1); + s1.SetStructure("a[p1:I]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 [123]); + s1.Commit(); + v1.Add(p1 [234]); + s1.Commit(); + } + { + c4_Storage s1 ("s06a", 0); + c4_View v1 = s1.View("a"); + A(v1.GetSize() == 2); + A(p1 (v1[0]) == 123); + A(p1 (v1[1]) == 234); + } + } D(s06a); R(s06a); E; + + B(s07, Commit modified, 0) W(s07a); + { + c4_IntProp p1 ("p1"); + { + c4_Storage s1 ("s07a", 1); + s1.SetStructure("a[p1:I]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 [123]); + s1.Commit(); + p1 (v1[0]) = 234; + s1.Commit(); + } + { + c4_Storage s1 ("s07a", 0); + c4_View v1 = s1.View("a"); + A(v1.GetSize() == 1); + A(p1 (v1[0]) == 234); + } + } D(s07a); R(s07a); E; + + B(s08, View after storage, 0) W(s08a); + { + c4_IntProp p1 ("p1"); + { + c4_Storage s1 ("s08a", 1); + s1.SetStructure("a[p1:I]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 [123]); + s1.Commit(); + } + c4_View v1; + { + c4_Storage s1 ("s08a", 0); + v1 = s1.View("a"); + } + // 19990916 - semantics changed, view now 1 row, but 0 props + A(v1.GetSize() == 1); + A(v1.NumProperties() == 0); + v1.InsertAt(0, p1 [234]); + A(v1.GetSize() == 2); + A(p1 (v1[0]) == 234); + A(p1 (v1[1]) == 0); // the original value is gone + } D(s08a); R(s08a); E; + + B(s09, Copy storage, 0) W(s09a); W(s09b); + { + c4_IntProp p1 ("p1"); + { + c4_Storage s1 ("s09a", 1); + s1.SetStructure("a[p1:I]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 [123]); + s1.Commit(); + } + { + c4_Storage s1 ("s09a", 0); + c4_Storage s2 ("s09b", 1); + s2.SetStructure("a[p1:I]"); + s2.View("a") = s1.View("a"); + s2.Commit(); + } + } D(s09a); D(s09b); R(s09a); R(s09b); E; +} |