#define BOOST_TEST_MODULE "test_parse_unicode" #ifdef UNITTEST_FRAMEWORK_LIBRARY_EXIST #include #else #define BOOST_TEST_NO_LIB #include #endif #include #include #include BOOST_AUTO_TEST_CASE(test_hard_example_unicode) { const auto data = toml::parse("toml/tests/hard_example_unicode.toml"); const auto the = toml::get(data.at("the")); BOOST_CHECK_EQUAL(toml::get(the.at("test_string")), std::string(u8"Ýôú'ℓℓ λáƭè ₥è áƒƭèř ƭλïƨ - #")); const auto hard = toml::get(the.at("hard")); const std::vector expected_the_hard_test_array{"] ", " # "}; BOOST_CHECK(toml::get>(hard.at("test_array")) == expected_the_hard_test_array); const std::vector expected_the_hard_test_array2{ std::string(u8"Tèƨƭ #11 ]ƥřôƲèδ ƭλáƭ"), std::string(u8"Éжƥèřï₥èñƭ #9 ωáƨ á ƨúççèƨƨ")}; BOOST_CHECK(toml::get>(hard.at("test_array2")) == expected_the_hard_test_array2); BOOST_CHECK_EQUAL(toml::get(hard.at("another_test_string")), std::string(u8"§á₥è ƭλïñϱ, βúƭ ωïƭλ á ƨƭřïñϱ #")); BOOST_CHECK_EQUAL(toml::get(hard.at("harder_test_string")), std::string(u8" Âñδ ωλèñ \"'ƨ ářè ïñ ƭλè ƨƭřïñϱ, áℓôñϱ ωïƭλ # \"")); const auto bit = toml::get(hard.at(std::string(u8"βïƭ#"))); BOOST_CHECK_EQUAL(toml::get(bit.at(std::string(u8"ωλáƭ?"))), std::string(u8"Ýôú δôñ'ƭ ƭλïñƙ ƨô₥è úƨèř ωôñ'ƭ δô ƭλáƭ?")); const std::vector expected_multi_line_array{"]"}; BOOST_CHECK(toml::get>(bit.at("multi_line_array")) == expected_multi_line_array); }