1#include <dballe/core/data.h>
3#include <dballe/db/fwd.h>
4#include <dballe/db/summary.h>
5#include <dballe/db/v7/fwd.h>
6#include <dballe/msg/tests.h>
15impl::Messages messages_from_db(std::shared_ptr<db::Transaction> tr,
16 const dballe::Query& query);
17impl::Messages messages_from_db(std::shared_ptr<db::Transaction> tr,
26 std::map<std::string, core::Data>
data;
41struct OldDballeTestDataSet :
public TestDataSet
43 OldDballeTestDataSet();
46bool has_driver(
const std::string& backend);
52 static const auto format = db::Format::V7;
53 static std::shared_ptr<DB> create_db(
const std::string& backend,
bool wipe);
56template <
typename DB>
struct BaseDBFixture :
public Fixture
59 std::shared_ptr<typename DB::DB> db;
60 bool destroys_db =
false;
62 BaseDBFixture(
const char* backend);
63 virtual ~BaseDBFixture();
67 virtual void create_db();
73 using BaseDBFixture<
DB>::BaseDBFixture;
74 std::shared_ptr<typename DB::TR> tr;
81template <
typename DB,
typename TestData>
88 void create_db()
override
90 EmptyTransactionFixture<DB>::create_db();
91 wassert(test_data.populate_db(*this->db));
95template <
typename DB>
struct DBFixture :
public BaseDBFixture<DB>
97 using BaseDBFixture<
DB>::BaseDBFixture;
105 using Actual::Actual;
122 std::dynamic_pointer_cast<dballe::db::CursorStation>(_actual))
124 DBValues actual_values = c->get_values();
127 wassert(actual(c->get_values()) == expected);
129 else if (
auto c = std::dynamic_pointer_cast<dballe::CursorStationData>(
133 std::dynamic_pointer_cast<dballe::CursorData>(_actual))
137 "cannot call data_var_matches on this kind of cursor");
151 std::dynamic_pointer_cast<dballe::CursorStationData>(_actual))
154 std::dynamic_pointer_cast<dballe::CursorData>(_actual))
158 "cannot call data_matches on this kind of cursor");
164typedef std::function<void(
const db::DBSummary&)> result_checker;
181 result_checker checker =
nullptr);
184inline ActualCursor actual(std::shared_ptr<dballe::Cursor>& actual)
188inline ActualCursor actual(std::shared_ptr<dballe::CursorStation>& actual)
190 return ActualCursor(actual);
192inline ActualCursor actual(std::shared_ptr<dballe::CursorStationData>& actual)
194 return ActualCursor(actual);
196inline ActualCursor actual(std::shared_ptr<dballe::CursorData>& actual)
200inline ActualCursor actual(std::shared_ptr<dballe::CursorSummary>& actual)
210actual(std::shared_ptr<dballe::db::Transaction> actual)
215actual(std::shared_ptr<dballe::db::v7::Transaction> actual);
Key/value store where keys are strings and values are wreport variables.
Definition data.h:18
Query used to filter DB-All.e data.
Definition query.h:17
static const Data & downcast(const dballe::Data &data)
Return a reference to record downcasted as core::Record.
DB-ALLe database connection for database format V7.
Definition db/v7/db.h:21
const wreport::Var & var(wreport::Varcode code) const
Lookup a wreport::Var, throwing an exception if not found.
Functions used to connect to DB-All.e and insert, query and delete data.
Forward declarations for public dballe/sql names.
Collection of DBValue objects, indexed by wreport::Varcode.
Definition values.h:230
bool vars_equal(const DBValues &o) const
Check if the variables are the same, regardless of the data_id.
Collection of Value objects, indexed by wreport::Varcode.
Definition values.h:216
Definition transaction.h:16
Definition db/tests.h:104
void data_var_matches(const Values &expected, wreport::Varcode code)
Check cursor data variable after a query_data.
Definition db/tests.h:140
void data_var_matches(const wreport::Var &expected)
Check cursor data variable after a query_data.
void data_var_matches(const Data &expected, wreport::Varcode code)
Check cursor data variable after a query_data.
Definition db/tests.h:114
void data_matches(const Data &ds, wreport::Varcode code)
Check cursor data context and variable after a query_data.
void data_context_matches(const Data &expected)
Check cursor data context after a query_data.
void data_matches(const Data &ds)
Check cursor data context and variable after a query_data.
Definition db/tests.h:148
void station_keys_match(const DBStation &expected)
Check cursor context after a query_stations.
void data_var_matches(const DBValues &expected)
Check cursor data variable(s) after a query_data.
Definition db/tests.h:119
Definition db/tests.h:167
void try_station_query(const std::string &query, unsigned expected)
Check results of a station query.
void try_data_query(const Query &query, unsigned expected)
Check cursor data context anda variable after a query_data.
void try_summary_query(const std::string &query, unsigned expected, result_checker checker=nullptr)
Check results of a summary query.
void try_data_query(const std::string &query, unsigned expected)
Check cursor data context anda variable after a query_data.
Base for datasets used to populate test databases.
Definition db/tests.h:22
std::map< std::string, core::Data > stations
Arbitrarily named station values.
Definition db/tests.h:24
std::map< std::string, core::Data > data
Arbitrarily named data values.
Definition db/tests.h:26
Structures used as input to database insert functions.