1 #include <dballe/msg/tests.h>
3 #include <dballe/core/values.h>
23 Messages messages_from_db(DB& db,
const dballe::Query& query);
24 Messages messages_from_db(DB& db,
const char* query);
28 dballe::db::Format old_format;
35 struct db_tg :
public tut::test_group<T>
37 dballe::db::Format db_format;
38 const char* backend = 0;
41 db_tg(
const char* name, dballe::db::Format fmt,
const char* backend=0)
42 : tut::test_group<T>(name), db_format(fmt), backend(backend), name(name)
46 tut::test_result run_next()
49 return tut::test_group<T>::run_next();
51 tut::test_result run_test(
int n)
54 return tut::test_group<T>::run_test(n);
67 std::map<std::string, core::Record> info;
70 void set_latlonident_into(Record& rec)
const;
79 core::Record merged_info_with_highest_prio(DB& db)
const;
87 void insert(WIBBLE_TEST_LOCPRM, DB& db,
bool can_replace=
false);
93 StationValues station;
97 std::map<wreport::Varcode, core::Record> attrs;
103 void set_var(
const char* msgvarname,
double val,
int conf=-1);
105 void insert(WIBBLE_TEST_LOCPRM, DB& db,
bool can_replace=
false);
115 std::map<std::string, DataValues>
data;
120 virtual void populate_db(
DB& db);
129 std::unique_ptr<db::Connection> get_test_connection(
const std::string& backend);
147 template<
typename T=DriverFixture>
148 struct driver_test_group :
public dballe::tests::test_group<T>
153 driver_test_group(
const char* name,
const char* backend, db::Format dbformat,
const typename dballe::tests::test_group<T>::Tests& tests)
154 :
dballe::tests::test_group<T>(name, tests), backend(backend), dbformat(dbformat)
160 DriverFixture::backend = backend;
161 DriverFixture::format = dbformat;
162 return dballe::tests::test_group<T>::create_fixture();
174 DBFixture(
const char* backend, db::Format format);
182 template<
typename DataSet>
186 wassert(populate_database(data_set));
193 template<
typename T=DBFixture>
194 struct db_test_group :
public dballe::tests::test_group<T>
199 db_test_group(
const char* name,
const char* backend, db::Format dbformat,
const typename dballe::tests::test_group<T>::Tests& tests)
200 :
dballe::tests::test_group<T>(name, tests), backend(backend), dbformat(dbformat)
206 DBFixture::backend = backend;
207 DBFixture::format = dbformat;
208 return dballe::tests::test_group<T>::create_fixture();
215 using Actual::Actual;
236 if (
auto c = dynamic_cast<dballe::db::CursorValue*>(&_actual))
239 throw wreport::error_consistency(
"cannot call data_var_matches on this kind of cursor");
251 if (
auto c = dynamic_cast<dballe::db::CursorValue*>(&_actual))
254 throw wreport::error_consistency(
"cannot call data_matches on this kind of cursor");
260 typedef std::function<void(const std::vector<core::Record>&)> result_checker;
264 using Actual::Actual;
276 void try_summary_query(
const std::string& query,
unsigned expected, result_checker checker=
nullptr);
284 inline ActualCursor actual(std::unique_ptr<dballe::db::Cursor>& actual) {
return ActualCursor(*actual); }
285 inline ActualCursor actual(std::unique_ptr<dballe::db::CursorStation>& actual) {
return ActualCursor(*actual); }
286 inline ActualCursor actual(std::unique_ptr<dballe::db::CursorStationData>& actual) {
return ActualCursor(*actual); }
287 inline ActualCursor actual(std::unique_ptr<dballe::db::CursorData>& actual) {
return ActualCursor(*actual); }
288 inline ActualCursor actual(std::unique_ptr<dballe::db::CursorSummary>& actual) {
return ActualCursor(*actual); }
289 inline ActualDB actual(
dballe::DB& actual) {
return ActualDB(actual); }
290 inline ActualDB actual(std::unique_ptr<dballe::DB>& actual) {
return ActualDB(*actual); }
void try_summary_query(const std::string &query, unsigned expected, result_checker checker=nullptr)
Check results of a summary query.
std::unique_ptr< DB > create_db()
Open a new DB with the backend and format specified in this fixture.
Cursor iterating over summary entries.
Definition: db.h:137
Cursor iterating over station data values.
Definition: db.h:119
void station_keys_match(const Station &expected)
Check cursor context after a query_stations.
Attribute table management used by the db module.
void data_var_matches(const DataValues &expected, wreport::Varcode code)
Check cursor data variable after a query_data.
Definition: db/tests.h:231
Copyright (C) 2008–2010 ARPA-SIM urpsim@smr.arpa.emr.it
Definition: cmdline.h:17
std::map< std::string, StationValues > stations
Arbitrarily named station values.
Definition: db/tests.h:113
void data_matches(const DataValues &ds)
Check cursor data context and variable after a query_data.
Definition: db/tests.h:249
Common interface for all kinds of cursors.
Definition: db.h:39
Functions used to connect to DB-All.e and insert, query and delete data.
Cursor iterating over stations.
Definition: db.h:98
Cursor iterating over data values.
Definition: db.h:124
Definition: db/tests.h:167
void data_context_matches(const DataValues &expected)
Check cursor data context after a query_data.
void data_var_matches(const Values &expected, wreport::Varcode code)
Check cursor data variable after a query_data.
Definition: db/tests.h:242
void station_vars_match(const StationValues &expected)
Check cursor context after a query_stations.
void try_data_query(const std::string &query, unsigned expected)
Check cursor data context anda variable after a query_data.
Definition: sql/driver.h:84
void try_station_query(const std::string &query, unsigned expected)
Check results of a station query.
Query used to filter DB-All.e data.
Definition: query.h:14
void data_var_matches(const StationValues &expected, wreport::Varcode code)
Check cursor data variable after a query_data.
Definition: db/tests.h:227
Test fixture used by old DB-All.e db tests.
Definition: db/tests.h:124
Definition: db/tests.h:262
void data_var_matches(const DataValues &expected)
Check cursor data variable after a query_data.
Definition: db/tests.h:235
Base for datasets used to populate test databases.
Definition: db/tests.h:110
std::map< std::string, DataValues > data
Arbitrarily named data values.
Definition: db/tests.h:115
Test fixture for SQL backend drivers.
Definition: db/tests.h:132
Definition: db/tests.h:213
Implement a storage object for a group of related observation data.