| … | … | @@ -133,6 +133,14 @@ void BasicDeleteUTest::test_duplicates(void) |
| 133 | 133 | // in it, this can cause trouble, depending on how the |
| 134 | 134 | // incoming set is managed. |
| 135 | 135 | 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); |
| 136 | 144 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 137 | 145 | |
| 138 | 146 | store->erase(); |
| … | … | @@ -186,6 +194,12 @@ void BasicDeleteUTest::test_recursive(void) |
| 186 | 194 | for (const Handle& h : hset) |
| 187 | 195 | printf("Post delete: %s\n", h->to_short_string().c_str()); |
| 188 | 196 | |
| 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); |
| 189 | 203 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 190 | 204 | |
| 191 | 205 | // -------------------------------------- |
| … | … | @@ -196,9 +210,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 196 | 210 | |
| 197 | 211 | store->store_atom(lj); |
| 198 | 212 | 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); |
| 199 | 218 | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 200 | 219 | |
| 201 | 220 | 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); |
| 202 | 227 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 203 | 228 | |
| 204 | 229 | // -------------------------------------- |
| … | … | @@ -209,9 +234,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 209 | 234 | |
| 210 | 235 | store->store_atom(lj); |
| 211 | 236 | 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); |
| 212 | 242 | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 213 | 243 | |
| 214 | 244 | 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); |
| 215 | 251 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 216 | 252 | |
| 217 | 253 | // -------------------------------------- |
| … | … | @@ -223,9 +259,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 223 | 259 | |
| 224 | 260 | store->store_atom(lk); |
| 225 | 261 | 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); |
| 226 | 267 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 227 | 268 | |
| 228 | 269 | 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); |
| 229 | 276 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 230 | 277 | |
| 231 | 278 | // -------------------------------------- |
| … | … | @@ -277,8 +324,21 @@ void BasicDeleteUTest::test_key_deletion(void) |
| 277 | 324 | |
| 278 | 325 | // Remove one of the keys |
| 279 | 326 | store->remove_atom(as, kb); |
| 327 | as->extract_atom(kb); |
| 280 | 328 | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 281 | 329 | |
| 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 | |
| 282 | 342 | // FYI, we should call store->close() at this point, but we |
| 283 | 343 | // don't, because ... most users forget to do this too. |
| 284 | 344 | // So this is a softball check that everything worked, even |
| … | … | @@ -359,6 +419,7 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 359 | 419 | |
| 360 | 420 | // Remove the value |
| 361 | 421 | store->remove_atom(as, hx); |
| 422 | as->extract_atom(hx); |
| 362 | 423 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 363 | 424 | |
| 364 | 425 | // FYI, we should call store->close() at this point, but we |
| … | … | @@ -388,6 +449,10 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 388 | 449 | as->get_root_set_by_type(hset, ATOM, true); |
| 389 | 450 | for (const Handle& h: hset) |
| 390 | 451 | 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. |
| 391 | 456 | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 392 | 457 | |
| 393 | 458 | hb = as->add_node(CONCEPT_NODE, "b"); |
| … | … | @@ -405,7 +470,15 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 405 | 470 | |
| 406 | 471 | // Remove the value .. again |
| 407 | 472 | store->remove_atom(as, hx); |
| 473 | as->extract_atom(hx); |
| 408 | 474 | 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); |
| 409 | 482 | |
| 410 | 483 | // We are done. |
| 411 | 484 | store->close(); |