5 cout << "testing keyset new" << endl;
10 ckdb::keyNew ("user/key2", KEY_END),
14 *Key ("user/key3/1", KEY_END),
15 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
16 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
18 // ks3.toStream(stdout, 0);
20 Key k1("user/key4/1", KEY_END);
21 Key k2("user/key4/2", KEY_REMOVE, KEY_END);
22 Key k3("user/key4/3", KEY_VALUE, "value", KEY_END);
24 *k1, // k1 will lose its key and pass it to keyset
28 // ks4.toStream(stdout, 0);
30 Key k4("user/key5/1", KEY_END);
31 Key k5("user/key5/2", KEY_REMOVE, KEY_END);
32 Key k6("user/key5/3", KEY_VALUE, "value", KEY_END);
38 // ks5.toStream(stdout, 0);
39 // k4, k5, k6 can still be used
44 cout << "testing ksdup" << endl;
47 *Key ("user/key3/1", KEY_END),
48 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
49 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
52 KeySet ks4 (ks3.dup());
53 succeed_if (ks3.size() == 3, "size not correct");
54 succeed_if (ks4.size() == 3, "size not correct");
56 // ks3.toStream(stdout, 0);
57 // ks4.toStream(stdout, 0);
62 cout << "testing ksdup" << endl;
65 *Key ("user/key3/1", KEY_END),
66 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
67 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
71 succeed_if (ks3.size() == 3, "size not correct");
72 succeed_if (ks4.size() == 3, "size not correct");
76 succeed_if (ks4.size() == 3, "size not correct");
77 succeed_if (ks5.size() == 3, "size not correct");
80 succeed_if (ks5.size() == 0, "size not correct");
84 // ks3.toStream(stdout, 0);
85 // ks4.toStream(stdout, 0);
90 cout << "testing iterate" << endl;
93 *Key ("user/key3/1", KEY_END),
94 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
95 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
101 succeed_if (k1.getName() == "user/key3/1", "wrong keyname");
102 succeed_if (k1 == ks3.head(), "first key not head key");
104 succeed_if (k2.getName() == "user/key3/2", "wrong keyname");
105 succeed_if (k2.needRemove(), "remove not set");
107 succeed_if (k3.getName() == "user/key3/3", "wrong keyname");
108 succeed_if (k3.getString() == "value", "wrong value");
109 succeed_if (k3 == ks3.tail(), "last key not tail key");
112 succeed_if (false, "Out of Range not thrown");
113 } catch (KeySetOutOfRange) { }
116 for (size_t i=0; i<ks3.size(); i++)
119 char str[] = "user/key3/X";
122 succeed_if (k.getName() == str, "wrong keyname");
128 cout << "testing cursor" << endl;
131 *Key ("user/key3/1", KEY_END),
132 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
133 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
138 for (size_t i=0; i<ks3.size(); i++)
141 if (i==0) cursorTest = ks3.getCursor();
144 ks3.setCursor (cursorTest);
145 Key k1 = ks3.current();
146 succeed_if (k1.getName() == "user/key3/1", "wrong keyname");
147 succeed_if (k1 == ks3.head(), "first key not head key");
152 cout << "testing iterate" << endl;
155 *Key ("user/key3/1", KEY_END),
156 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
157 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
163 succeed_if (k3.getName() == "user/key3/3", "wrong keyname");
164 succeed_if (k3.getString() == "value", "wrong value");
166 succeed_if (k2.getName() == "user/key3/2", "wrong keyname");
167 succeed_if (k2.needRemove(), "remove not set");
169 succeed_if (k1.getName() == "user/key3/1", "wrong keyname");
172 succeed_if (false, "Out of Range not catched");
173 } catch (KeySetOutOfRange) { }
176 *Key ("user/key3/1", KEY_END),
177 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
178 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
182 for (int i=ks4.size()-1; i>0; i--)
185 char str[] = "user/key3/X";
188 succeed_if (k.getName() == str, str);
195 cout << "testing lookup" << endl;
198 *Key ("user/key3/1", KEY_END),
199 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
200 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
203 Key k1 = ks3.lookup("user/key3/1");
204 succeed_if (k1.getName() == "user/key3/1", "wrong keyname");
206 Key k3 = ks3.lookup("user/key3/3");
207 succeed_if (k3.getName() == "user/key3/3", "wrong keyname");
208 succeed_if (k3.getString() == "value", "wrong value");
211 ks3.lookup("user/key3/2");
212 succeed_if (false, "Not Found not thrown for removed key");
213 } catch (KeySetNotFound) { }
216 ks3.lookup("user/key3/4");
217 succeed_if (false, "Not Found not thrown for not existing key");
218 } catch (KeySetNotFound) { }
223 cout << "testing keyset append" << endl;
228 ckdb::keyNew ("user/key2", KEY_END),
233 *Key ("user/key3/1", KEY_END),
234 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
235 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
241 Key k1("user/key4/1", KEY_END);
242 Key k2("user/key4/2", KEY_REMOVE, KEY_END);
243 Key k3("user/key4/3", KEY_VALUE, "value", KEY_END);
244 ks1.append (k1); ks1.append (k2); ks1.append (k3);
245 ks2.append (k1); ks2.append (k2); ks2.append (k3);
246 ks3.append (k1); ks3.append (k2); ks3.append (k3);
249 *Key ("user/key3/1", KEY_END),
250 *Key ("user/key3/2", KEY_REMOVE, KEY_END),
251 *Key ("user/key3/3", KEY_VALUE, "value", KEY_END),
262 cout << "KEYSET CLASS TESTS" << endl;
263 cout << "==================" << endl << endl;
275 cout << "test_key RESULTS: " << nbTest << " test(s) done. " << nbError << " error(s)." << endl;