OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace-cog commits / 65f0afa

Restore the BasicDeleteUTest, too
Interestingly, it fails. It seem to have actually caught a bug ...
65f0afaac73c3153f8ba57a54c408f8499dafadf
by Linas Vepstas <linasvepstas@gmail.com> · 2025-12-08T08:13:18.000Z

Changed files (1) +73 -0

tests/persist/cog-storage/BasicDeleteUTest.cxxtest +73 -0
……@@ -133,6 +133,14 @@ void BasicDeleteUTest::test_duplicates(void)
133133 // in it, this can cause trouble, depending on how the
134134 // incoming set is managed.
135135 store->remove_atom(as, li);
136 TS_ASSERT_EQUALS(as->get_size(), 4);
137 store->close();
138 as->extract_atom(li);
139 TS_ASSERT_EQUALS(as->get_size(), 3);
140 store->open();
141 store->load_atomspace();
142 Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"));
143 if (tvk) as->extract_atom(tvk);
136144 TS_ASSERT_EQUALS(as->get_size(), 3);
137145
138146 store->erase();
……@@ -186,6 +194,12 @@ void BasicDeleteUTest::test_recursive(void)
186194 for (const Handle& h : hset)
187195 printf("Post delete: %s\n", h->to_short_string().c_str());
188196
197 store->close();
198 as->extract_atom(ha, true);
199 store->open();
200 store->load_atomspace();
201 Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"));
202 if (tvk) as->extract_atom(tvk);
189203 TS_ASSERT_EQUALS(as->get_size(), 2);
190204
191205 // --------------------------------------
……@@ -196,9 +210,20 @@ void BasicDeleteUTest::test_recursive(void)
196210
197211 store->store_atom(lj);
198212 store->barrier();
213 store->close();
214 store->open();
215 store->load_atomspace();
216 tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*");
217 if (tvk) as->extract_atom(tvk);
199218 TS_ASSERT_EQUALS(as->get_size(), 5);
200219
201220 store->remove_atom(as, ha, true);
221 store->close();
222 as->extract_atom(ha, true);
223 store->open();
224 store->load_atomspace();
225 tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*");
226 if (tvk) as->extract_atom(tvk);
202227 TS_ASSERT_EQUALS(as->get_size(), 2);
203228
204229 // --------------------------------------
……@@ -209,9 +234,20 @@ void BasicDeleteUTest::test_recursive(void)
209234
210235 store->store_atom(lj);
211236 store->barrier();
237 store->close();
238 store->open();
239 store->load_atomspace();
240 tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*");
241 if (tvk) as->extract_atom(tvk);
212242 TS_ASSERT_EQUALS(as->get_size(), 5);
213243
214244 store->remove_atom(as, ha, true);
245 store->close();
246 as->extract_atom(ha, true);
247 store->open();
248 store->load_atomspace();
249 tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*");
250 if (tvk) as->extract_atom(tvk);
215251 TS_ASSERT_EQUALS(as->get_size(), 2);
216252
217253 // --------------------------------------
……@@ -223,9 +259,20 @@ void BasicDeleteUTest::test_recursive(void)
223259
224260 store->store_atom(lk);
225261 store->barrier();
262 store->close();
263 store->open();
264 store->load_atomspace();
265 tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*");
266 if (tvk) as->extract_atom(tvk);
226267 TS_ASSERT_EQUALS(as->get_size(), 6);
227268
228269 store->remove_atom(as, ha, true);
270 store->close();
271 as->extract_atom(ha, true);
272 store->open();
273 store->load_atomspace();
274 tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*");
275 if (tvk) as->extract_atom(tvk);
229276 TS_ASSERT_EQUALS(as->get_size(), 2);
230277
231278 // --------------------------------------
……@@ -277,8 +324,21 @@ void BasicDeleteUTest::test_key_deletion(void)
277324
278325 // Remove one of the keys
279326 store->remove_atom(as, kb);
327 as->extract_atom(kb);
280328 TS_ASSERT_EQUALS(as->get_size(), 4);
281329
330 // Verify the key was deleted by loading only PredicateNodes.
331 as = createAtomSpace();
332 hsn = as->add_node(COG_STORAGE_NODE, std::string(uri));
333 store = StorageNodeCast(hsn);
334 store->open();
335 store->fetch_all_atoms_of_type(PREDICATE_NODE);
336
337 // key-b should be gone, key-a and key-c should be present
338 TS_ASSERT(nullptr == as->get_node(PREDICATE_NODE, "key-b"));
339 TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-a"));
340 TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-c"));
341
282342 // FYI, we should call store->close() at this point, but we
283343 // don't, because ... most users forget to do this too.
284344 // So this is a softball check that everything worked, even
……@@ -359,6 +419,7 @@ void BasicDeleteUTest::test_key_corruption(void)
359419
360420 // Remove the value
361421 store->remove_atom(as, hx);
422 as->extract_atom(hx);
362423 TS_ASSERT_EQUALS(as->get_size(), 3);
363424
364425 // FYI, we should call store->close() at this point, but we
……@@ -388,6 +449,10 @@ void BasicDeleteUTest::test_key_corruption(void)
388449 as->get_root_set_by_type(hset, ATOM, true);
389450 for (const Handle& h: hset)
390451 printf("Atomspace contains h=%s\n", h->to_short_string().c_str());
452
453 Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"));
454 if (tvk) as->extract_atom(tvk);
455 // Size stays at 4 because (Concept "x") cannot be deleted.
391456 TS_ASSERT_EQUALS(as->get_size(), 4);
392457
393458 hb = as->add_node(CONCEPT_NODE, "b");
……@@ -405,7 +470,15 @@ void BasicDeleteUTest::test_key_corruption(void)
405470
406471 // Remove the value .. again
407472 store->remove_atom(as, hx);
473 as->extract_atom(hx);
408474 TS_ASSERT_EQUALS(as->get_size(), 5);
475 store->close();
476 store->open();
477 store->load_atomspace();
478 tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*");
479 if (tvk) as->extract_atom(tvk);
480 // Size stays at 6 because (Concept "x") cannot be deleted.
481 TS_ASSERT_EQUALS(as->get_size(), 6);
409482
410483 // We are done.
411484 store->close();