diff options
author | Robin Krahl <me@robin-krahl.de> | 2015-07-18 23:30:42 +0200 |
---|---|---|
committer | Robin Krahl <me@robin-krahl.de> | 2015-07-18 23:30:42 +0200 |
commit | 56b56f46f13a7838e113b529a75771a9fb07bdf7 (patch) | |
tree | f599b98c83a126845cc834ddbdce7d2b5e52213e /src/sqlitepp/sqlitepp_test.cc | |
parent | 6228b0a15c86d2105a29cbccb48db6bd83b82f71 (diff) | |
download | sqlitepp-56b56f46f13a7838e113b529a75771a9fb07bdf7.tar.gz sqlitepp-56b56f46f13a7838e113b529a75771a9fb07bdf7.tar.bz2 |
Refactoring and update.
Diffstat (limited to 'src/sqlitepp/sqlitepp_test.cc')
-rw-r--r-- | src/sqlitepp/sqlitepp_test.cc | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/sqlitepp/sqlitepp_test.cc b/src/sqlitepp/sqlitepp_test.cc new file mode 100644 index 0000000..b7ea5f6 --- /dev/null +++ b/src/sqlitepp/sqlitepp_test.cc @@ -0,0 +1,100 @@ +// Copyright (C) 2014--2015 Robin Krahl <robin.krahl@ireas.org> +// MIT license -- http://opensource.org/licenses/MIT + +#include <stdexcept> +#include <fstream> +#include <iostream> +#include "gtest/gtest.h" +#include "sqlitepp/sqlitepp.h" + +TEST(Database, openClose) { + sqlitepp::Database database; + EXPECT_FALSE(database.isOpen()); + database.open("/tmp/test.db"); + EXPECT_TRUE(database.isOpen()); + database.close(); + EXPECT_FALSE(database.isOpen()); + database.open("/tmp/test2.db"); + EXPECT_TRUE(database.isOpen()); + database.close(); + EXPECT_FALSE(database.isOpen()); + sqlitepp::Database database2("/tmp/test.db"); + EXPECT_TRUE(database2.isOpen()); + EXPECT_THROW(database2.open("/tmp/test2.db"), std::logic_error); + EXPECT_TRUE(database2.isOpen()); + database2.close(); + EXPECT_FALSE(database2.isOpen()); + + std::ifstream testStream("/tmp/test.db"); + EXPECT_TRUE(testStream.good()); + testStream.close(); + testStream.open("/tmp/test2.db"); + EXPECT_TRUE(testStream.good()); + testStream.close(); +} + +TEST(Database, copy) { + sqlitepp::Database database; + // MUST NOT COMPILE: + // sqlitepp::Database database2 = database; + database.close(); + sqlitepp::Database database3; + // MUST NOT COMPILE: + // database3 = database; + database3.close(); +} + +TEST(Database, prepare) { + sqlitepp::Database database("/tmp/test.db"); + std::shared_ptr<sqlitepp::Statement> statement = database.prepare( + "CREATE TABLE IF NOT EXISTS test (id, value);"); + EXPECT_TRUE(statement->isOpen()); + statement->close(); + EXPECT_FALSE(statement->isOpen()); + database.close(); +} + +TEST(Database, execute) { + sqlitepp::Database database("/tmp/test.db"); + database.execute("CREATE TABLE IF NOT EXISTS test (id, value);"); +} + +TEST(Database, insert) { + sqlitepp::Database database("/tmp/test.db"); + std::shared_ptr<sqlitepp::Statement> statement = database.prepare( + "INSERT INTO test (id, value) VALUES (:id, ?)"); + statement->bind(":id", 1); + statement->bind(2, "test value"); + statement->execute(); + statement->reset(); + statement->bind(":id", 2); + statement->bind(2, "other value"); + statement->execute(); +} + +TEST(Database, query) { + sqlitepp::Database database("/tmp/test.db"); + std::shared_ptr<sqlitepp::Statement> statement = database.prepare( + "SELECT id, value FROM test;"); + sqlitepp::ResultSet resultSet = statement->execute(); + EXPECT_TRUE(resultSet.canRead()); + EXPECT_EQ(2, resultSet.columnCount()); + int id = resultSet.readInt(0); + std::string value = resultSet.readString(1); + EXPECT_EQ(1, id); + EXPECT_EQ("test value", value); + EXPECT_TRUE(resultSet.next()); + EXPECT_TRUE(resultSet.canRead()); + id = resultSet.readInt(0); + value = resultSet.readString(1); + EXPECT_EQ(2, id); + EXPECT_EQ("other value", value); + EXPECT_FALSE(resultSet.next()); + EXPECT_FALSE(resultSet.canRead()); +} + +TEST(Database, cleanup) { + sqlitepp::Database database("/tmp/test.db"); + database.execute("DROP TABLE test;"); + database.close(); +} |