#define BOOST_TEST_MODULE "test_to_toml" #ifdef UNITTEST_FRAMEWORK_LIBRARY_EXIST #include #else #define BOOST_TEST_NO_LIB #include #endif #include #include #include BOOST_AUTO_TEST_CASE(test_to_toml_exact) { toml::Boolean b(true); toml::Integer i(42); toml::Float f(3.14); toml::String s("hoge"); toml::Datetime d(std::chrono::system_clock::now()); toml::Array a; a.emplace_back(2); a.emplace_back(7); a.emplace_back(1); a.emplace_back(8); a.emplace_back(2); toml::Table t; t.emplace("val1", true); t.emplace("val2", 42); t.emplace("val3", 3.14); t.emplace("val4", "piyo"); auto v1 = toml::to_toml(b); auto v2 = toml::to_toml(i); auto v3 = toml::to_toml(f); auto v4 = toml::to_toml(s); auto v5 = toml::to_toml(d); auto v6 = toml::to_toml(a); auto v7 = toml::to_toml(t); BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean); BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Integer); BOOST_CHECK_EQUAL(v3.type(), toml::value_t::Float); BOOST_CHECK_EQUAL(v4.type(), toml::value_t::String); BOOST_CHECK_EQUAL(v5.type(), toml::value_t::Datetime); BOOST_CHECK_EQUAL(v6.type(), toml::value_t::Array); BOOST_CHECK_EQUAL(v7.type(), toml::value_t::Table); BOOST_CHECK_EQUAL(v1.cast(), b); BOOST_CHECK_EQUAL(v2.cast(), i); BOOST_CHECK_EQUAL(v3.cast(), f); BOOST_CHECK_EQUAL(v4.cast(), s); const auto& ar = v6.cast(); BOOST_CHECK_EQUAL(ar.at(0).cast(), a.at(0).cast()); BOOST_CHECK_EQUAL(ar.at(1).cast(), a.at(1).cast()); BOOST_CHECK_EQUAL(ar.at(2).cast(), a.at(2).cast()); BOOST_CHECK_EQUAL(ar.at(3).cast(), a.at(3).cast()); BOOST_CHECK_EQUAL(ar.at(4).cast(), a.at(4).cast()); } BOOST_AUTO_TEST_CASE(test_to_toml_castable) { auto v1 = toml::to_toml(true); auto v2 = toml::to_toml(42ul); auto v3 = toml::to_toml(3.14f); auto v4 = toml::to_toml("hoge"); BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean); BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Integer); BOOST_CHECK_EQUAL(v3.type(), toml::value_t::Float); BOOST_CHECK_EQUAL(v4.type(), toml::value_t::String); BOOST_CHECK_EQUAL(v1.cast(), true); BOOST_CHECK_EQUAL(v2.cast(), 42); BOOST_CHECK_CLOSE_FRACTION(v3.cast(), 3.14, 1e-5); BOOST_CHECK_EQUAL(v4.cast(), "hoge"); }