21 #define BOOST_TEST_MODULE libjmmcg_tests
22 #include <boost/test/included/unit_test.hpp>
24 #include "core/line_iterator.hpp"
25 #include "core/csv_iterator.hpp"
31 using namespace libjmmcg;
33 constexpr char data[]=
"k, l, m, 10, 11, 12\nd, e, f, 4, 5, 6\nh, i, j, 7, 8, 9\na, b, c, 1, 2, 3\n";
35 BOOST_AUTO_TEST_SUITE(iterator_tests)
37 BOOST_AUTO_TEST_CASE(ctor_eof) {
38 BOOST_CHECK_NO_THROW(line_iterator eof);
41 BOOST_AUTO_TEST_CASE(ctor_eol) {
42 BOOST_CHECK_NO_THROW(line_iterator eof);
45 BOOST_AUTO_TEST_CASE(basic) {
49 std::vector<std::string> data(it, eof);
52 std::sort(data.begin(), data.end());
54 for (
auto const &line : data) {
55 BOOST_CHECK(!line.empty());
56 const csv_iterator eol;
57 for (csv_iterator csv_it(line); csv_it!=eol; ++csv_it) {
58 BOOST_CHECK(!csv_it->empty());
63 BOOST_AUTO_TEST_CASE(stream) {
68 std::string
const line=
*it
++;
69 BOOST_CHECK(!line.empty());
72 BOOST_CHECK(!csv_it->empty());
77 BOOST_AUTO_TEST_CASE(select_2nd_element) {
81 std::string
const line=
*it;
82 BOOST_CHECK(!line.empty());
85 auto val_iter=
std::next(csv_it);
86 BOOST_CHECK_EQUAL(*val_iter,
" l");
89 BOOST_AUTO_TEST_SUITE_END()