23 #include "eckit/exception/Exceptions.h"
24 #include "eckit/io/FileHandle.h"
37 TEST(c_api_example_select_data_read_results)
39 const int maxCols = 4;
41 double buffer[maxCols];
42 double* data = buffer;
61 eckit::FileHandle dh(
"c_example_select_data_read_results.odb");
62 dh.openForWrite(size);
63 ASSERT(dh.write(buf, size) == size);
70 " from \"c_example_select_data_read_results.odb\""
71 " order by x;", &
err);
76 case 0: ASSERT(data[0] == 1 && fabs(data[1] - 0.2) < 0.0000001);
break;
77 case 1: ASSERT(data[0] == 2 && fabs(data[1] - 0.1) < 0.0000001);
break;
89 double f = data[0],
a = data[1], b = data[2];
91 case 0: ASSERT(
f == 0 &&
a == 0 && b == 0);
break;
92 case 1: ASSERT(
f == 1 &&
a == 1 && b == 0);
break;
93 case 2: ASSERT(
f == 2 &&
a == 0 && b == 1);
break;
94 case 3: ASSERT(
f == 3 &&
a == 1 && b == 1);
break;
104 TEST(c_api_example_read_data)
106 const int numberOfColumns = 4;
107 int err, nCols,
type, nameLength;
111 double buffer[numberOfColumns];
118 void* buf = 0; ASSERT(
false);
125 eckit::FileHandle dh(
"c_api_example_read_data.odb");
126 dh.openForWrite(size);
127 ASSERT(dh.write(buf, size) == size);
138 ASSERT(nCols == numberOfColumns);
153 ASSERT(0 == strncmp(
"x",
name, strlen(
"x")));
155 ASSERT(0 == strncmp(
"y",
name, strlen(
"y")));
157 ASSERT(0 == strncmp(
"v",
name, strlen(
"v")));
159 ASSERT(0 == strncmp(
"f",
name, strlen(
"f")));
165 int x =
int(data[0]);
166 int f =
int(data[3]);
168 std::cout <<
"Read row " << nRows <<
", x=" << x << std::endl;
170 ASSERT(x == nRows + 1 &&
f == nRows);
195 for (
int i = 1;
i <= 10; ++
i)
TEST(c_api_example_write_data)
oda_read_iterator_ptr odb_create_read_iterator(oda_ptr co, const char *filename, int *err)
int odb_write_iterator_write_header(oda_write_iterator_ptr wi)
int odb_read_iterator_destroy(oda_read_iterator_ptr it)
int odb_read_iterator_get_no_of_columns(oda_read_iterator_ptr it, int *numberOfColumns)
int odb_select_destroy(oda_ptr o)
int odb_select_iterator_destroy(oda_select_iterator_ptr it)
int odb_write_iterator_set_column(oda_write_iterator_ptr wi, int index, int type, const char *name)
oda_ptr odb_read_create(const char *config, int *err)
oda_ptr odb_select_create(const char *config, int *err)
int odb_select_iterator_get_next_row(oda_select_iterator_ptr it, int count, double *data, int *new_dataset)
int odb_write_iterator_set_no_of_columns(oda_write_iterator_ptr wi, int n)
oda_writer_ptr odb_writer_create(const char *config, int *err)
int odb_writer_destroy(oda_writer_ptr o)
int odb_read_iterator_get_column_type(oda_select_iterator_ptr it, int n, int *type)
int odb_write_iterator_set_next_row(oda_write_iterator_ptr wi, double *data, int count)
oda_write_iterator_ptr odb_create_write_iterator(oda_ptr co, const char *filename, int *err)
oda_select_iterator_ptr odb_create_select_iterator(oda_ptr co, const char *sql, int *err)
int odb_read_iterator_get_column_name(oda_read_iterator_ptr it, int n, char **name, int *size_name)
int odb_write_iterator_destroy(oda_write_iterator_ptr wi)
int odb_read_destroy(oda_ptr o)
int odb_write_iterator_set_bitfield(oda_write_iterator_ptr wi, int index, int type, const char *name, const char *bitfieldNames, const char *bitfieldSizes)
int odb_read_iterator_get_next_row(oda_read_iterator_ptr it, int count, double *data, int *new_dataset)