| … | … | @@ -129,9 +129,8 @@ void BasicDeleteUTest::test_duplicates(void) |
| 129 | 129 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 130 | 130 | store->open(); |
| 131 | 131 | store->load_atomspace(); |
| 132 | | Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*")); |
| 133 | | if (tvk) as->extract_atom(tvk); |
| 134 | | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 132 | // +1 for *-IsKeyFlag-* |
| 133 | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 135 | 134 | |
| 136 | 135 | store->erase(); |
| 137 | 136 | store->close(); |
| … | … | @@ -189,9 +188,8 @@ void BasicDeleteUTest::test_recursive(void) |
| 189 | 188 | as->extract_atom(ha, true); |
| 190 | 189 | store->open(); |
| 191 | 190 | store->load_atomspace(); |
| 192 | | Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*")); |
| 193 | | if (tvk) as->extract_atom(tvk); |
| 194 | | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 191 | // +1 for *-IsKeyFlag-* |
| 192 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 195 | 193 | |
| 196 | 194 | // -------------------------------------- |
| 197 | 195 | // Do it again, but with a different order. |
| … | … | @@ -204,18 +202,16 @@ void BasicDeleteUTest::test_recursive(void) |
| 204 | 202 | store->close(); |
| 205 | 203 | store->open(); |
| 206 | 204 | store->load_atomspace(); |
| 207 | | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); |
| 208 | | if (tvk) as->extract_atom(tvk); |
| 209 | | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 205 | // +1 for *-IsKeyFlag-* |
| 206 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 210 | 207 | |
| 211 | 208 | store->remove_atom(as, ha, true); |
| 212 | 209 | store->close(); |
| 213 | 210 | as->extract_atom(ha, true); |
| 214 | 211 | store->open(); |
| 215 | 212 | store->load_atomspace(); |
| 216 | | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); |
| 217 | | if (tvk) as->extract_atom(tvk); |
| 218 | | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 213 | // +1 for *-IsKeyFlag-* |
| 214 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 219 | 215 | |
| 220 | 216 | // -------------------------------------- |
| 221 | 217 | // Do it again, but with a complex order. |
| … | … | @@ -228,18 +224,16 @@ void BasicDeleteUTest::test_recursive(void) |
| 228 | 224 | store->close(); |
| 229 | 225 | store->open(); |
| 230 | 226 | store->load_atomspace(); |
| 231 | | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); |
| 232 | | if (tvk) as->extract_atom(tvk); |
| 233 | | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 227 | // +1 for *-IsKeyFlag-* |
| 228 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 234 | 229 | |
| 235 | 230 | store->remove_atom(as, ha, true); |
| 236 | 231 | store->close(); |
| 237 | 232 | as->extract_atom(ha, true); |
| 238 | 233 | store->open(); |
| 239 | 234 | store->load_atomspace(); |
| 240 | | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); |
| 241 | | if (tvk) as->extract_atom(tvk); |
| 242 | | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 235 | // +1 for *-IsKeyFlag-* |
| 236 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 243 | 237 | |
| 244 | 238 | // -------------------------------------- |
| 245 | 239 | // Do it again, but more deeply. |
| … | … | @@ -253,18 +247,16 @@ void BasicDeleteUTest::test_recursive(void) |
| 253 | 247 | store->close(); |
| 254 | 248 | store->open(); |
| 255 | 249 | store->load_atomspace(); |
| 256 | | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); |
| 257 | | if (tvk) as->extract_atom(tvk); |
| 258 | | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 250 | // +1 for *-IsKeyFlag-* |
| 251 | TS_ASSERT_EQUALS(as->get_size(), 7); |
| 259 | 252 | |
| 260 | 253 | store->remove_atom(as, ha, true); |
| 261 | 254 | store->close(); |
| 262 | 255 | as->extract_atom(ha, true); |
| 263 | 256 | store->open(); |
| 264 | 257 | store->load_atomspace(); |
| 265 | | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); |
| 266 | | if (tvk) as->extract_atom(tvk); |
| 267 | | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 258 | // +1 for *-IsKeyFlag-* |
| 259 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 268 | 260 | |
| 269 | 261 | // -------------------------------------- |
| 270 | 262 | store->erase(); |
| … | … | @@ -305,8 +297,8 @@ void BasicDeleteUTest::test_key_deletion(void) |
| 305 | 297 | store->store_atom(ha); |
| 306 | 298 | store->barrier(); |
| 307 | 299 | |
| 308 | | // Verify the atomspace size |
| 309 | | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 300 | // Verify the atomspace size (+1 for *-IsKeyFlag-*) |
| 301 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 310 | 302 | |
| 311 | 303 | // Verify that there are three keys |
| 312 | 304 | HandleSet hs = ha->getKeys(); |
| … | … | @@ -314,12 +306,13 @@ void BasicDeleteUTest::test_key_deletion(void) |
| 314 | 306 | printf("key=%s\n", k->get_name().c_str()); |
| 315 | 307 | TS_ASSERT_EQUALS(hs.size(), 3); |
| 316 | 308 | |
| 317 | | // Remove one of the keys |
| 309 | // Attempt to remove one of the keys. Should fail. |
| 318 | 310 | store->remove_atom(as, kb); |
| 319 | 311 | as->extract_atom(kb); |
| 320 | | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 312 | // +1 for *-IsKeyFlag-* |
| 313 | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 321 | 314 | |
| 322 | | // Verify the key was deleted by loading only PredicateNodes. |
| 315 | // Verify the key was NOT deleted by loading only PredicateNodes. |
| 323 | 316 | delete as; |
| 324 | 317 | as = new AtomSpace(); |
| 325 | 318 | hsn = as->add_node(ROCKS_STORAGE_NODE, std::string(uri)); |
| … | … | @@ -327,8 +320,8 @@ void BasicDeleteUTest::test_key_deletion(void) |
| 327 | 320 | store->open(); |
| 328 | 321 | store->fetch_all_atoms_of_type(PREDICATE_NODE); |
| 329 | 322 | |
| 330 | | // key-b should be gone, key-a and key-c should be present |
| 331 | | TS_ASSERT(nullptr == as->get_node(PREDICATE_NODE, "key-b")); |
| 323 | // All three keys need to still be here. |
| 324 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-b")); |
| 332 | 325 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-a")); |
| 333 | 326 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-c")); |
| 334 | 327 | |
| … | … | @@ -342,7 +335,7 @@ void BasicDeleteUTest::test_key_deletion(void) |
| 342 | 335 | |
| 343 | 336 | // ------------------------------------------------------- |
| 344 | 337 | // Start again, with a fresh connection. |
| 345 | | // Verify that the delete key is really deleted. |
| 338 | // Verify that in-use keys cannot be deleted. |
| 346 | 339 | |
| 347 | 340 | as = new AtomSpace(); |
| 348 | 341 | |
| … | … | @@ -352,22 +345,22 @@ void BasicDeleteUTest::test_key_deletion(void) |
| 352 | 345 | store->open(); |
| 353 | 346 | TS_ASSERT(store->connected()) |
| 354 | 347 | |
| 355 | | // We expect 5 keys, including the truth-value key. |
| 348 | // We expect 6 atoms (+1 for *-IsKeyFlag-*) |
| 356 | 349 | printf("Loading the atomspace ...\n"); |
| 357 | 350 | store->load_atomspace(); |
| 358 | | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 351 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 359 | 352 | |
| 360 | | // Verify that there are only two keys |
| 353 | // Verify that there are only three keys |
| 361 | 354 | ha = as->add_node(CONCEPT_NODE, "a"); |
| 362 | 355 | hs = ha->getKeys(); |
| 363 | 356 | for (const Handle& k : hs) |
| 364 | 357 | printf("key=%s\n", k->get_name().c_str()); |
| 365 | | TS_ASSERT_EQUALS(hs.size(), 2); |
| 358 | TS_ASSERT_EQUALS(hs.size(), 3); |
| 366 | 359 | |
| 367 | | // Verify that none of the keys are key-b |
| 368 | | kb = as->add_node(PREDICATE_NODE, "key-b"); |
| 369 | | for (const Handle& k : hs) |
| 370 | | TS_ASSERT(*k != *kb); |
| 360 | // All three keys need to still be here. |
| 361 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-b")); |
| 362 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-a")); |
| 363 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-c")); |
| 371 | 364 | |
| 372 | 365 | store->erase(); |
| 373 | 366 | store->close(); |
| … | … | @@ -406,13 +399,14 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 406 | 399 | store->store_atom(hb); |
| 407 | 400 | store->barrier(); |
| 408 | 401 | |
| 409 | | // Verify the atomspace size |
| 410 | | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 402 | // Verify the atomspace size (+1 for *-IsKeyFlag-*) |
| 403 | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 411 | 404 | |
| 412 | 405 | // Remove the value |
| 413 | 406 | store->remove_atom(as, hx); |
| 414 | 407 | as->extract_atom(hx); |
| 415 | | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 408 | // +1 for *-IsKeyFlag-* |
| 409 | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 416 | 410 | |
| 417 | 411 | // FYI, we should call store->close() at this point, but we |
| 418 | 412 | // don't, because ... most users forget to do this too. |
| … | … | @@ -434,7 +428,7 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 434 | 428 | store->open(); |
| 435 | 429 | TS_ASSERT(store->connected()) |
| 436 | 430 | |
| 437 | | // We expect 5 keys, including the truth-value key. |
| 431 | // We expect 5 atoms: b, x, key-x, *-IsKeyFlag-*, StorageNode |
| 438 | 432 | // That's because the (Concept "x") sitting in the Value |
| 439 | 433 | // was never actually deleted; thus it is restored. |
| 440 | 434 | printf("Loading the atomspace ...\n"); |
| … | … | @@ -445,10 +439,9 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 445 | 439 | for (const Handle& h: hset) |
| 446 | 440 | printf("Atomspace contains h=%s\n", h->to_short_string().c_str()); |
| 447 | 441 | |
| 448 | | Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*")); |
| 449 | | if (tvk) as->extract_atom(tvk); |
| 450 | | // Size stays at 4 because (Concept "x") cannot be deleted. |
| 451 | | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 442 | // Size is 6 because (Concept "x") cannot be deleted. |
| 443 | // +1 for *-IsKeyFlag-* |
| 444 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 452 | 445 | |
| 453 | 446 | hb = as->add_node(CONCEPT_NODE, "b"); |
| 454 | 447 | hx = as->add_node(CONCEPT_NODE, "x"); |
| … | … | @@ -461,19 +454,20 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 461 | 454 | store->store_atom(hb); |
| 462 | 455 | store->barrier(); |
| 463 | 456 | |
| 464 | | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 457 | // +1 for *-IsKeyFlag-* |
| 458 | TS_ASSERT_EQUALS(as->get_size(), 8); |
| 465 | 459 | |
| 466 | 460 | // Remove the value .. again |
| 467 | 461 | store->remove_atom(as, hx); |
| 468 | 462 | as->extract_atom(hx); |
| 469 | | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 463 | // +1 for *-IsKeyFlag-* |
| 464 | TS_ASSERT_EQUALS(as->get_size(), 7); |
| 470 | 465 | store->close(); |
| 471 | 466 | store->open(); |
| 472 | 467 | store->load_atomspace(); |
| 473 | | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); |
| 474 | | if (tvk) as->extract_atom(tvk); |
| 475 | | // Size stays at 6 because (Concept "x") cannot be deleted. |
| 476 | | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 468 | // Size is 8 because (Concept "x") cannot be deleted. |
| 469 | // +1 for *-IsKeyFlag-* |
| 470 | TS_ASSERT_EQUALS(as->get_size(), 8); |
| 477 | 471 | |
| 478 | 472 | // We are done. |
| 479 | 473 | store->close(); |
| … | … | @@ -491,10 +485,10 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 491 | 485 | store->open(); |
| 492 | 486 | TS_ASSERT(store->connected()) |
| 493 | 487 | |
| 494 | | // We expect 7 keys, including the truth-value key. |
| 488 | // We expect 8 atoms (+1 for *-IsKeyFlag-*) |
| 495 | 489 | printf("Loading the atomspace ...\n"); |
| 496 | 490 | store->load_atomspace(); |
| 497 | | TS_ASSERT_EQUALS(as->get_size(), 7); |
| 491 | TS_ASSERT_EQUALS(as->get_size(), 8); |
| 498 | 492 | |
| 499 | 493 | // Verify that there are two keys |
| 500 | 494 | hb = as->add_node(CONCEPT_NODE, "b"); |