summaryrefslogtreecommitdiffstats
path: root/akregator/src/mk4storage/metakit/tests/tstore1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'akregator/src/mk4storage/metakit/tests/tstore1.cpp')
-rw-r--r--akregator/src/mk4storage/metakit/tests/tstore1.cpp180
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 00000000..c071648a
--- /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;
+}