| … | … | @@ -14,7 +14,7 @@ ADD_CXXTEST(MonoValueSaveUTest) |
| 14 | 14 | ADD_CXXTEST(MonoPersistUTest) |
| 15 | 15 | ADD_CXXTEST(MonoFetchUTest) |
| 16 | 16 | TARGET_LINK_LIBRARIES(MonoFetchUTest execution) |
| 17 | # ADD_CXXTEST(MonoBasicDeleteUTest) | |
| 17 | ADD_CXXTEST(MonoBasicDeleteUTest) | |
| 18 | 18 | # ADD_CXXTEST(MonoDeleteUTest) |
| 19 | 19 | ADD_CXXTEST(MonoAlphaEquivUTest) |
| 20 | 20 | ADD_CXXTEST(MonoMultiPersistUTest) |
| … | … | @@ -123,6 +123,14 @@ void BasicDeleteUTest::test_duplicates(void) |
| 123 | 123 | // in it, this can cause trouble, depending on how the |
| 124 | 124 | // incoming set is managed. |
| 125 | 125 | store->remove_atom(as, li); |
| 126 | TS_ASSERT_EQUALS(as->get_size(), 4); | |
| 127 | store->close(); | |
| 128 | as->extract_atom(li); | |
| 129 | TS_ASSERT_EQUALS(as->get_size(), 3); | |
| 130 | store->open(); | |
| 131 | store->load_atomspace(); | |
| 132 | Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*")); | |
| 133 | if (tvk) as->extract_atom(tvk); | |
| 126 | 134 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 127 | 135 | |
| 128 | 136 | store->erase(); |
| … | … | @@ -177,6 +185,12 @@ void BasicDeleteUTest::test_recursive(void) |
| 177 | 185 | for (const Handle& h : hset) |
| 178 | 186 | printf("Post delete: %s\n", h->to_short_string().c_str()); |
| 179 | 187 | |
| 188 | store->close(); | |
| 189 | as->extract_atom(ha, true); | |
| 190 | store->open(); | |
| 191 | store->load_atomspace(); | |
| 192 | Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*")); | |
| 193 | if (tvk) as->extract_atom(tvk); | |
| 180 | 194 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 181 | 195 | |
| 182 | 196 | // -------------------------------------- |
| … | … | @@ -187,9 +201,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 187 | 201 | |
| 188 | 202 | store->store_atom(lj); |
| 189 | 203 | store->barrier(); |
| 204 | store->close(); | |
| 205 | store->open(); | |
| 206 | store->load_atomspace(); | |
| 207 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 208 | if (tvk) as->extract_atom(tvk); | |
| 190 | 209 | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 191 | 210 | |
| 192 | 211 | store->remove_atom(as, ha, true); |
| 212 | store->close(); | |
| 213 | as->extract_atom(ha, true); | |
| 214 | store->open(); | |
| 215 | store->load_atomspace(); | |
| 216 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 217 | if (tvk) as->extract_atom(tvk); | |
| 193 | 218 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 194 | 219 | |
| 195 | 220 | // -------------------------------------- |
| … | … | @@ -200,9 +225,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 200 | 225 | |
| 201 | 226 | store->store_atom(lj); |
| 202 | 227 | store->barrier(); |
| 228 | store->close(); | |
| 229 | store->open(); | |
| 230 | store->load_atomspace(); | |
| 231 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 232 | if (tvk) as->extract_atom(tvk); | |
| 203 | 233 | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 204 | 234 | |
| 205 | 235 | store->remove_atom(as, ha, true); |
| 236 | store->close(); | |
| 237 | as->extract_atom(ha, true); | |
| 238 | store->open(); | |
| 239 | store->load_atomspace(); | |
| 240 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 241 | if (tvk) as->extract_atom(tvk); | |
| 206 | 242 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 207 | 243 | |
| 208 | 244 | // -------------------------------------- |
| … | … | @@ -214,9 +250,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 214 | 250 | |
| 215 | 251 | store->store_atom(lk); |
| 216 | 252 | store->barrier(); |
| 253 | store->close(); | |
| 254 | store->open(); | |
| 255 | store->load_atomspace(); | |
| 256 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 257 | if (tvk) as->extract_atom(tvk); | |
| 217 | 258 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 218 | 259 | |
| 219 | 260 | store->remove_atom(as, ha, true); |
| 261 | store->close(); | |
| 262 | as->extract_atom(ha, true); | |
| 263 | store->open(); | |
| 264 | store->load_atomspace(); | |
| 265 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 266 | if (tvk) as->extract_atom(tvk); | |
| 220 | 267 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 221 | 268 | |
| 222 | 269 | // -------------------------------------- |
| … | … | @@ -269,8 +316,22 @@ void BasicDeleteUTest::test_key_deletion(void) |
| 269 | 316 | |
| 270 | 317 | // Remove one of the keys |
| 271 | 318 | store->remove_atom(as, kb); |
| 319 | as->extract_atom(kb); | |
| 272 | 320 | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 273 | 321 | |
| 322 | // Verify the key was deleted by loading only PredicateNodes. | |
| 323 | delete as; | |
| 324 | as = new AtomSpace(); | |
| 325 | hsn = as->add_node(MONO_STORAGE_NODE, std::string(uri)); | |
| 326 | store = StorageNodeCast(hsn); | |
| 327 | store->open(); | |
| 328 | store->fetch_all_atoms_of_type(PREDICATE_NODE); | |
| 329 | ||
| 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")); | |
| 332 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-a")); | |
| 333 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-c")); | |
| 334 | ||
| 274 | 335 | // FYI, we should call store->close() at this point, but we |
| 275 | 336 | // don't, because ... most users forget to do this too. |
| 276 | 337 | // So this is a softball check that everything worked, even |
| … | … | @@ -350,6 +411,7 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 350 | 411 | |
| 351 | 412 | // Remove the value |
| 352 | 413 | store->remove_atom(as, hx); |
| 414 | as->extract_atom(hx); | |
| 353 | 415 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 354 | 416 | |
| 355 | 417 | // FYI, we should call store->close() at this point, but we |
| … | … | @@ -382,7 +444,11 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 382 | 444 | as->get_root_set_by_type(hset, ATOM, true); |
| 383 | 445 | for (const Handle& h: hset) |
| 384 | 446 | printf("Atomspace contains h=%s\n", h->to_short_string().c_str()); |
| 385 | TS_ASSERT_EQUALS(as->get_size(), 5); | |
| 447 | ||
| 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); | |
| 386 | 452 | |
| 387 | 453 | hb = as->add_node(CONCEPT_NODE, "b"); |
| 388 | 454 | hx = as->add_node(CONCEPT_NODE, "x"); |
| … | … | @@ -399,6 +465,14 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 399 | 465 | |
| 400 | 466 | // Remove the value .. again |
| 401 | 467 | store->remove_atom(as, hx); |
| 468 | as->extract_atom(hx); | |
| 469 | TS_ASSERT_EQUALS(as->get_size(), 5); | |
| 470 | store->close(); | |
| 471 | store->open(); | |
| 472 | 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. | |
| 402 | 476 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 403 | 477 | |
| 404 | 478 | // We are done. |
| … | … | @@ -123,6 +123,14 @@ void BasicDeleteUTest::test_duplicates(void) |
| 123 | 123 | // in it, this can cause trouble, depending on how the |
| 124 | 124 | // incoming set is managed. |
| 125 | 125 | store->remove_atom(as, li); |
| 126 | TS_ASSERT_EQUALS(as->get_size(), 4); | |
| 127 | store->close(); | |
| 128 | as->extract_atom(li); | |
| 129 | TS_ASSERT_EQUALS(as->get_size(), 3); | |
| 130 | store->open(); | |
| 131 | store->load_atomspace(); | |
| 132 | Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*")); | |
| 133 | if (tvk) as->extract_atom(tvk); | |
| 126 | 134 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 127 | 135 | |
| 128 | 136 | store->erase(); |
| … | … | @@ -177,6 +185,12 @@ void BasicDeleteUTest::test_recursive(void) |
| 177 | 185 | for (const Handle& h : hset) |
| 178 | 186 | printf("Post delete: %s\n", h->to_short_string().c_str()); |
| 179 | 187 | |
| 188 | store->close(); | |
| 189 | as->extract_atom(ha, true); | |
| 190 | store->open(); | |
| 191 | store->load_atomspace(); | |
| 192 | Handle tvk(as->get_node(PREDICATE_NODE, "*-TruthValueKey-*")); | |
| 193 | if (tvk) as->extract_atom(tvk); | |
| 180 | 194 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 181 | 195 | |
| 182 | 196 | // -------------------------------------- |
| … | … | @@ -187,9 +201,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 187 | 201 | |
| 188 | 202 | store->store_atom(lj); |
| 189 | 203 | store->barrier(); |
| 204 | store->close(); | |
| 205 | store->open(); | |
| 206 | store->load_atomspace(); | |
| 207 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 208 | if (tvk) as->extract_atom(tvk); | |
| 190 | 209 | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 191 | 210 | |
| 192 | 211 | store->remove_atom(as, ha, true); |
| 212 | store->close(); | |
| 213 | as->extract_atom(ha, true); | |
| 214 | store->open(); | |
| 215 | store->load_atomspace(); | |
| 216 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 217 | if (tvk) as->extract_atom(tvk); | |
| 193 | 218 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 194 | 219 | |
| 195 | 220 | // -------------------------------------- |
| … | … | @@ -200,9 +225,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 200 | 225 | |
| 201 | 226 | store->store_atom(lj); |
| 202 | 227 | store->barrier(); |
| 228 | store->close(); | |
| 229 | store->open(); | |
| 230 | store->load_atomspace(); | |
| 231 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 232 | if (tvk) as->extract_atom(tvk); | |
| 203 | 233 | TS_ASSERT_EQUALS(as->get_size(), 5); |
| 204 | 234 | |
| 205 | 235 | store->remove_atom(as, ha, true); |
| 236 | store->close(); | |
| 237 | as->extract_atom(ha, true); | |
| 238 | store->open(); | |
| 239 | store->load_atomspace(); | |
| 240 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 241 | if (tvk) as->extract_atom(tvk); | |
| 206 | 242 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 207 | 243 | |
| 208 | 244 | // -------------------------------------- |
| … | … | @@ -214,9 +250,20 @@ void BasicDeleteUTest::test_recursive(void) |
| 214 | 250 | |
| 215 | 251 | store->store_atom(lk); |
| 216 | 252 | store->barrier(); |
| 253 | store->close(); | |
| 254 | store->open(); | |
| 255 | store->load_atomspace(); | |
| 256 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 257 | if (tvk) as->extract_atom(tvk); | |
| 217 | 258 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 218 | 259 | |
| 219 | 260 | store->remove_atom(as, ha, true); |
| 261 | store->close(); | |
| 262 | as->extract_atom(ha, true); | |
| 263 | store->open(); | |
| 264 | store->load_atomspace(); | |
| 265 | tvk = as->get_node(PREDICATE_NODE, "*-TruthValueKey-*"); | |
| 266 | if (tvk) as->extract_atom(tvk); | |
| 220 | 267 | TS_ASSERT_EQUALS(as->get_size(), 2); |
| 221 | 268 | |
| 222 | 269 | // -------------------------------------- |
| … | … | @@ -269,8 +316,22 @@ void BasicDeleteUTest::test_key_deletion(void) |
| 269 | 316 | |
| 270 | 317 | // Remove one of the keys |
| 271 | 318 | store->remove_atom(as, kb); |
| 319 | as->extract_atom(kb); | |
| 272 | 320 | TS_ASSERT_EQUALS(as->get_size(), 4); |
| 273 | 321 | |
| 322 | // Verify the key was deleted by loading only PredicateNodes. | |
| 323 | delete as; | |
| 324 | as = new AtomSpace(); | |
| 325 | hsn = as->add_node(ROCKS_STORAGE_NODE, std::string(uri)); | |
| 326 | store = StorageNodeCast(hsn); | |
| 327 | store->open(); | |
| 328 | store->fetch_all_atoms_of_type(PREDICATE_NODE); | |
| 329 | ||
| 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")); | |
| 332 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-a")); | |
| 333 | TS_ASSERT(nullptr != as->get_node(PREDICATE_NODE, "key-c")); | |
| 334 | ||
| 274 | 335 | // FYI, we should call store->close() at this point, but we |
| 275 | 336 | // don't, because ... most users forget to do this too. |
| 276 | 337 | // So this is a softball check that everything worked, even |
| … | … | @@ -350,6 +411,7 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 350 | 411 | |
| 351 | 412 | // Remove the value |
| 352 | 413 | store->remove_atom(as, hx); |
| 414 | as->extract_atom(hx); | |
| 353 | 415 | TS_ASSERT_EQUALS(as->get_size(), 3); |
| 354 | 416 | |
| 355 | 417 | // FYI, we should call store->close() at this point, but we |
| … | … | @@ -382,7 +444,11 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 382 | 444 | as->get_root_set_by_type(hset, ATOM, true); |
| 383 | 445 | for (const Handle& h: hset) |
| 384 | 446 | printf("Atomspace contains h=%s\n", h->to_short_string().c_str()); |
| 385 | TS_ASSERT_EQUALS(as->get_size(), 5); | |
| 447 | ||
| 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); | |
| 386 | 452 | |
| 387 | 453 | hb = as->add_node(CONCEPT_NODE, "b"); |
| 388 | 454 | hx = as->add_node(CONCEPT_NODE, "x"); |
| … | … | @@ -399,6 +465,14 @@ void BasicDeleteUTest::test_key_corruption(void) |
| 399 | 465 | |
| 400 | 466 | // Remove the value .. again |
| 401 | 467 | store->remove_atom(as, hx); |
| 468 | as->extract_atom(hx); | |
| 469 | TS_ASSERT_EQUALS(as->get_size(), 5); | |
| 470 | store->close(); | |
| 471 | store->open(); | |
| 472 | 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. | |
| 402 | 476 | TS_ASSERT_EQUALS(as->get_size(), 6); |
| 403 | 477 | |
| 404 | 478 | // We are done. |
| … | … | @@ -14,7 +14,7 @@ ADD_CXXTEST(ValueSaveUTest) |
| 14 | 14 | ADD_CXXTEST(PersistUTest) |
| 15 | 15 | ADD_CXXTEST(FetchUTest) |
| 16 | 16 | TARGET_LINK_LIBRARIES(FetchUTest execution) |
| 17 | # ADD_CXXTEST(BasicDeleteUTest) | |
| 17 | ADD_CXXTEST(BasicDeleteUTest) | |
| 18 | 18 | # ADD_CXXTEST(DeleteUTest) |
| 19 | 19 | ADD_CXXTEST(AlphaEquivUTest) |
| 20 | 20 | ADD_CXXTEST(MultiPersistUTest) |