#include "SoilMoistureIo.h" #define BOOST_TEST_MODULE "SoilMoistureIoTest" #include using namespace trygvis::soil_moisture; BOOST_AUTO_TEST_CASE(key_value_parser) { KeyDictionary dict; auto buffer = make_shared(); auto parser = new KeyValueSampleParser(buffer, dict); char data[] = "a=1, b=2, c=3\n"; parser->process(boost::asio::buffer(data, sizeof(data))); BOOST_CHECK_EQUAL(buffer->samples.size(), 1); BOOST_CHECK_EQUAL(dict.size(), 3); auto it = dict.begin(); BOOST_CHECK_EQUAL((*it)->name, "a"); BOOST_CHECK_EQUAL((*it++)->index, 0); BOOST_CHECK_EQUAL((*it)->name, "b"); BOOST_CHECK_EQUAL((*it++)->index, 1); BOOST_CHECK_EQUAL((*it)->name, "c"); BOOST_CHECK_EQUAL((*it++)->index, 2); } BOOST_AUTO_TEST_CASE(key_value_parser_with_custom_dict) { KeyDictionary dict; dict.indexOf("c"); dict.indexOf("b"); auto buffer = make_shared(); auto parser = new KeyValueSampleParser(buffer, dict); char data[] = "a=1, b=2, c=3\n"; parser->process(boost::asio::buffer(data, sizeof(data))); BOOST_CHECK_EQUAL(buffer->samples.size(), 1); BOOST_CHECK_EQUAL(dict.size(), 3); auto it = dict.begin(); BOOST_CHECK_EQUAL((*it)->name, "c"); BOOST_CHECK_EQUAL((*it++)->index, 0); BOOST_CHECK_EQUAL((*it)->name, "b"); BOOST_CHECK_EQUAL((*it++)->index, 1); }