Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
postgresql_backend_test.cpp File Reference
#include <gtest/gtest.h>
#include <memory>
#include <string>
#include "database/backends/postgresql_backend.h"
#include "database/core/database_backend.h"
Include dependency graph for postgresql_backend_test.cpp:

Go to the source code of this file.

Classes

class  PostgreSQLBackendTest
 

Functions

 TEST_F (PostgreSQLBackendTest, TypeReturnsPostgres)
 
 TEST_F (PostgreSQLBackendTest, BackendNameIsCorrect)
 
 TEST_F (PostgreSQLBackendTest, InitiallyNotInitialized)
 
 TEST_F (PostgreSQLBackendTest, InitiallyNotInTransaction)
 
 TEST_F (PostgreSQLBackendTest, SelectQueryFailsWithoutInit)
 
 TEST_F (PostgreSQLBackendTest, ExecuteQueryFailsWithoutInit)
 
 TEST_F (PostgreSQLBackendTest, BeginTransactionFailsWithoutInit)
 
 TEST_F (PostgreSQLBackendTest, CommitTransactionFailsWithoutInit)
 
 TEST_F (PostgreSQLBackendTest, RollbackTransactionFailsWithoutInit)
 
 TEST_F (PostgreSQLBackendTest, ShutdownWithoutInitIsNoOp)
 
 TEST_F (PostgreSQLBackendTest, DoubleInitializationRejected)
 
 TEST_F (PostgreSQLBackendTest, CreateReturnsValidBackend)
 
 TEST_F (PostgreSQLBackendTest, ConnectionInfoBeforeInit)
 
 TEST_F (PostgreSQLBackendTest, LastErrorBeforeInit)
 
int main (int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 272 of file postgresql_backend_test.cpp.

273{
274 ::testing::InitGoogleTest(&argc, argv);
275 return RUN_ALL_TESTS();
276}

◆ TEST_F() [1/14]

TEST_F ( PostgreSQLBackendTest ,
BackendNameIsCorrect  )

Definition at line 63 of file postgresql_backend_test.cpp.

64{
65 EXPECT_STREQ(postgresql_backend::backend_name(), "postgresql_backend");
66}
static constexpr const char * backend_name()
Backend name for error messages.

References database::backends::postgresql_backend::backend_name().

Here is the call graph for this function:

◆ TEST_F() [2/14]

TEST_F ( PostgreSQLBackendTest ,
BeginTransactionFailsWithoutInit  )

Definition at line 98 of file postgresql_backend_test.cpp.

99{
100 auto result = backend_->begin_transaction();
101 EXPECT_FALSE(result.is_ok());
102}

◆ TEST_F() [3/14]

TEST_F ( PostgreSQLBackendTest ,
CommitTransactionFailsWithoutInit  )

Definition at line 104 of file postgresql_backend_test.cpp.

105{
106 auto result = backend_->commit_transaction();
107 EXPECT_FALSE(result.is_ok());
108}

◆ TEST_F() [4/14]

TEST_F ( PostgreSQLBackendTest ,
ConnectionInfoBeforeInit  )

Definition at line 156 of file postgresql_backend_test.cpp.

157{
158 auto info = backend_->connection_info();
159 // Implementation may return empty or partial info before init
160 // Just verify no crash
161 SUCCEED();
162}
@ info
Informational messages (default)

◆ TEST_F() [5/14]

TEST_F ( PostgreSQLBackendTest ,
CreateReturnsValidBackend  )

Definition at line 144 of file postgresql_backend_test.cpp.

145{
146 auto backend = postgresql_backend::create();
147 ASSERT_NE(backend, nullptr);
148 EXPECT_EQ(backend->type(), database_types::postgres);
149 EXPECT_FALSE(backend->is_initialized());
150}

◆ TEST_F() [6/14]

TEST_F ( PostgreSQLBackendTest ,
DoubleInitializationRejected  )

Definition at line 126 of file postgresql_backend_test.cpp.

127{
128#ifdef USE_POSTGRESQL
129 // Only test if actual PostgreSQL is available
130 auto first = backend_->initialize(test_config_);
131 if (first.is_ok()) {
132 auto second = backend_->initialize(test_config_);
133 EXPECT_FALSE(second.is_ok());
134 }
135#else
136 GTEST_SKIP() << "PostgreSQL support not compiled";
137#endif
138}

◆ TEST_F() [7/14]

TEST_F ( PostgreSQLBackendTest ,
ExecuteQueryFailsWithoutInit  )

Definition at line 92 of file postgresql_backend_test.cpp.

93{
94 auto result = backend_->execute_query("CREATE TABLE test (id INT)");
95 EXPECT_FALSE(result.is_ok());
96}

◆ TEST_F() [8/14]

TEST_F ( PostgreSQLBackendTest ,
InitiallyNotInitialized  )

Definition at line 72 of file postgresql_backend_test.cpp.

73{
74 EXPECT_FALSE(backend_->is_initialized());
75}

◆ TEST_F() [9/14]

TEST_F ( PostgreSQLBackendTest ,
InitiallyNotInTransaction  )

Definition at line 77 of file postgresql_backend_test.cpp.

78{
79 EXPECT_FALSE(backend_->in_transaction());
80}

◆ TEST_F() [10/14]

TEST_F ( PostgreSQLBackendTest ,
LastErrorBeforeInit  )

Definition at line 164 of file postgresql_backend_test.cpp.

165{
166 // Should not crash, may return empty
167 auto error = backend_->last_error();
168 SUCCEED();
169}
VoidResult error(const std::string &msg, int code=-1)

◆ TEST_F() [11/14]

TEST_F ( PostgreSQLBackendTest ,
RollbackTransactionFailsWithoutInit  )

Definition at line 110 of file postgresql_backend_test.cpp.

111{
112 auto result = backend_->rollback_transaction();
113 EXPECT_FALSE(result.is_ok());
114}

◆ TEST_F() [12/14]

TEST_F ( PostgreSQLBackendTest ,
SelectQueryFailsWithoutInit  )

Definition at line 86 of file postgresql_backend_test.cpp.

87{
88 auto result = backend_->select_query("SELECT * FROM test");
89 EXPECT_FALSE(result.is_ok());
90}

◆ TEST_F() [13/14]

TEST_F ( PostgreSQLBackendTest ,
ShutdownWithoutInitIsNoOp  )

Definition at line 120 of file postgresql_backend_test.cpp.

121{
122 auto result = backend_->shutdown();
123 EXPECT_TRUE(result.is_ok());
124}

◆ TEST_F() [14/14]

TEST_F ( PostgreSQLBackendTest ,
TypeReturnsPostgres  )

Definition at line 58 of file postgresql_backend_test.cpp.

59{
60 EXPECT_EQ(backend_->type(), database_types::postgres);
61}