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;
87 void insert(WIBBLE_TEST_LOCPRM,
DB& db,
bool can_replace=
false);
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);
178 std::unique_ptr<DB> create_db();
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;
218 void station_keys_match(
const Station& expected);
224 void data_context_matches(
const DataValues& expected);
228 data_var_matches(*expected.values[code].var);
232 data_var_matches(*expected.values[code].var);
236 if (
auto c = dynamic_cast<dballe::db::CursorValue*>(&_actual))
237 data_var_matches(*expected.values[c->get_varcode()].var);
239 throw wreport::error_consistency(
"cannot call data_var_matches on this kind of cursor");
243 data_var_matches(*expected[code].var);
246 void data_var_matches(
const wreport::Var& expected);
251 if (
auto c = dynamic_cast<dballe::db::CursorValue*>(&_actual))
252 data_matches(ds, c->get_varcode());
254 throw wreport::error_consistency(
"cannot call data_matches on this kind of cursor");
257 void data_matches(
const DataValues& ds, wreport::Varcode code);
260 typedef std::function<void(const std::vector<core::Record>&)> result_checker;
264 using Actual::Actual;
267 void try_data_query(
const std::string& query,
unsigned expected);
270 void try_data_query(
const Query& query,
unsigned expected);
273 void try_station_query(
const std::string& query,
unsigned expected);
276 void try_summary_query(
const std::string& query,
unsigned expected, result_checker checker=
nullptr);
286 inline ActualCursor actual(std::unique_ptr<dballe::db::CursorStationData>& actual) {
return ActualCursor(*actual); }
290 inline ActualDB actual(std::unique_ptr<dballe::DB>& actual) {
return ActualDB(*actual); }
Cursor iterating over summary entries.
Definition: db.h:137
Cursor iterating over station data values.
Definition: db.h:119
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
Key/value store where keys are strings and values are wreport variables.
Definition: record.h:16
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
DB-All.E record.
Definition: core/record.h:83
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_var_matches(const Values &expected, wreport::Varcode code)
Check cursor data variable after a query_data.
Definition: db/tests.h:242
Definition: sql/driver.h:84
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.