diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /akregator/src/mk4storage/metakit/tests/tstore3.cpp | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'akregator/src/mk4storage/metakit/tests/tstore3.cpp')
-rw-r--r-- | akregator/src/mk4storage/metakit/tests/tstore3.cpp | 366 |
1 files changed, 366 insertions, 0 deletions
diff --git a/akregator/src/mk4storage/metakit/tests/tstore3.cpp b/akregator/src/mk4storage/metakit/tests/tstore3.cpp new file mode 100644 index 000000000..21418151c --- /dev/null +++ b/akregator/src/mk4storage/metakit/tests/tstore3.cpp @@ -0,0 +1,366 @@ +// tstore3.cpp -- Regression test program, storage tests, part 3 +// $Id$ +// This is part of Metakit, the homepage is http://www.equi4.com/metakit/ + +#include "regress.h" + +void TestStores3() +{ + B(s20, View outlives storage, 0) W(s20a); + { + c4_IntProp p1 ("p1"); + c4_View v1; + + { + c4_Storage s1 ("s20a", 1); + v1 = s1.GetAs("a[p1:I,p2:S]"); + v1.Add(p1 [123]); + } + + // 19990916 - semantics changed, rows kept but no properties + //A(p1 (v1[0]) == 123); + A(v1.GetSize() == 1); + A(v1.NumProperties() == 0); + + } D(s20a); R(s20a); E; + + B(s21, Test demo scenario, 0) W(s21a); + { + c4_StringProp p1 ("p1"), p2 ("p2"); + { + c4_Storage storage ("s21a", 1); + storage.SetStructure("a[p1:S,p2:S]"); + c4_View v1; + c4_Row r1; + + p1 (r1) = "One"; + p2 (r1) = "Un"; + v1.Add(r1); + A(v1.GetSize() == 1); + + p1 (r1) = "Two"; + p2 (r1) = "Deux"; + v1.Add(r1); + A(v1.GetSize() == 2); + + // changed 2000-03-15: Store is gone + //v1 = storage.Store("a", v1); + v1 = storage.View("a") = v1; + + A(v1.GetSize() == 2); + A(p1 (v1[1]) == (c4_String) "Two"); + A(p2 (v1[1]) == (c4_String) "Deux"); + A(p1 (v1[0]) == (c4_String) "One"); + A(p2 (v1[0]) == (c4_String) "Un"); + + storage.Commit(); + A(v1.GetSize() == 2); + A(p1 (v1[1]) == (c4_String) "Two"); + A(p2 (v1[1]) == (c4_String) "Deux"); + A(p1 (v1[0]) == (c4_String) "One"); + A(p2 (v1[0]) == (c4_String) "Un"); + + c4_String s1 (p1 (v1[1])); + c4_String s2 (p2 (v1[1])); + A(s1 == "Two"); + A(s2 == "Deux"); + + storage.Commit(); + + v1.Add(p1 ["Three"] + p2 ["Trois"]); + + storage.Commit(); + A(v1.GetSize() == 3); + A(p2 (v1[2]) == (c4_String) "Trois"); + + v1 = storage.GetAs("a[p1:S,p2:S,p3:I]"); + A(v1.GetSize() == 3); + A(p2 (v1[2]) == (c4_String) "Trois"); + + c4_IntProp p3 ("p3"); + p3 (v1[1]) = 123; + + storage.Commit(); + A(v1.GetSize() == 3); + A(p2 (v1[2]) == (c4_String) "Trois"); + + c4_View v2 = storage.GetAs("b[p4:I]"); + + c4_IntProp p4 ("p4"); + v2.Add(p4 [234]); + + storage.Commit(); + A(v1.GetSize() == 3); + A(p2 (v1[2]) == (c4_String) "Trois"); + + c4_IntProp p4a ("p4"); + v1.InsertAt(2, p1 ["Four"] + p4a [345]); + + storage.Commit(); + A(v1.GetSize() == 4); + A(p1 (v1[0]) == (c4_String) "One"); + A(p1 (v1[1]) == (c4_String) "Two"); + A(p1 (v1[2]) == (c4_String) "Four"); + A(p1 (v1[3]) == (c4_String) "Three"); + A(p2 (v1[3]) == (c4_String) "Trois"); + A(v2.GetSize() == 1); + A(p4 (v2[0]) == 234); + } + { + c4_Storage storage ("s21a", 0); + c4_View v1 = storage.View("a"); + A(v1.GetSize() == 4); + A(p1 (v1[0]) == (c4_String) "One"); + A(p1 (v1[1]) == (c4_String) "Two"); + A(p1 (v1[2]) == (c4_String) "Four"); + A(p1 (v1[3]) == (c4_String) "Three"); + c4_View v2 = storage.View("b"); + c4_IntProp p4 ("p4"); + A(v2.GetSize() == 1); + A(p4 (v2[0]) == 234); + } + } D(s21a); R(s21a); E; + +#if !q4_TINY + B(s22, Double storage, 0) W(s22a); + { + c4_DoubleProp p1 ("p1"); + c4_Storage s1 ("s22a", 1); + s1.SetStructure("a[p1:D]"); + c4_View v1 = s1.View("a"); + v1.Add(p1 [1234.5678]); + v1.Add(p1 [2345.6789]); + v1.InsertAt(1, p1 [3456.7890]); + s1.Commit(); + } D(s22a); R(s22a); E; +#endif + + B(s23, Find absent record, 0) W(s23a); + { + c4_Storage s1 ("s23a", 1); + s1.SetStructure("v[h:S,p:I,a:I,b:I,c:I,d:I,e:I,f:I,g:I,x:I]"); + c4_View view = s1.View("v"); + + c4_StringProp H("h"); + c4_IntProp P("p"); + + c4_Row row; + H(row) = "someString"; + P(row) = 99; + + int x = view.Find(row); + A(x == -1); + + } D(s23a); R(s23a); E; + + B(s24, Bitwise storage, 0) W(s24a); + { + c4_IntProp p1 ("p1"); + + int m = 9; + + // insert values in front, but check fractional sizes at each step + for (int n = 0; n < m; ++n) + { + { + c4_Storage s1 ("s24a", 1); + s1.SetStructure("a1[p1:I],a2[p1:I],a3[p1:I],a4[p1:I]"); + s1.AutoCommit(); // new feature in 1.6 + + c4_View v1 = s1.View("a1"); + c4_View v2 = s1.View("a2"); + c4_View v3 = s1.View("a3"); + c4_View v4 = s1.View("a4"); + + c4_Row row; + int k = ~ n; + + p1 (row) = k & 0x01; + v1.InsertAt(0, row); + + p1 (row) = k & 0x03; + v2.InsertAt(0, row); + + p1 (row) = k & 0x0F; + v3.InsertAt(0, row); + + p1 (row) = k & 0x7F; + v4.InsertAt(0, row); + } + // the following checks that all tiny size combinations work + { + c4_Storage s1 ("s24a", 0); + + c4_View v1 = s1.View("a1"); + c4_View v2 = s1.View("a2"); + c4_View v3 = s1.View("a3"); + c4_View v4 = s1.View("a4"); + + A(v1.GetSize() == n + 1); + A(v2.GetSize() == n + 1); + A(v3.GetSize() == n + 1); + A(v4.GetSize() == n + 1); + } + } + + c4_Storage s1 ("s24a", 0); + + c4_View v1 = s1.View("a1"); + c4_View v2 = s1.View("a2"); + c4_View v3 = s1.View("a3"); + c4_View v4 = s1.View("a4"); + + A(v1.GetSize() == m); + A(v2.GetSize() == m); + A(v3.GetSize() == m); + A(v4.GetSize() == m); + + // now check that the inserted values are correct + for (int i = 0; i < m; ++i) + { + int j = m - i - 1; + int k = ~ i; + + A(p1 (v1[j]) == (k & 0x01)); + A(p1 (v2[j]) == (k & 0x03)); + A(p1 (v3[j]) == (k & 0x0F)); + A(p1 (v4[j]) == (k & 0x7F)); + } + + } D(s24a); R(s24a); E; + + B(s25, Bytes storage, 0) W(s25a); + { + c4_Bytes hi ("hi", 2); + c4_Bytes gday ("gday", 4); + c4_Bytes hello ("hello", 5); + + c4_BytesProp p1 ("p1"); + c4_Storage s1 ("s25a", 1); + s1.SetStructure("a[p1:B]"); + c4_View v1 = s1.View("a"); + + v1.Add(p1 [hi]); + A(p1 (v1[0]) == hi); + v1.Add(p1 [hello]); + A(p1 (v1[0]) == hi); + A(p1 (v1[1]) == hello); + v1.InsertAt(1, p1 [gday]); + A(p1 (v1[0]) == hi); + A(p1 (v1[1]) == gday); + A(p1 (v1[2]) == hello); + s1.Commit(); + A(p1 (v1[0]) == hi); + A(p1 (v1[1]) == gday); + A(p1 (v1[2]) == hello); + + } D(s25a); R(s25a); E; + + B(s26, Bitwise autosizing, 0) W(s26a); + { + c4_IntProp p1 ("p1"), p2 ("p2"), p3 ("p3"), p4 ("p4"); + c4_Storage s1 ("s26a", 1); + s1.SetStructure("a[p1:I,p2:I,p3:I,p4:I]"); + c4_View v1 = s1.View("a"); + + v1.Add(p1 [1] + p2 [3] + p3 [15] + p4 [127]); + A(p1 (v1[0]) == 1); + A(p2 (v1[0]) == 3); + A(p3 (v1[0]) == 15); + A(p4 (v1[0]) == 127); + + p1 (v1[0]) = 100000L; + p2 (v1[0]) = 100000L; + p3 (v1[0]) = 100000L; + p4 (v1[0]) = 100000L; + + // these failed in 1.61 + A(p1 (v1[0]) == 100000L); + A(p2 (v1[0]) == 100000L); + A(p3 (v1[0]) == 100000L); + A(p4 (v1[0]) == 100000L); + + s1.Commit(); + + } D(s26a); R(s26a); E; + + B(s27, Bytes restructuring, 0) W(s27a); + { + c4_Bytes test ("test", 4); + + c4_BytesProp p1 ("p1"); + c4_Storage s1 ("s27a", 1); + + c4_Row row; + p1 (row) = test; + + c4_View v1; + v1.Add(row); + + // changed 2000-03-15: Store is gone + //s1.Store("a", v1); // asserts in 1.61 + c4_View v2 = s1.GetAs("a[p1:B]"); + v2.InsertAt(0, v1); + + s1.Commit(); + + } D(s27a); R(s27a); E; + +#if !q4_TINY + B(s28, Doubles added later, 0) W(s28a); + { + c4_FloatProp p1 ("p1"); + c4_DoubleProp p2 ("p2"); + c4_ViewProp p3 ("p3"); + + c4_Storage s1 ("s28a", 1); + s1.SetStructure("a[p1:F,p2:D,p3[p1:F,p2:D]]"); + c4_View v1 = s1.View("a"); + + c4_Row r1; + + p1 (r1) = 123; + p2 (r1) = 123; + + c4_View v2; + v2.Add (p1 [234] + p2 [234]); + p3 (r1) = v2; + + v1.Add(r1); + double x1 = p1 (v1[0]); + A(x1 == p2 (v1[0])); + + v2 = p3 (v1[0]); + double x2 = p1 (v2[0]); + A(x2 == p2 (v2[0])); // fails in 1.6 + + s1.Commit(); + + } D(s28a); R(s28a); E; +#endif + + B(s29, Delete bytes property, 0) W(s29a); + { + { + c4_BytesProp p1 ("p1"); + + c4_Storage s1 ("s29a", 1); + s1.SetStructure("a[p1:B]"); + c4_View v1 = s1.View("a"); + + int data = 99; + v1.Add(p1 [c4_Bytes (&data, sizeof data)]); + + s1.Commit(); + } + { + c4_Storage s1 ("s29a", 1); + c4_View v1 = s1.View("a"); + + v1.RemoveAt(0); // asserts in 1.7 + + s1.Commit(); + } + + } D(s29a); R(s29a); E; +} |