2017-04-19 15:08:41 +00:00
|
|
|
#define BOOST_TEST_MODULE "test_value"
|
|
|
|
#ifdef UNITTEST_FRAMEWORK_LIBRARY_EXIST
|
|
|
|
#include <boost/test/unit_test.hpp>
|
|
|
|
#else
|
|
|
|
#define BOOST_TEST_NO_LIB
|
|
|
|
#include <boost/test/included/unit_test.hpp>
|
|
|
|
#endif
|
2018-12-09 09:03:20 +00:00
|
|
|
#include <toml/value.hpp>
|
2017-04-19 05:18:46 +00:00
|
|
|
#include <map>
|
|
|
|
#include <list>
|
2017-04-16 06:12:39 +00:00
|
|
|
|
2019-04-26 07:32:23 +00:00
|
|
|
#if __cplusplus >= 201703L
|
|
|
|
#include <string_view>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_AUTO_TEST_CASE(test_value_boolean)
|
2017-04-16 06:12:39 +00:00
|
|
|
{
|
2018-12-09 09:03:20 +00:00
|
|
|
toml::value v1(true);
|
|
|
|
toml::value v2(false);
|
2017-04-19 15:08:41 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
|
|
|
BOOST_CHECK(v2.is_boolean());
|
2017-04-19 15:08:41 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Boolean>(), false);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_boolean(), false);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = false;
|
|
|
|
v2 = true;
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
|
|
|
BOOST_CHECK(v2.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), false);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), false);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_boolean(), true);
|
2017-04-19 15:08:41 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
toml::value v3(v1);
|
|
|
|
toml::value v4(v2);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v3 == v1);
|
|
|
|
BOOST_CHECK(v4 == v2);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK_EQUAL(v4.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v4.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v3.is<toml::Boolean>());
|
|
|
|
BOOST_CHECK(v4.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v3.is_boolean());
|
|
|
|
BOOST_CHECK(v4.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Boolean>(), false);
|
|
|
|
BOOST_CHECK_EQUAL(v4.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.as_boolean(), false);
|
|
|
|
BOOST_CHECK_EQUAL(v4.as_boolean(), true);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v5(std::move(v1));
|
|
|
|
toml::value v6(std::move(v2));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v5.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK_EQUAL(v6.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v5.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v6.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v5.is<toml::Boolean>());
|
|
|
|
BOOST_CHECK(v6.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v3.is_boolean());
|
|
|
|
BOOST_CHECK(v4.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v5.cast<toml::value_t::Boolean>(), false);
|
|
|
|
BOOST_CHECK_EQUAL(v6.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v5.as_boolean(), false);
|
|
|
|
BOOST_CHECK_EQUAL(v6.as_boolean(), true);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = 42;
|
|
|
|
v2 = 3.14;
|
2017-04-19 15:08:41 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Float);
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v1.is<toml::Integer>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Float>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_integer());
|
|
|
|
BOOST_CHECK(v2.is_float());
|
2017-04-19 15:08:41 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Integer>(), 42);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Float>(), 3.14);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_integer(), 42);
|
2019-04-27 07:45:25 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.as_float(), 3.14);
|
2017-04-19 15:08:41 +00:00
|
|
|
}
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_AUTO_TEST_CASE(test_value_integer)
|
2017-04-19 15:08:41 +00:00
|
|
|
{
|
2018-12-09 09:03:20 +00:00
|
|
|
toml::value v1(-42);
|
|
|
|
toml::value v2(42u);
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v1.is<toml::Integer>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Integer>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_integer());
|
|
|
|
BOOST_CHECK(v2.is_integer());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Integer>(), -42);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Integer>(), 42u);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_integer(), -42);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_integer(), 42u);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = 54;
|
|
|
|
v2 = -54;
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v1.is<toml::Integer>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Integer>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_integer());
|
|
|
|
BOOST_CHECK(v2.is_integer());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Integer>(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Integer>(), -54);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_integer(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_integer(), -54);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v3(v1);
|
|
|
|
toml::value v4(v2);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v3 == v1);
|
|
|
|
BOOST_CHECK(v4 == v2);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK_EQUAL(v4.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v4.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v3.is<toml::Integer>());
|
|
|
|
BOOST_CHECK(v4.is<toml::Integer>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v3.is_integer());
|
|
|
|
BOOST_CHECK(v4.is_integer());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Integer>(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v4.cast<toml::value_t::Integer>(), -54);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.as_integer(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v4.as_integer(), -54);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v5(std::move(v1));
|
|
|
|
toml::value v6(std::move(v2));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v5.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK_EQUAL(v6.type(), toml::value_t::Integer);
|
|
|
|
BOOST_CHECK(v5.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v6.is(toml::value_t::Integer));
|
|
|
|
BOOST_CHECK(v5.is<toml::Integer>());
|
|
|
|
BOOST_CHECK(v6.is<toml::Integer>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v5.is_integer());
|
|
|
|
BOOST_CHECK(v6.is_integer());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v5.cast<toml::value_t::Integer>(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v6.cast<toml::value_t::Integer>(), -54);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v5.as_integer(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v6.as_integer(), -54);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = true;
|
|
|
|
v2 = false;
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
|
|
|
BOOST_CHECK(v2.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Boolean>(), false);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_boolean(), false);
|
2017-04-16 06:12:39 +00:00
|
|
|
}
|
2017-04-19 15:08:41 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_AUTO_TEST_CASE(test_value_float)
|
2017-04-19 15:13:37 +00:00
|
|
|
{
|
2018-12-09 09:03:20 +00:00
|
|
|
toml::value v1(3.14);
|
|
|
|
toml::value v2(3.14f);
|
2017-04-19 15:13:37 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Float);
|
2017-04-19 15:13:37 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Float);
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v1.is<toml::Float>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Float>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_float());
|
|
|
|
BOOST_CHECK(v2.is_float());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL (v1.cast<toml::value_t::Float>(), 3.14);
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_CLOSE_FRACTION(v2.cast<toml::value_t::Float>(), 3.14, 1e-2);
|
2019-04-27 07:45:25 +00:00
|
|
|
BOOST_CHECK_EQUAL (v1.as_float(), 3.14);
|
|
|
|
BOOST_CHECK_CLOSE_FRACTION(v2.as_float(), 3.14, 1e-2);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = 2.718f;
|
|
|
|
v2 = 2.718;
|
2017-04-19 15:13:37 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Float);
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Float);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v1.is<toml::Float>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Float>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_float());
|
|
|
|
BOOST_CHECK(v2.is_float());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_CLOSE_FRACTION(v1.cast<toml::value_t::Float>(), 2.718, 1e-3);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL (v2.cast<toml::value_t::Float>(), 2.718);
|
2019-04-27 07:45:25 +00:00
|
|
|
BOOST_CHECK_CLOSE_FRACTION(v1.as_float(), 2.718, 1e-3);
|
|
|
|
BOOST_CHECK_EQUAL (v2.as_float(), 2.718);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v3(v1);
|
|
|
|
toml::value v4(v2);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v3 == v1);
|
|
|
|
BOOST_CHECK(v4 == v2);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::Float);
|
|
|
|
BOOST_CHECK_EQUAL(v4.type(), toml::value_t::Float);
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v4.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v3.is<toml::Float>());
|
|
|
|
BOOST_CHECK(v4.is<toml::Float>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v3.is_float());
|
|
|
|
BOOST_CHECK(v4.is_float());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_CLOSE_FRACTION(v3.cast<toml::value_t::Float>(), 2.718, 1e-3);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL (v4.cast<toml::value_t::Float>(), 2.718);
|
2019-04-27 07:45:25 +00:00
|
|
|
BOOST_CHECK_CLOSE_FRACTION(v3.as_float(), 2.718, 1e-3);
|
|
|
|
BOOST_CHECK_EQUAL (v4.as_float(), 2.718);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v5(std::move(v1));
|
|
|
|
toml::value v6(std::move(v2));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v5.type(), toml::value_t::Float);
|
|
|
|
BOOST_CHECK_EQUAL(v6.type(), toml::value_t::Float);
|
|
|
|
BOOST_CHECK(v5.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v6.is(toml::value_t::Float));
|
|
|
|
BOOST_CHECK(v5.is<toml::Float>());
|
|
|
|
BOOST_CHECK(v6.is<toml::Float>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v5.is_float());
|
|
|
|
BOOST_CHECK(v6.is_float());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_CLOSE_FRACTION(v5.cast<toml::value_t::Float>(), 2.718, 1e-3);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL (v6.cast<toml::value_t::Float>(), 2.718);
|
2019-04-27 07:45:25 +00:00
|
|
|
BOOST_CHECK_CLOSE_FRACTION(v5.as_float(), 2.718, 1e-3);
|
|
|
|
BOOST_CHECK_EQUAL (v6.as_float(), 2.718);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = true;
|
|
|
|
v2 = false;
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
|
|
|
BOOST_CHECK(v2.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Boolean>(), false);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_boolean(), false);
|
2018-12-09 09:03:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_value_string)
|
|
|
|
{
|
|
|
|
toml::value v1(std::string("foo"));
|
|
|
|
toml::value v2(std::string("foo"), toml::string_t::literal);
|
|
|
|
toml::value v3("foo");
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::String);
|
2017-04-19 15:13:37 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::String);
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v1.is<toml::String>());
|
|
|
|
BOOST_CHECK(v2.is<toml::String>());
|
|
|
|
BOOST_CHECK(v3.is<toml::String>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_string());
|
|
|
|
BOOST_CHECK(v2.is_string());
|
|
|
|
BOOST_CHECK(v3.is_string());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::String>(), "foo");
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::String>(), "foo");
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::String>(), "foo");
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_string(), "foo");
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_string(), "foo");
|
|
|
|
BOOST_CHECK_EQUAL(v3.as_string(), "foo");
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = "bar";
|
|
|
|
v2 = "bar";
|
|
|
|
v3 = "bar";
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::String));
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_string());
|
|
|
|
BOOST_CHECK(v2.is_string());
|
|
|
|
BOOST_CHECK(v3.is_string());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::String>(), "bar");
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::String>(), "bar");
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::String>(), "bar");
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_string(), "bar");
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_string(), "bar");
|
|
|
|
BOOST_CHECK_EQUAL(v3.as_string(), "bar");
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v4(v1);
|
|
|
|
toml::value v5(v2);
|
|
|
|
toml::value v6(v3);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v4 == v1);
|
|
|
|
BOOST_CHECK(v5 == v2);
|
|
|
|
BOOST_CHECK(v6 == v3);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v4.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK_EQUAL(v5.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK_EQUAL(v6.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK(v4.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v5.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v6.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v4.is<toml::String>());
|
|
|
|
BOOST_CHECK(v5.is<toml::String>());
|
|
|
|
BOOST_CHECK(v6.is<toml::String>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v4.is_string());
|
|
|
|
BOOST_CHECK(v5.is_string());
|
|
|
|
BOOST_CHECK(v6.is_string());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v4.cast<toml::value_t::String>(), "bar");
|
|
|
|
BOOST_CHECK_EQUAL(v5.cast<toml::value_t::String>(), "bar");
|
|
|
|
BOOST_CHECK_EQUAL(v6.cast<toml::value_t::String>(), "bar");
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v4.as_string(), "bar");
|
|
|
|
BOOST_CHECK_EQUAL(v5.as_string(), "bar");
|
|
|
|
BOOST_CHECK_EQUAL(v6.as_string(), "bar");
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v4.cast<toml::value_t::String>().str.at(2) = 'z';
|
|
|
|
v5.cast<toml::value_t::String>().str.at(2) = 'z';
|
|
|
|
v6.cast<toml::value_t::String>().str.at(2) = 'z';
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v4.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK_EQUAL(v5.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK_EQUAL(v6.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK(v4.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v5.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v6.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v4.is<toml::String>());
|
|
|
|
BOOST_CHECK(v5.is<toml::String>());
|
|
|
|
BOOST_CHECK(v6.is<toml::String>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v4.is_string());
|
|
|
|
BOOST_CHECK(v5.is_string());
|
|
|
|
BOOST_CHECK(v6.is_string());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v4.as_string(), "baz");
|
|
|
|
BOOST_CHECK_EQUAL(v5.as_string(), "baz");
|
|
|
|
BOOST_CHECK_EQUAL(v6.as_string(), "baz");
|
2017-04-19 15:13:37 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
v1 = true;
|
|
|
|
v2 = true;
|
|
|
|
v3 = true;
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
|
|
|
BOOST_CHECK(v2.is<toml::Boolean>());
|
|
|
|
BOOST_CHECK(v3.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
|
|
|
BOOST_CHECK(v2.is_boolean());
|
|
|
|
BOOST_CHECK(v3.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Boolean>(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_boolean(), true);
|
|
|
|
BOOST_CHECK_EQUAL(v3.as_boolean(), true);
|
2019-04-26 07:32:23 +00:00
|
|
|
|
|
|
|
#if __cplusplus >= 201703L
|
2019-04-26 07:51:23 +00:00
|
|
|
std::string_view sv = "foo";
|
2019-04-26 07:32:23 +00:00
|
|
|
|
|
|
|
toml::value v7(sv);
|
|
|
|
toml::value v8(sv, toml::string_t::literal);
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v7.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK_EQUAL(v8.type(), toml::value_t::String);
|
|
|
|
BOOST_CHECK(v7.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v8.is(toml::value_t::String));
|
|
|
|
BOOST_CHECK(v7.is<toml::String>());
|
|
|
|
BOOST_CHECK(v8.is<toml::String>());
|
|
|
|
BOOST_CHECK(v7.is_string());
|
|
|
|
BOOST_CHECK(v8.is_string());
|
|
|
|
|
2019-04-26 07:51:23 +00:00
|
|
|
BOOST_CHECK_EQUAL(v7.cast<toml::value_t::String>(), "foo");
|
|
|
|
BOOST_CHECK_EQUAL(v8.cast<toml::value_t::String>(), "foo");
|
2019-04-26 07:32:23 +00:00
|
|
|
#endif
|
2018-12-09 09:03:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_value_local_date)
|
|
|
|
{
|
|
|
|
toml::value v1(toml::local_date(2018, toml::month_t::Jan, 31));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::LocalDate);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::LocalDate));
|
|
|
|
BOOST_CHECK(v1.is<toml::LocalDate>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_local_date());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::LocalDate>(),
|
|
|
|
toml::local_date(2018, toml::month_t::Jan, 31));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_local_date(),
|
|
|
|
toml::local_date(2018, toml::month_t::Jan, 31));
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = toml::local_date(2018, toml::month_t::Apr, 1);
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::LocalDate);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::LocalDate));
|
|
|
|
BOOST_CHECK(v1.is<toml::LocalDate>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_local_date());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::LocalDate>(),
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_local_date(),
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1));
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v2(v1);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v2 == v1);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::LocalDate);
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::LocalDate));
|
|
|
|
BOOST_CHECK(v2.is<toml::LocalDate>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v2.is_local_date());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::LocalDate>(),
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.as_local_date(),
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1));
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = true;
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
2018-12-09 09:03:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_value_local_time)
|
|
|
|
{
|
|
|
|
toml::value v1(toml::local_time(12, 30, 45));
|
|
|
|
toml::value v2(std::chrono::hours(12) + std::chrono::minutes(30) +
|
|
|
|
std::chrono::seconds(45));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::LocalTime);
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::LocalTime);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::LocalTime));
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::LocalTime));
|
|
|
|
BOOST_CHECK(v1.is<toml::LocalTime>());
|
|
|
|
BOOST_CHECK(v2.is<toml::LocalTime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_local_time());
|
|
|
|
BOOST_CHECK(v2.is_local_time());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::LocalTime>(),
|
|
|
|
toml::local_time(12, 30, 45));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_local_time(),
|
|
|
|
toml::local_time(12, 30, 45));
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::LocalTime>(),
|
|
|
|
toml::local_time(12, 30, 45));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.as_local_time(),
|
|
|
|
toml::local_time(12, 30, 45));
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::LocalTime>(),
|
|
|
|
v2.cast<toml::value_t::LocalTime>());
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_local_time(),
|
|
|
|
v2.as_local_time());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = toml::local_time(1, 30, 0, /*ms*/ 100, /*us*/ 0);
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::LocalTime);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::LocalTime));
|
|
|
|
BOOST_CHECK(v1.is<toml::LocalTime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_local_time());
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::LocalTime>(),
|
|
|
|
toml::local_time(1, 30, 0, 100, 0));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_local_time(),
|
|
|
|
toml::local_time(1, 30, 0, 100, 0));
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v3(v1);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v3 == v1);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::LocalTime);
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::LocalTime));
|
|
|
|
BOOST_CHECK(v3.is<toml::LocalTime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v3.is_local_time());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::LocalTime>(),
|
|
|
|
toml::local_time(1, 30, 0, 100, 0));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.as_local_time(),
|
|
|
|
toml::local_time(1, 30, 0, 100, 0));
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = true;
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
2018-12-09 09:03:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_value_local_datetime)
|
|
|
|
{
|
|
|
|
toml::value v1(toml::local_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Jan, 31),
|
|
|
|
toml::local_time(12, 30, 45)
|
|
|
|
));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::LocalDatetime);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::LocalDatetime));
|
|
|
|
BOOST_CHECK(v1.is<toml::LocalDatetime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_local_datetime());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::LocalDatetime>(),
|
|
|
|
toml::local_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Jan, 31),
|
|
|
|
toml::local_time(12, 30, 45)));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_local_datetime(),
|
|
|
|
toml::local_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Jan, 31),
|
|
|
|
toml::local_time(12, 30, 45)));
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = toml::local_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::LocalDatetime);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::LocalDatetime));
|
|
|
|
BOOST_CHECK(v1.is<toml::LocalDatetime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_local_datetime());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::LocalDatetime>(),
|
|
|
|
toml::local_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30)));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_local_datetime(),
|
|
|
|
toml::local_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30)));
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v2(v1);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v2 == v1);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::LocalDatetime);
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::LocalDatetime));
|
|
|
|
BOOST_CHECK(v2.is<toml::LocalDatetime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v2.is_local_datetime());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::LocalDatetime>(),
|
|
|
|
toml::local_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30)));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.as_local_datetime(),
|
|
|
|
toml::local_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30)));
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = true;
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
2017-04-19 15:13:37 +00:00
|
|
|
}
|
2017-04-20 01:48:59 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_AUTO_TEST_CASE(test_value_offset_datetime)
|
2017-04-20 01:48:59 +00:00
|
|
|
{
|
2018-12-09 09:03:20 +00:00
|
|
|
toml::value v1(toml::offset_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Jan, 31),
|
|
|
|
toml::local_time(12, 30, 45),
|
|
|
|
toml::time_offset(9, 0)
|
|
|
|
));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::OffsetDatetime);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::OffsetDatetime));
|
|
|
|
BOOST_CHECK(v1.is<toml::OffsetDatetime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_offset_datetime());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::OffsetDatetime>(),
|
|
|
|
toml::offset_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Jan, 31),
|
|
|
|
toml::local_time(12, 30, 45),
|
|
|
|
toml::time_offset(9, 0)
|
|
|
|
));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_offset_datetime(),
|
|
|
|
toml::offset_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Jan, 31),
|
|
|
|
toml::local_time(12, 30, 45),
|
|
|
|
toml::time_offset(9, 0)
|
|
|
|
));
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = toml::offset_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30),
|
|
|
|
toml::time_offset(9, 0));
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::OffsetDatetime);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::OffsetDatetime));
|
|
|
|
BOOST_CHECK(v1.is<toml::OffsetDatetime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_offset_datetime());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::OffsetDatetime>(),
|
|
|
|
toml::offset_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30),
|
|
|
|
toml::time_offset(9, 0)));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_offset_datetime(),
|
|
|
|
toml::offset_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30),
|
|
|
|
toml::time_offset(9, 0)));
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v2(v1);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v2 == v1);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::OffsetDatetime);
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::OffsetDatetime));
|
|
|
|
BOOST_CHECK(v2.is<toml::OffsetDatetime>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v2.is_offset_datetime());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::OffsetDatetime>(),
|
|
|
|
toml::offset_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30),
|
|
|
|
toml::time_offset(9, 0)));
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.as_offset_datetime(),
|
|
|
|
toml::offset_datetime(
|
|
|
|
toml::local_date(2018, toml::month_t::Apr, 1),
|
|
|
|
toml::local_time(1, 15, 30),
|
|
|
|
toml::time_offset(9, 0)));
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
v1 = true;
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
2018-12-09 09:03:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_value_array)
|
|
|
|
{
|
|
|
|
std::vector<int> v{1,2,3,4,5};
|
|
|
|
toml::value v1(v);
|
|
|
|
toml::value v2{6,7,8,9,0};
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Array);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Array));
|
|
|
|
BOOST_CHECK(v1.is<toml::Array>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_array());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Array);
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Array));
|
|
|
|
BOOST_CHECK(v2.is<toml::Array>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v2.is_array());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(0).cast<toml::value_t::Integer>(), 1);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(1).cast<toml::value_t::Integer>(), 2);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(2).cast<toml::value_t::Integer>(), 3);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(3).cast<toml::value_t::Integer>(), 4);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(4).cast<toml::value_t::Integer>(), 5);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(0).as_integer(), 1);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(1).as_integer(), 2);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(2).as_integer(), 3);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(3).as_integer(), 4);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(4).as_integer(), 5);
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(0).cast<toml::value_t::Integer>(), 6);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(1).cast<toml::value_t::Integer>(), 7);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(2).cast<toml::value_t::Integer>(), 8);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(3).cast<toml::value_t::Integer>(), 9);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(4).cast<toml::value_t::Integer>(), 0);
|
|
|
|
|
|
|
|
v1 = {6,7,8,9,0};
|
|
|
|
v2 = v;
|
2017-04-20 01:48:59 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Array);
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Array));
|
|
|
|
BOOST_CHECK(v1.is<toml::Array>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_array());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.type(), toml::value_t::Array);
|
|
|
|
BOOST_CHECK(v2.is(toml::value_t::Array));
|
|
|
|
BOOST_CHECK(v2.is<toml::Array>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v2.is_array());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(0).cast<toml::value_t::Integer>(), 6);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(1).cast<toml::value_t::Integer>(), 7);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(2).cast<toml::value_t::Integer>(), 8);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(3).cast<toml::value_t::Integer>(), 9);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Array>().at(4).cast<toml::value_t::Integer>(), 0);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(0).as_integer(), 6);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(1).as_integer(), 7);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(2).as_integer(), 8);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(3).as_integer(), 9);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_array().at(4).as_integer(), 0);
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(0).cast<toml::value_t::Integer>(), 1);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(1).cast<toml::value_t::Integer>(), 2);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(2).cast<toml::value_t::Integer>(), 3);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(3).cast<toml::value_t::Integer>(), 4);
|
|
|
|
BOOST_CHECK_EQUAL(v2.cast<toml::value_t::Array>().at(4).cast<toml::value_t::Integer>(), 5);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v2.as_array().at(0).as_integer(), 1);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_array().at(1).as_integer(), 2);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_array().at(2).as_integer(), 3);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_array().at(3).as_integer(), 4);
|
|
|
|
BOOST_CHECK_EQUAL(v2.as_array().at(4).as_integer(), 5);
|
|
|
|
|
2017-04-20 01:48:59 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
toml::value v3(v1);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v3 == v1);
|
2017-04-20 01:48:59 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::Array);
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::Array));
|
|
|
|
BOOST_CHECK(v3.is<toml::Array>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v3.is_array());
|
2017-04-20 01:48:59 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Array>().at(0).cast<toml::value_t::Integer>(), 6);
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Array>().at(1).cast<toml::value_t::Integer>(), 7);
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Array>().at(2).cast<toml::value_t::Integer>(), 8);
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Array>().at(3).cast<toml::value_t::Integer>(), 9);
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Array>().at(4).cast<toml::value_t::Integer>(), 0);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.as_array().at(0).as_integer(), 6);
|
|
|
|
BOOST_CHECK_EQUAL(v3.as_array().at(1).as_integer(), 7);
|
|
|
|
BOOST_CHECK_EQUAL(v3.as_array().at(2).as_integer(), 8);
|
|
|
|
BOOST_CHECK_EQUAL(v3.as_array().at(3).as_integer(), 9);
|
|
|
|
BOOST_CHECK_EQUAL(v3.as_array().at(4).as_integer(), 0);
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = true;
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
2018-12-09 09:03:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_value_table)
|
|
|
|
{
|
|
|
|
toml::value v1{{"foo", 42}, {"bar", 3.14}, {"baz", "qux"}};
|
2017-04-20 01:48:59 +00:00
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Table);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Table));
|
|
|
|
BOOST_CHECK(v1.is<toml::Table>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_table());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Table>().at("foo").cast<toml::value_t::Integer>(), 42);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Table>().at("bar").cast<toml::value_t::Float>(), 3.14);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Table>().at("baz").cast<toml::value_t::String>().str, "qux");
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_table().at("foo").as_integer(), 42);
|
2019-04-27 07:45:25 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_table().at("bar").as_float(), 3.14);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_table().at("baz").as_string().str, "qux");
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = toml::table{{"foo", 2.71}, {"bar", 54}, {"baz", "quux"}};
|
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Table);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Table));
|
|
|
|
BOOST_CHECK(v1.is<toml::Table>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_table());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Table>().at("foo").cast<toml::value_t::Float>(), 2.71);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Table>().at("bar").cast<toml::value_t::Integer>(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Table>().at("baz").cast<toml::value_t::String>().str, "quux");
|
2019-04-27 07:45:25 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_table().at("foo").as_float(), 2.71);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_table().at("bar").as_integer(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v1.as_table().at("baz").as_string().str, "quux");
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
toml::value v3(v1);
|
2018-12-11 14:33:32 +00:00
|
|
|
BOOST_CHECK(v3 == v1);
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.type(), toml::value_t::Table);
|
|
|
|
BOOST_CHECK(v3.is(toml::value_t::Table));
|
|
|
|
BOOST_CHECK(v3.is<toml::Table>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v3.is_table());
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Table>().at("foo").cast<toml::value_t::Float>(), 2.71);
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Table>().at("bar").cast<toml::value_t::Integer>(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v3.cast<toml::value_t::Table>().at("baz").cast<toml::value_t::String>().str, "quux");
|
2019-04-27 07:45:25 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.as_table().at("foo").as_float(), 2.71);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v3.as_table().at("bar").as_integer(), 54);
|
|
|
|
BOOST_CHECK_EQUAL(v3.as_table().at("baz").as_string().str, "quux");
|
|
|
|
|
2018-12-09 09:03:20 +00:00
|
|
|
|
|
|
|
v1 = true;
|
|
|
|
BOOST_CHECK_EQUAL(v1.type(), toml::value_t::Boolean);
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Boolean));
|
|
|
|
BOOST_CHECK(v1.is<toml::Boolean>());
|
2019-03-12 11:44:27 +00:00
|
|
|
BOOST_CHECK(v1.is_boolean());
|
2018-12-09 09:03:20 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.cast<toml::value_t::Boolean>(), true);
|
2019-04-27 07:22:50 +00:00
|
|
|
BOOST_CHECK_EQUAL(v1.as_boolean(), true);
|
2017-04-20 01:48:59 +00:00
|
|
|
}
|
2019-03-12 11:44:27 +00:00
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_value_empty)
|
|
|
|
{
|
|
|
|
toml::value v1;
|
|
|
|
BOOST_CHECK(v1.is_uninitialized());
|
|
|
|
BOOST_CHECK(v1.is(toml::value_t::Empty));
|
|
|
|
}
|