bool BTreeDriver::TestDeleteCurrent() { Status status; BTreeFile *btf; bool res; btf = new BTreeFile(status, "BTreeTest6"); if (status != OK) { std::cerr << "ERROR: Couldn't create a BTreeFile" << std::endl; minibase_errors.show_errors(); std::cerr << "Hit [enter] to continue..." << std::endl; std::cin.get(); exit(1); } std::cout << "Starting Test 6..." << std::endl; std::cout << "BTreeIndex created successfully." << std::endl; std::cout << "Inserting entries..." << std::endl; InsertRange(btf, 1, 10); char low[MAX_KEY_LENGTH]; toString(3, low); BTreeFileScan* scan = btf->OpenScan(low, NULL); std::cout << "Deleting entries..." << std::endl; RecordID rid; char* keyPtr; scan->GetNext(rid, keyPtr); // 3 scan->GetNext(rid, keyPtr); // 4 scan->DeleteCurrent(); // 5 scan->GetNext(rid, keyPtr); // 6 scan->GetNext(rid, keyPtr); // 7 scan->GetNext(rid, keyPtr); // 8 scan->DeleteCurrent(); delete scan; res = TestAbsent(btf, 4); res = TestAbsent(btf, 8); std::cout << "Inserting duplicate entry..." << std::endl; InsertKey(btf, 1, 3); toString(1, low); scan = btf->OpenScan(low, NULL); std::cout << "Deleting entry..." << std::endl; scan->GetNext(rid, keyPtr); // 1 scan->DeleteCurrent(); // 1 delete scan; res = TestAbsent(btf, 1, 1); res = TestPresent(btf, 1, 3); if (btf->DestroyFile() != OK) { std::cerr << "Error destroying BTreeFile" << std::endl; res = false; } delete btf; return res; }