diff options
| -rw-r--r-- | src/crepe/facade/DB.cpp | 13 | ||||
| -rw-r--r-- | src/crepe/facade/DB.h | 2 | ||||
| -rw-r--r-- | src/test/DBTest.cpp | 9 | ||||
| -rw-r--r-- | src/test/SaveManagerTest.cpp | 13 | 
4 files changed, 25 insertions, 12 deletions
diff --git a/src/crepe/facade/DB.cpp b/src/crepe/facade/DB.cpp index 95cf606..2232a21 100644 --- a/src/crepe/facade/DB.cpp +++ b/src/crepe/facade/DB.cpp @@ -21,12 +21,6 @@ DB::DB(const string & path) {  	const char * file = path.empty() ? NULL : path.c_str();  	ret = this->db->open(this->db.get(), NULL, file, NULL, libdb::DB_BTREE, DB_CREATE, 0);  	if (ret != 0) throw runtime_error(format("db->open: {}", libdb::db_strerror(ret))); - -	// create cursor -	libdb::DBC * cursor; -	ret = this->db->cursor(this->db.get(), NULL, &cursor, 0); -	if (ret != 0) throw runtime_error(format("db->cursor: {}", libdb::db_strerror(ret))); -	this->cursor = {cursor, [](libdb::DBC * cursor) { cursor->close(cursor); }};  }  libdb::DBT DB::to_thing(const string & thing) const noexcept { @@ -42,10 +36,10 @@ string DB::get(const string & key) {  	libdb::DBT db_val;  	memset(&db_val, 0, sizeof(libdb::DBT)); -	int ret = this->cursor->get(this->cursor.get(), &db_key, &db_val, DB_FIRST); +	int ret = this->db->get(this->db.get(), NULL, &db_key, &db_val, 0);  	if (ret == 0) return {static_cast<char *>(db_val.data), db_val.size}; -	string err = format("cursor->get: {}", libdb::db_strerror(ret)); +	string err = format("db->get: {}", libdb::db_strerror(ret));  	if (ret == DB_NOTFOUND) throw out_of_range(err);  	else throw runtime_error(err);  } @@ -54,7 +48,7 @@ void DB::set(const string & key, const string & value) {  	libdb::DBT db_key = this->to_thing(key);  	libdb::DBT db_val = this->to_thing(value);  	int ret = this->db->put(this->db.get(), NULL, &db_key, &db_val, 0); -	if (ret != 0) throw runtime_error(format("cursor->get: {}", libdb::db_strerror(ret))); +	if (ret != 0) throw runtime_error(format("db->get: {}", libdb::db_strerror(ret)));  }  bool DB::has(const std::string & key) { @@ -65,3 +59,4 @@ bool DB::has(const std::string & key) {  	}  	return true;  } + diff --git a/src/crepe/facade/DB.h b/src/crepe/facade/DB.h index 115c0f1..84cdf19 100644 --- a/src/crepe/facade/DB.h +++ b/src/crepe/facade/DB.h @@ -61,8 +61,6 @@ public:  private:  	//! RAII wrapper around \c DB struct  	std::unique_ptr<libdb::DB, std::function<void(libdb::DB *)>> db; -	//! RAII wrapper around \c DBC struct -	std::unique_ptr<libdb::DBC, std::function<void(libdb::DBC *)>> cursor;  private:  	/** diff --git a/src/test/DBTest.cpp b/src/test/DBTest.cpp index 99dedff..0c98e10 100644 --- a/src/test/DBTest.cpp +++ b/src/test/DBTest.cpp @@ -27,3 +27,12 @@ TEST_F(DBTest, Has) {  	db.set("foo", "bar");  	EXPECT_EQ(db.has("foo"), true);  } + +TEST_F(DBTest, MultipleKeys) { +	db.set("foo", "foo"); +	db.set("bar", "bar"); + +	EXPECT_EQ(db.get("foo"), "foo"); +	EXPECT_EQ(db.get("bar"), "bar"); +} + diff --git a/src/test/SaveManagerTest.cpp b/src/test/SaveManagerTest.cpp index 0209f6a..7609e69 100644 --- a/src/test/SaveManagerTest.cpp +++ b/src/test/SaveManagerTest.cpp @@ -36,5 +36,16 @@ TEST_F(SaveManagerTest, DefaultValue) {  	ASSERT_EQ(value.get(), 3);  	value.set(5); -	ASSERT_EQ(value.get(), 5); +	EXPECT_EQ(value.get(), 5); +} + +TEST_F(SaveManagerTest, MultipleKeys) { +	ValueBroker foo = mgr.get<int>("foo", 1); +	ValueBroker bar = mgr.get<int>("bar", 2); + +	EXPECT_EQ(foo.get(), 1); +	EXPECT_EQ(bar.get(), 2); + +	EXPECT_EQ(mgr.get<int>("foo"), 1); +	EXPECT_EQ(mgr.get<int>("bar"), 2);  }  |