Testing
Reldbase uses two testing frameworks:
boost::ut — unit tests, which construct objects in memory and verify SQL output without connecting to a database
Catch2 — integration tests, which connect to a real PostgreSQL database and verify end-to-end behavior
Running the tests
cmake --build build
ctest --test-dir build
ctest runs the unit tests first and then the integration suite. The
integration suite requires PostgreSQL running locally and a single test
database:
createdb reldbase_test
The tests look up the database name in the RELDBASE_TEST_DB environment
variable, defaulting to reldbase_test when it is unset.
Unit tests
The unit tests live in src/ and use boost::ut. They are registered with
CTest as test_attribute, test_reltuple, and test_reldb.
# Run a single unit test
ctest --test-dir build -R test_attribute
# Or run a unit test binary directly
./build/src/reltypes/attribute_test
Integration tests
The integration tests live in tests/ and use Catch2. They connect to
the test database through Rel_db and exercise the relational database
layer end-to-end.
# Ensure the test database exists
createdb reldbase_test
# Run the integration suite
ctest --test-dir build -R test_reldb_integration
Test organization
File |
Framework |
Coverage |
|---|---|---|
|
boost::ut |
Attribute types, type registry |
|
boost::ut |
Rel_tuple construction and values |
|
boost::ut |
Rel_db helpers (no connection) |
|
Catch2 |
Rel_db queries and transactions (DB) |