mirror of
https://github.com/marzer/tomlplusplus.git
synced 2024-09-04 14:09:11 +00:00
also: - added `at_path()` (closes #118) - added `node_view::operator==` - updated conformance tests
1842 lines
57 KiB
C++
1842 lines
57 KiB
C++
// This file is a part of toml++ and is subject to the the terms of the MIT license.
|
|
// Copyright (c) Mark Gillard <mark.gillard@outlook.com.au>
|
|
// See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text.
|
|
// SPDX-License-Identifier: MIT
|
|
//-----
|
|
// this file was generated by generate_conformance_tests.py - do not modify it directly
|
|
|
|
#include "tests.h"
|
|
|
|
namespace
|
|
{
|
|
static constexpr auto spec_array_1 = "integers = [ 1, 2, 3 ]"sv;
|
|
static constexpr auto spec_array_2 = "colors = [ \"red\", \"yellow\", \"green\" ]"sv;
|
|
static constexpr auto spec_array_3 = "nested_array_of_int = [ [ 1, 2 ], [3, 4, 5] ]"sv;
|
|
static constexpr auto spec_array_4 = "string_array = [ \"all\", 'strings', \"\"\"are the same\"\"\", '''type''']"sv;
|
|
static constexpr auto spec_array_5 = "nested_mixed_array = [ [ 1, 2 ], [\"a\", \"b\", \"c\"] ]"sv;
|
|
static constexpr auto spec_array_7 = "integers2 = [\r\n"
|
|
" 1, 2, 3\r\n"
|
|
"]"sv;
|
|
static constexpr auto spec_array_8 = "integers3 = [\r\n"
|
|
" 1,\r\n"
|
|
" 2, # this is ok\r\n"
|
|
"]"sv;
|
|
static constexpr auto spec_array_mixed_number_types = "numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]"sv;
|
|
static constexpr auto spec_array_more_mixed_types =
|
|
"contributors = [\r\n"
|
|
" \"Foo Bar <foo@example.com>\",\r\n"
|
|
" { name = \"Baz Qux\", email = \"bazqux@example.com\", url = \"https://example.com/bazqux\" }\r\n"
|
|
"]"sv;
|
|
static constexpr auto spec_array_of_tables_1 = "[[products]]\r\n"
|
|
"name = \"Hammer\"\r\n"
|
|
"sku = 738594937\r\n"
|
|
"\r\n"
|
|
"[[products]]\r\n"
|
|
"\r\n"
|
|
"[[products]]\r\n"
|
|
"name = \"Nail\"\r\n"
|
|
"sku = 284758393\r\n"
|
|
"color = \"gray\""sv;
|
|
static constexpr auto spec_array_of_tables_2 = "[[fruit]]\r\n"
|
|
" name = \"apple\"\r\n"
|
|
"\r\n"
|
|
" [fruit.physical]\r\n"
|
|
" color = \"red\"\r\n"
|
|
" shape = \"round\"\r\n"
|
|
"\r\n"
|
|
" [[fruit.variety]]\r\n"
|
|
" name = \"red delicious\"\r\n"
|
|
"\r\n"
|
|
" [[fruit.variety]]\r\n"
|
|
" name = \"granny smith\"\r\n"
|
|
"\r\n"
|
|
"[[fruit]]\r\n"
|
|
" name = \"banana\"\r\n"
|
|
"\r\n"
|
|
" [[fruit.variety]]\r\n"
|
|
" name = \"plantain\""sv;
|
|
static constexpr auto spec_array_of_tables_3 = "points = [ { x = 1, y = 2, z = 3 },\r\n"
|
|
" { x = 7, y = 8, z = 9 },\r\n"
|
|
" { x = 2, y = 4, z = 8 } ]"sv;
|
|
static constexpr auto spec_boolean_1 = "bool1 = true"sv;
|
|
static constexpr auto spec_boolean_2 = "bool1 = false"sv;
|
|
static constexpr auto spec_case_sensitive = "# TOML is case sensitive.\r\n"
|
|
"abc = 123\r\n"
|
|
"ABC = 456"sv;
|
|
static constexpr auto spec_comment_mid_array = "# eol commetns can go anywhere\r\n"
|
|
"abc = [ # this is valid\r\n"
|
|
" 123,#as is this\r\n"
|
|
" 456 #so is this\r\n"
|
|
" ]# and this\r\n"
|
|
"# here too"sv;
|
|
static constexpr auto spec_comment_mid_string = "another = \"# This is not a comment\""sv;
|
|
static constexpr auto spec_comment_tab =
|
|
"# This is a full-line comment with a tab in the middle\r\n"
|
|
"key = \"value\" # This is a commen with a tab in the middle at the end of a line"sv;
|
|
static constexpr auto spec_comment = "# This is a full-line comment\r\n"
|
|
"key = \"value\" # This is a comment at the end of a line"sv;
|
|
static constexpr auto spec_date_local_1 = "ld1 = 1979-05-27"sv;
|
|
static constexpr auto spec_date_time_1 = "odt1 = 1979-05-27T07:32:00Z"sv;
|
|
static constexpr auto spec_date_time_2 = "odt2 = 1979-05-27T00:32:00-07:00"sv;
|
|
static constexpr auto spec_date_time_3 = "odt3 = 1979-05-27T00:32:00.999999-07:00"sv;
|
|
static constexpr auto spec_date_time_4 = "odt4 = 1979-05-27 07:32:00Z"sv;
|
|
static constexpr auto spec_date_time_5 = "odt5 = 1979-05-27T07:32:00.123Z"sv;
|
|
static constexpr auto spec_date_time_local_1 = "ldt1 = 1979-05-27T07:32:00"sv;
|
|
static constexpr auto spec_dotted_keys_1 = "name = \"Orange\"\r\n"
|
|
"physical.color = \"orange\"\r\n"
|
|
"physical.shape = \"round\"\r\n"
|
|
"site.\"google.com\" = true"sv;
|
|
static constexpr auto spec_dotted_keys_2 = "a . b = 23"sv;
|
|
static constexpr auto spec_dotted_keys_3 = "a . b = 23"sv;
|
|
static constexpr auto spec_empty_key_name_1 = "\"\" = \"blank\" # VALID but discouraged"sv;
|
|
static constexpr auto spec_empty_key_name_2 = "'' = \"blank\" # VALID but discouraged"sv;
|
|
static constexpr auto spec_extend_dotted_object_1 = "# This makes the key \"fruit\" into a table.\r\n"
|
|
"fruit.apple.smooth = true\r\n"
|
|
"\r\n"
|
|
"# So then you can add to the table \"fruit\" like so:\r\n"
|
|
"fruit.orange = 2"sv;
|
|
static constexpr auto spec_extend_dotted_object_2 = "# VALID BUT DISCOURAGED\r\n"
|
|
"\r\n"
|
|
"apple.type = \"fruit\"\r\n"
|
|
"orange.type = \"fruit\"\r\n"
|
|
"\r\n"
|
|
"apple.skin = \"thin\"\r\n"
|
|
"orange.skin = \"thick\"\r\n"
|
|
"\r\n"
|
|
"apple.color = \"red\"\r\n"
|
|
"orange.color = \"orange\""sv;
|
|
static constexpr auto spec_extend_dotted_object_3 = "# RECOMMENDED\r\n"
|
|
"\r\n"
|
|
"apple.type = \"fruit\"\r\n"
|
|
"apple.skin = \"thin\"\r\n"
|
|
"apple.color = \"red\"\r\n"
|
|
"\r\n"
|
|
"orange.type = \"fruit\"\r\n"
|
|
"orange.skin = \"thick\"\r\n"
|
|
"orange.color = \"orange\""sv;
|
|
static constexpr auto spec_float_1 = "flt1 = +1.0"sv;
|
|
static constexpr auto spec_float_10 = "sf1 = inf # positive infinity"sv;
|
|
static constexpr auto spec_float_11 = "sf2 = +inf # positive infinity"sv;
|
|
static constexpr auto spec_float_12 = "sf2 = -inf # negative infinity"sv;
|
|
static constexpr auto spec_float_13 = "sf4 = nan # actual sNaN/qNaN encoding is implementation specific"sv;
|
|
static constexpr auto spec_float_14 = "sf5 = +nan # same as `nan`"sv;
|
|
static constexpr auto spec_float_15 = "sf6 = -nan # valid, actual encoding is implementation specific"sv;
|
|
static constexpr auto spec_float_2 = "flt2 = 3.1415"sv;
|
|
static constexpr auto spec_float_3 = "flt3 = -0.01"sv;
|
|
static constexpr auto spec_float_4 = "flt4 = 5e+22"sv;
|
|
static constexpr auto spec_float_5 = "flt5 = 1e06"sv;
|
|
static constexpr auto spec_float_6 = "flt6 = -2E-2"sv;
|
|
static constexpr auto spec_float_7 = "flt7 = 6.626e-34"sv;
|
|
static constexpr auto spec_float_8 = "flt8 = 224_617.445_991_228"sv;
|
|
static constexpr auto spec_float_9 = "flt9 = -0e0"sv;
|
|
static constexpr auto spec_int_1 = "int1 = +99"sv;
|
|
static constexpr auto spec_int_2 = "int2 = 42"sv;
|
|
static constexpr auto spec_int_3 = "int3 = 0"sv;
|
|
static constexpr auto spec_int_3a = "int3 = +0"sv;
|
|
static constexpr auto spec_int_3b = "int3 = -0"sv;
|
|
static constexpr auto spec_int_4 = "int4 = -17"sv;
|
|
static constexpr auto spec_int_5 = "int5 = 1_000"sv;
|
|
static constexpr auto spec_int_6 = "int6 = 5_349_221"sv;
|
|
static constexpr auto spec_int_7 = "int7 = 1_2_3_4_5 # VALID but discouraged"sv;
|
|
static constexpr auto spec_int_bin1 = "bin1 = 0b11010110"sv;
|
|
static constexpr auto spec_int_hex1 = "hex1 = 0xDEADBEEF"sv;
|
|
static constexpr auto spec_int_hex2 = "hex2 = 0xdeadbeef"sv;
|
|
static constexpr auto spec_int_hex3 = "hex3 = 0xdead_beef"sv;
|
|
static constexpr auto spec_int_max = "max=9_223_372_036_854_775_807"sv;
|
|
static constexpr auto spec_int_min = "min=-9_223_372_036_854_775_808"sv;
|
|
static constexpr auto spec_int_oct1 = "oct1 = 0o01234567"sv;
|
|
static constexpr auto spec_int_oct2 = "oct2 = 0o755 # useful for Unix file permissions"sv;
|
|
static constexpr auto spec_key_value_pair_1 = "key = \"value\""sv;
|
|
static constexpr auto spec_key_value_pair_2 = "bare_key = \"value\""sv;
|
|
static constexpr auto spec_key_value_pair_3 = "bare-key = \"value\""sv;
|
|
static constexpr auto spec_key_value_pair_4 = "1234 = \"value\""sv;
|
|
static constexpr auto spec_key_value_pair_5 = "1234=\"value\""sv;
|
|
static constexpr auto spec_key_value_pair_6 = "-=1"sv;
|
|
static constexpr auto spec_key_value_pair_7 = "_=1"sv;
|
|
static constexpr auto spec_key_value_pair_8 = "-_-_-_-_-=1"sv;
|
|
static constexpr auto spec_key_value_pair_9 = "3.14159 = \"pi\""sv;
|
|
static constexpr auto spec_newline_1 = R"(abc = 123
|
|
def = 456)"sv;
|
|
static constexpr auto spec_newline_2 = "abc = 123\r\n"
|
|
"def = 456"sv;
|
|
static constexpr auto spec_newline_3 = "abc = 123\r\n"
|
|
"def = 456\n"
|
|
"ghi = 789"sv;
|
|
static constexpr auto spec_quoted_literal_keys_1 = "'quoted \"value\"' = \"value\""sv;
|
|
static constexpr auto spec_readme_example = "# This is a TOML document.\r\n"
|
|
"\r\n"
|
|
"title = \"TOML Example\"\r\n"
|
|
"\r\n"
|
|
"[owner]\r\n"
|
|
"name = \"Tom Preston-Werner\"\r\n"
|
|
"dob = 1979-05-27T07:32:00-08:00 # First class dates\r\n"
|
|
"\r\n"
|
|
"[database]\r\n"
|
|
"server = \"192.168.1.1\"\r\n"
|
|
"ports = [ 8001, 8001, 8002 ]\r\n"
|
|
"connection_max = 5000\r\n"
|
|
"enabled = true\r\n"
|
|
"\r\n"
|
|
"[servers]\r\n"
|
|
"\r\n"
|
|
" # Indentation (tabs and/or spaces) is allowed but not required\r\n"
|
|
" [servers.alpha]\r\n"
|
|
" ip = \"10.0.0.1\"\r\n"
|
|
" dc = \"eqdc10\"\r\n"
|
|
"\r\n"
|
|
" [servers.beta]\r\n"
|
|
" ip = \"10.0.0.2\"\r\n"
|
|
" dc = \"eqdc10\"\r\n"
|
|
"\r\n"
|
|
"[clients]\r\n"
|
|
"data = [ [\"gamma\", \"delta\"], [1, 2] ]\r\n"
|
|
"\r\n"
|
|
"# Line breaks are OK when inside arrays\r\n"
|
|
"hosts = [\r\n"
|
|
" \"alpha\",\r\n"
|
|
" \"omega\"\r\n"
|
|
"]"sv;
|
|
static constexpr auto spec_string_basic_multiline_1 = "str1 = \"\"\"\r\n"
|
|
"Roses are red\r\n"
|
|
"Violets are blue\"\"\""sv;
|
|
static constexpr auto spec_string_basic_multiline_2 = "str = \"\"\"\r\n"
|
|
"The quick brown \\\r\n"
|
|
"\r\n"
|
|
"\r\n"
|
|
" fox jumps over \\\r\n"
|
|
" the lazy dog.\"\"\""sv;
|
|
static constexpr auto spec_string_basic_multiline_3 = "str = \"\"\"\\\r\n"
|
|
" The quick brown \\\r\n"
|
|
" fox jumps over \\\r\n"
|
|
" the lazy dog.\\\r\n"
|
|
" \"\"\""sv;
|
|
static constexpr auto spec_string_basic_multiline_4 = "a = \"\"\"abc\\ \r\n"
|
|
"def\"\"\""sv;
|
|
static constexpr auto spec_string_basic_multiline_5 = "ml-escaped-nl = \"\"\"\r\n"
|
|
" foo \\\r\n"
|
|
" bar \\\\\r\n"
|
|
" baz \\\\\\\r\n"
|
|
" quux\"\"\""sv;
|
|
static constexpr auto spec_string_basic_multiline_6 =
|
|
"str4 = \"\"\"Here are two quotation marks: \"\". Simple enough.\"\"\""sv;
|
|
static constexpr auto spec_string_basic_multiline_7 =
|
|
"str5 = \"\"\"Here are three quotation marks: \"\"\\\".\"\"\""sv;
|
|
static constexpr auto spec_string_basic_multiline_8 =
|
|
"str6 = \"\"\"Here are fifteen quotation marks: \"\"\\\"\"\"\\\"\"\"\\\"\"\"\\\"\"\"\\\".\"\"\""sv;
|
|
static constexpr auto spec_string_basic_multiline_9 =
|
|
"str7 = \"\"\"\"This,\" she said, \"is just a pointless statement.\"\"\"\""sv;
|
|
static constexpr auto spec_string_basic_tab_multiline = "str = \"\"\"This is a tab\"\"\""sv;
|
|
static constexpr auto spec_string_basic_tab = "str = \"This is a tab\""sv;
|
|
static constexpr auto spec_string_escape_1 = "a = \"\\b\""sv;
|
|
static constexpr auto spec_string_escape_2 = "a = \"\\t\""sv;
|
|
static constexpr auto spec_string_escape_3 = "a = \"\\n\""sv;
|
|
static constexpr auto spec_string_escape_4 = "a = \"\\f\""sv;
|
|
static constexpr auto spec_string_escape_5 = "a = \"\\r\""sv;
|
|
static constexpr auto spec_string_escape_6 = "a = \"\\\"\""sv;
|
|
static constexpr auto spec_string_escape_7 = "a = \"\\\\\""sv;
|
|
static constexpr auto spec_string_escape_8 = "a = \"\\u0000\""sv;
|
|
static constexpr auto spec_string_escape_9 = "a = \"\\U00000000\""sv;
|
|
static constexpr auto spec_string_literal_1 = "winpath = 'C:\\Users\\nodejs\\templates'"sv;
|
|
static constexpr auto spec_string_literal_2 = "winpath2 = '\\\\ServerX\\admin$\\system32\\'"sv;
|
|
static constexpr auto spec_string_literal_3 = "quoted = 'Tom \"Dubs\" Preston-Werner'"sv;
|
|
static constexpr auto spec_string_literal_4 = "regex = '<\\i\\c*\\s*>'"sv;
|
|
static constexpr auto spec_string_literal_multiline_1 = "regex2 = '''I [dw]on't need \\d{2} apples'''"sv;
|
|
static constexpr auto spec_string_literal_multiline_2 = "lines = '''\r\n"
|
|
"The first newline is\r\n"
|
|
"trimmed in raw strings.\r\n"
|
|
" All other whitespace\r\n"
|
|
" is preserved.\r\n"
|
|
"'''"sv;
|
|
static constexpr auto spec_string_literal_multiline_3 =
|
|
"quot15 = '''Here are fifteen quotation marks: \"\"\"\"\"\"\"\"\"\"\"\"\"\"\"'''"sv;
|
|
static constexpr auto spec_string_literal_multiline_4 = "str = ''''That,' she said, 'is still pointless.''''"sv;
|
|
static constexpr auto spec_table_1 = "[table-1]\r\n"
|
|
"key1 = \"some string\"\r\n"
|
|
"key2 = 123\r\n"
|
|
"\r\n"
|
|
"[table-2]\r\n"
|
|
"key1 = \"another string\"\r\n"
|
|
"key2 = 456"sv;
|
|
static constexpr auto spec_table_2 = "[dog.\"tater.man\"]\r\n"
|
|
"type.name = \"pug\""sv;
|
|
static constexpr auto spec_table_3 = "[a.b.c]"sv;
|
|
static constexpr auto spec_table_4 = "[ d.e.f ] # same as [d.e.f]"sv;
|
|
static constexpr auto spec_table_5 = "[ g . h . i ] # same as [g.h.i]"sv;
|
|
static constexpr auto spec_table_7 = "# [x] you\r\n"
|
|
"# [x.y] don't\r\n"
|
|
"# [x.y.z] need these\r\n"
|
|
"[x.y.z.w] # for this to work\r\n"
|
|
"[x] # defining a super-table afterwards is ok"sv;
|
|
static constexpr auto spec_table_8 = "[fruit]\r\n"
|
|
"apple.color = \"red\"\r\n"
|
|
"apple.taste.sweet = true\r\n"
|
|
"\r\n"
|
|
"[fruit.apple.texture] # you can add sub-tables\r\n"
|
|
"smooth = true"sv;
|
|
static constexpr auto spec_table_inline_1 = "name = { first = \"Tom\", last = \"Preston-Werner\" }"sv;
|
|
static constexpr auto spec_table_inline_2 = "point = { x = 1, y = 2 }"sv;
|
|
static constexpr auto spec_table_inline_3 = "animal = { type.name = \"pug\" } "sv;
|
|
static constexpr auto spec_table = "[table]"sv;
|
|
static constexpr auto spec_time_1 = "lt1 = 07:32:00"sv;
|
|
|
|
#if UNICODE_LITERALS_OK
|
|
|
|
static constexpr auto spec_quoted_basic_keys_1 = "\"ʎǝʞ\" = \"value\""sv;
|
|
static constexpr auto spec_string_basic =
|
|
"str = \"I'm a string. \\\"You can quote me\\\". Name\\tJos\\u00E9\\nLocation\\tSF.\""sv;
|
|
static constexpr auto spec_table_6 = "[ j . \"ʞ\" . 'l' ] # same as [j.\"ʞ\".'l']"sv;
|
|
|
|
#endif // UNICODE_LITERALS_OK
|
|
}
|
|
|
|
TEST_CASE("conformance - iarna/valid")
|
|
{
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_1,
|
|
[](toml::table&& tbl) // spec-array-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(integers)"sv,
|
|
toml::array{
|
|
1,
|
|
2,
|
|
3,
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_2,
|
|
[](toml::table&& tbl) // spec-array-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(colors)"sv,
|
|
toml::array{
|
|
R"(red)"sv,
|
|
R"(yellow)"sv,
|
|
R"(green)"sv,
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_3,
|
|
[](toml::table&& tbl) // spec-array-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(nested_array_of_int)"sv,
|
|
toml::array{
|
|
toml::array{
|
|
1,
|
|
2,
|
|
},
|
|
toml::array{
|
|
3,
|
|
4,
|
|
5,
|
|
},
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_4,
|
|
[](toml::table&& tbl) // spec-array-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(string_array)"sv,
|
|
toml::array{
|
|
R"(all)"sv,
|
|
R"(strings)"sv,
|
|
R"(are the same)"sv,
|
|
R"(type)"sv,
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_5,
|
|
[](toml::table&& tbl) // spec-array-5
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(nested_mixed_array)"sv,
|
|
toml::array{
|
|
toml::array{
|
|
1,
|
|
2,
|
|
},
|
|
toml::array{
|
|
R"(a)"sv,
|
|
R"(b)"sv,
|
|
R"(c)"sv,
|
|
},
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_7,
|
|
[](toml::table&& tbl) // spec-array-7
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(integers2)"sv,
|
|
toml::array{
|
|
1,
|
|
2,
|
|
3,
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_8,
|
|
[](toml::table&& tbl) // spec-array-8
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(integers3)"sv,
|
|
toml::array{
|
|
1,
|
|
2,
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_mixed_number_types,
|
|
[](toml::table&& tbl) // spec-array-mixed-number-types
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(numbers)"sv,
|
|
toml::array{
|
|
0.1,
|
|
0.2,
|
|
0.5,
|
|
1,
|
|
2,
|
|
5,
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_more_mixed_types,
|
|
[](toml::table&& tbl) // spec-array-more-mixed-types
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(contributors)"sv,
|
|
toml::array{
|
|
R"(Foo Bar <foo@example.com>)"sv,
|
|
toml::table{
|
|
{ R"(name)"sv, R"(Baz Qux)"sv },
|
|
{ R"(email)"sv, R"(bazqux@example.com)"sv },
|
|
{ R"(url)"sv, R"(https://example.com/bazqux)"sv },
|
|
},
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_of_tables_1,
|
|
[](toml::table&& tbl) // spec-array-of-tables-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(products)"sv,
|
|
toml::array{
|
|
toml::table{
|
|
{ R"(name)"sv, R"(Hammer)"sv },
|
|
{ R"(sku)"sv, 738594937 },
|
|
},
|
|
toml::table{},
|
|
toml::table{
|
|
{ R"(name)"sv, R"(Nail)"sv },
|
|
{ R"(sku)"sv, 284758393 },
|
|
{ R"(color)"sv, R"(gray)"sv },
|
|
},
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_of_tables_2,
|
|
[](toml::table&& tbl) // spec-array-of-tables-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(fruit)"sv,
|
|
toml::array{
|
|
toml::table{
|
|
{ R"(name)"sv, R"(apple)"sv },
|
|
{ R"(physical)"sv,
|
|
toml::table{
|
|
{ R"(color)"sv, R"(red)"sv },
|
|
{ R"(shape)"sv, R"(round)"sv },
|
|
} },
|
|
{ R"(variety)"sv,
|
|
toml::array{
|
|
toml::table{
|
|
{ R"(name)"sv, R"(red delicious)"sv },
|
|
},
|
|
toml::table{
|
|
{ R"(name)"sv, R"(granny smith)"sv },
|
|
},
|
|
} },
|
|
},
|
|
toml::table{
|
|
{ R"(name)"sv, R"(banana)"sv },
|
|
{ R"(variety)"sv,
|
|
toml::array{
|
|
toml::table{
|
|
{ R"(name)"sv, R"(plantain)"sv },
|
|
},
|
|
} },
|
|
},
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_array_of_tables_3,
|
|
[](toml::table&& tbl) // spec-array-of-tables-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(points)"sv,
|
|
toml::array{
|
|
toml::table{
|
|
{ R"(x)"sv, 1 },
|
|
{ R"(y)"sv, 2 },
|
|
{ R"(z)"sv, 3 },
|
|
},
|
|
toml::table{
|
|
{ R"(x)"sv, 7 },
|
|
{ R"(y)"sv, 8 },
|
|
{ R"(z)"sv, 9 },
|
|
},
|
|
toml::table{
|
|
{ R"(x)"sv, 2 },
|
|
{ R"(y)"sv, 4 },
|
|
{ R"(z)"sv, 8 },
|
|
},
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_boolean_1,
|
|
[](toml::table&& tbl) // spec-boolean-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(bool1)"sv, true },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_boolean_2,
|
|
[](toml::table&& tbl) // spec-boolean-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(bool1)"sv, false },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_case_sensitive,
|
|
[](toml::table&& tbl) // spec-case-sensitive
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(abc)"sv, 123 },
|
|
{ R"(ABC)"sv, 456 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_comment_mid_array,
|
|
[](toml::table&& tbl) // spec-comment-mid-array
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(abc)"sv,
|
|
toml::array{
|
|
123,
|
|
456,
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_comment_mid_string,
|
|
[](toml::table&& tbl) // spec-comment-mid-string
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(another)"sv, R"(# This is not a comment)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_comment_tab,
|
|
[](toml::table&& tbl) // spec-comment-tab
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(key)"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_comment,
|
|
[](toml::table&& tbl) // spec-comment
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(key)"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_date_local_1,
|
|
[](toml::table&& tbl) // spec-date-local-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(ld1)"sv, toml::date{ 1979, 5, 27 } },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_date_time_1,
|
|
[](toml::table&& tbl) // spec-date-time-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(odt1)"sv, toml::date_time{ { 1979, 5, 27 }, { 7, 32 }, { 0, 0 } } },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_date_time_2,
|
|
[](toml::table&& tbl) // spec-date-time-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(odt2)"sv, toml::date_time{ { 1979, 5, 27 }, { 0, 32 }, { -7, 0 } } },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(
|
|
FILE_LINE_ARGS,
|
|
spec_date_time_3,
|
|
[](toml::table&& tbl) // spec-date-time-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(odt3)"sv, toml::date_time{ { 1979, 5, 27 }, { 0, 32, 0, 999999000 }, { -7, 0 } } },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_date_time_4,
|
|
[](toml::table&& tbl) // spec-date-time-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(odt4)"sv, toml::date_time{ { 1979, 5, 27 }, { 7, 32 }, { 0, 0 } } },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(
|
|
FILE_LINE_ARGS,
|
|
spec_date_time_5,
|
|
[](toml::table&& tbl) // spec-date-time-5
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(odt5)"sv, toml::date_time{ { 1979, 5, 27 }, { 7, 32, 0, 123000000 }, { 0, 0 } } },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_date_time_local_1,
|
|
[](toml::table&& tbl) // spec-date-time-local-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(ldt1)"sv, toml::date_time{ { 1979, 5, 27 }, { 7, 32 } } },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_dotted_keys_1,
|
|
[](toml::table&& tbl) // spec-dotted-keys-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(name)"sv, R"(Orange)"sv },
|
|
{ R"(physical)"sv,
|
|
toml::table{
|
|
{ R"(color)"sv, R"(orange)"sv },
|
|
{ R"(shape)"sv, R"(round)"sv },
|
|
} },
|
|
{ R"(site)"sv,
|
|
toml::table{
|
|
{ R"(google.com)"sv, true },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_dotted_keys_2,
|
|
[](toml::table&& tbl) // spec-dotted-keys-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv,
|
|
toml::table{
|
|
{ R"(b)"sv, 23 },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_dotted_keys_3,
|
|
[](toml::table&& tbl) // spec-dotted-keys-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv,
|
|
toml::table{
|
|
{ R"(b)"sv, 23 },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_empty_key_name_1,
|
|
[](toml::table&& tbl) // spec-empty-key-name-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ ""sv, R"(blank)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_empty_key_name_2,
|
|
[](toml::table&& tbl) // spec-empty-key-name-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ ""sv, R"(blank)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_extend_dotted_object_1,
|
|
[](toml::table&& tbl) // spec-extend-dotted-object-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(fruit)"sv,
|
|
toml::table{
|
|
{ R"(apple)"sv,
|
|
toml::table{
|
|
{ R"(smooth)"sv, true },
|
|
} },
|
|
{ R"(orange)"sv, 2 },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_extend_dotted_object_2,
|
|
[](toml::table&& tbl) // spec-extend-dotted-object-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(apple)"sv,
|
|
toml::table{
|
|
{ R"(type)"sv, R"(fruit)"sv },
|
|
{ R"(skin)"sv, R"(thin)"sv },
|
|
{ R"(color)"sv, R"(red)"sv },
|
|
} },
|
|
{ R"(orange)"sv,
|
|
toml::table{
|
|
{ R"(type)"sv, R"(fruit)"sv },
|
|
{ R"(skin)"sv, R"(thick)"sv },
|
|
{ R"(color)"sv, R"(orange)"sv },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_extend_dotted_object_3,
|
|
[](toml::table&& tbl) // spec-extend-dotted-object-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(apple)"sv,
|
|
toml::table{
|
|
{ R"(type)"sv, R"(fruit)"sv },
|
|
{ R"(skin)"sv, R"(thin)"sv },
|
|
{ R"(color)"sv, R"(red)"sv },
|
|
} },
|
|
{ R"(orange)"sv,
|
|
toml::table{
|
|
{ R"(type)"sv, R"(fruit)"sv },
|
|
{ R"(skin)"sv, R"(thick)"sv },
|
|
{ R"(color)"sv, R"(orange)"sv },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_1,
|
|
[](toml::table&& tbl) // spec-float-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt1)"sv, 1.0 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_10,
|
|
[](toml::table&& tbl) // spec-float-10
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(sf1)"sv, std::numeric_limits<double>::infinity() },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_11,
|
|
[](toml::table&& tbl) // spec-float-11
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(sf2)"sv, std::numeric_limits<double>::infinity() },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_12,
|
|
[](toml::table&& tbl) // spec-float-12
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(sf2)"sv, -std::numeric_limits<double>::infinity() },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_13,
|
|
[](toml::table&& tbl) // spec-float-13
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(sf4)"sv, std::numeric_limits<double>::quiet_NaN() },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_14,
|
|
[](toml::table&& tbl) // spec-float-14
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(sf5)"sv, std::numeric_limits<double>::quiet_NaN() },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_15,
|
|
[](toml::table&& tbl) // spec-float-15
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(sf6)"sv, std::numeric_limits<double>::quiet_NaN() },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_2,
|
|
[](toml::table&& tbl) // spec-float-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt2)"sv, 3.1415 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_3,
|
|
[](toml::table&& tbl) // spec-float-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt3)"sv, -0.01 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_4,
|
|
[](toml::table&& tbl) // spec-float-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt4)"sv, 5e+22 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_5,
|
|
[](toml::table&& tbl) // spec-float-5
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt5)"sv, 1000000.0 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_6,
|
|
[](toml::table&& tbl) // spec-float-6
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt6)"sv, -0.02 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_7,
|
|
[](toml::table&& tbl) // spec-float-7
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt7)"sv, 6.626e-34 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_8,
|
|
[](toml::table&& tbl) // spec-float-8
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt8)"sv, 224617.445991228 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_float_9,
|
|
[](toml::table&& tbl) // spec-float-9
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(flt9)"sv, -0.0 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_1,
|
|
[](toml::table&& tbl) // spec-int-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int1)"sv, 99 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_2,
|
|
[](toml::table&& tbl) // spec-int-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int2)"sv, 42 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_3,
|
|
[](toml::table&& tbl) // spec-int-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int3)"sv, 0 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_3a,
|
|
[](toml::table&& tbl) // spec-int-3a
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int3)"sv, 0 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_3b,
|
|
[](toml::table&& tbl) // spec-int-3b
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int3)"sv, 0 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_4,
|
|
[](toml::table&& tbl) // spec-int-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int4)"sv, -17 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_5,
|
|
[](toml::table&& tbl) // spec-int-5
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int5)"sv, 1000 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_6,
|
|
[](toml::table&& tbl) // spec-int-6
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int6)"sv, 5349221 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_7,
|
|
[](toml::table&& tbl) // spec-int-7
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(int7)"sv, 12345 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_bin1,
|
|
[](toml::table&& tbl) // spec-int-bin1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(bin1)"sv, 214 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_hex1,
|
|
[](toml::table&& tbl) // spec-int-hex1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(hex1)"sv, 3735928559 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_hex2,
|
|
[](toml::table&& tbl) // spec-int-hex2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(hex2)"sv, 3735928559 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_hex3,
|
|
[](toml::table&& tbl) // spec-int-hex3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(hex3)"sv, 3735928559 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_max,
|
|
[](toml::table&& tbl) // spec-int-max
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(max)"sv, std::numeric_limits<int64_t>::max() },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_min,
|
|
[](toml::table&& tbl) // spec-int-min
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(min)"sv, std::numeric_limits<int64_t>::min() },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_oct1,
|
|
[](toml::table&& tbl) // spec-int-oct1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(oct1)"sv, 342391 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_int_oct2,
|
|
[](toml::table&& tbl) // spec-int-oct2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(oct2)"sv, 493 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_1,
|
|
[](toml::table&& tbl) // spec-key-value-pair-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(key)"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_2,
|
|
[](toml::table&& tbl) // spec-key-value-pair-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(bare_key)"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_3,
|
|
[](toml::table&& tbl) // spec-key-value-pair-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(bare-key)"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_4,
|
|
[](toml::table&& tbl) // spec-key-value-pair-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(1234)"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_5,
|
|
[](toml::table&& tbl) // spec-key-value-pair-5
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(1234)"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_6,
|
|
[](toml::table&& tbl) // spec-key-value-pair-6
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(-)"sv, 1 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_7,
|
|
[](toml::table&& tbl) // spec-key-value-pair-7
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(_)"sv, 1 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_8,
|
|
[](toml::table&& tbl) // spec-key-value-pair-8
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(-_-_-_-_-)"sv, 1 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_key_value_pair_9,
|
|
[](toml::table&& tbl) // spec-key-value-pair-9
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(3)"sv,
|
|
toml::table{
|
|
{ R"(14159)"sv, R"(pi)"sv },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_newline_1,
|
|
[](toml::table&& tbl) // spec-newline-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(abc)"sv, 123 },
|
|
{ R"(def)"sv, 456 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_newline_2,
|
|
[](toml::table&& tbl) // spec-newline-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(abc)"sv, 123 },
|
|
{ R"(def)"sv, 456 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_newline_3,
|
|
[](toml::table&& tbl) // spec-newline-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(abc)"sv, 123 },
|
|
{ R"(def)"sv, 456 },
|
|
{ R"(ghi)"sv, 789 },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_quoted_literal_keys_1,
|
|
[](toml::table&& tbl) // spec-quoted-literal-keys-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(quoted "value")"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_readme_example,
|
|
[](toml::table&& tbl) // spec-readme-example
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(title)"sv, R"(TOML Example)"sv },
|
|
{ R"(owner)"sv,
|
|
toml::table{
|
|
{ R"(name)"sv, R"(Tom Preston-Werner)"sv },
|
|
{ R"(dob)"sv, toml::date_time{ { 1979, 5, 27 }, { 7, 32 }, { -8, 0 } } },
|
|
} },
|
|
{ R"(database)"sv,
|
|
toml::table{
|
|
{ R"(server)"sv, R"(192.168.1.1)"sv },
|
|
{ R"(ports)"sv,
|
|
toml::array{
|
|
8001,
|
|
8001,
|
|
8002,
|
|
} },
|
|
{ R"(connection_max)"sv, 5000 },
|
|
{ R"(enabled)"sv, true },
|
|
} },
|
|
{ R"(servers)"sv,
|
|
toml::table{
|
|
{ R"(alpha)"sv,
|
|
toml::table{
|
|
{ R"(ip)"sv, R"(10.0.0.1)"sv },
|
|
{ R"(dc)"sv, R"(eqdc10)"sv },
|
|
} },
|
|
{ R"(beta)"sv,
|
|
toml::table{
|
|
{ R"(ip)"sv, R"(10.0.0.2)"sv },
|
|
{ R"(dc)"sv, R"(eqdc10)"sv },
|
|
} },
|
|
} },
|
|
{ R"(clients)"sv,
|
|
toml::table{
|
|
{ R"(data)"sv,
|
|
toml::array{
|
|
toml::array{
|
|
R"(gamma)"sv,
|
|
R"(delta)"sv,
|
|
},
|
|
toml::array{
|
|
1,
|
|
2,
|
|
},
|
|
} },
|
|
{ R"(hosts)"sv,
|
|
toml::array{
|
|
R"(alpha)"sv,
|
|
R"(omega)"sv,
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_1,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str1)"sv, R"(Roses are red
|
|
Violets are blue)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_2,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str)"sv, R"(The quick brown fox jumps over the lazy dog.)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_3,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str)"sv, R"(The quick brown fox jumps over the lazy dog.)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_4,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, R"(abcdef)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_5,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-5
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(ml-escaped-nl)"sv, R"( foo bar \
|
|
baz \quux)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_6,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-6
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str4)"sv, R"(Here are two quotation marks: "". Simple enough.)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_7,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-7
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str5)"sv, R"(Here are three quotation marks: """.)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_8,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-8
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str6)"sv, R"(Here are fifteen quotation marks: """"""""""""""".)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_multiline_9,
|
|
[](toml::table&& tbl) // spec-string-basic-multiline-9
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str7)"sv, R"("This," she said, "is just a pointless statement.")"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_tab_multiline,
|
|
[](toml::table&& tbl) // spec-string-basic-tab-multiline
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str)"sv, R"(This is a tab)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic_tab,
|
|
[](toml::table&& tbl) // spec-string-basic-tab
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str)"sv, R"(This is a tab)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_1,
|
|
[](toml::table&& tbl) // spec-string-escape-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, "\x08"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_2,
|
|
[](toml::table&& tbl) // spec-string-escape-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, R"( )"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_3,
|
|
[](toml::table&& tbl) // spec-string-escape-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, R"(
|
|
)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_4,
|
|
[](toml::table&& tbl) // spec-string-escape-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, "\f"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_5,
|
|
[](toml::table&& tbl) // spec-string-escape-5
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, "\r"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_6,
|
|
[](toml::table&& tbl) // spec-string-escape-6
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, R"(")"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_7,
|
|
[](toml::table&& tbl) // spec-string-escape-7
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, R"(\)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_8,
|
|
[](toml::table&& tbl) // spec-string-escape-8
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, "\x00"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_escape_9,
|
|
[](toml::table&& tbl) // spec-string-escape-9
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv, "\x00"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_literal_1,
|
|
[](toml::table&& tbl) // spec-string-literal-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(winpath)"sv, R"(C:\Users\nodejs\templates)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_literal_2,
|
|
[](toml::table&& tbl) // spec-string-literal-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(winpath2)"sv, R"(\\ServerX\admin$\system32\)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_literal_3,
|
|
[](toml::table&& tbl) // spec-string-literal-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(quoted)"sv, R"(Tom "Dubs" Preston-Werner)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_literal_4,
|
|
[](toml::table&& tbl) // spec-string-literal-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(regex)"sv, R"(<\i\c*\s*>)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_literal_multiline_1,
|
|
[](toml::table&& tbl) // spec-string-literal-multiline-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(regex2)"sv, R"(I [dw]on't need \d{2} apples)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_literal_multiline_2,
|
|
[](toml::table&& tbl) // spec-string-literal-multiline-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(lines)"sv, R"(The first newline is
|
|
trimmed in raw strings.
|
|
All other whitespace
|
|
is preserved.
|
|
)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_literal_multiline_3,
|
|
[](toml::table&& tbl) // spec-string-literal-multiline-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(quot15)"sv, R"(Here are fifteen quotation marks: """"""""""""""")"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_literal_multiline_4,
|
|
[](toml::table&& tbl) // spec-string-literal-multiline-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str)"sv, R"('That,' she said, 'is still pointless.')"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_1,
|
|
[](toml::table&& tbl) // spec-table-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(table-1)"sv,
|
|
toml::table{
|
|
{ R"(key1)"sv, R"(some string)"sv },
|
|
{ R"(key2)"sv, 123 },
|
|
} },
|
|
{ R"(table-2)"sv,
|
|
toml::table{
|
|
{ R"(key1)"sv, R"(another string)"sv },
|
|
{ R"(key2)"sv, 456 },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_2,
|
|
[](toml::table&& tbl) // spec-table-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(dog)"sv,
|
|
toml::table{
|
|
{ R"(tater.man)"sv,
|
|
toml::table{
|
|
{ R"(type)"sv,
|
|
toml::table{
|
|
{ R"(name)"sv, R"(pug)"sv },
|
|
} },
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_3,
|
|
[](toml::table&& tbl) // spec-table-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(a)"sv,
|
|
toml::table{
|
|
{ R"(b)"sv,
|
|
toml::table{
|
|
{ R"(c)"sv, toml::table{} },
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_4,
|
|
[](toml::table&& tbl) // spec-table-4
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(d)"sv,
|
|
toml::table{
|
|
{ R"(e)"sv,
|
|
toml::table{
|
|
{ R"(f)"sv, toml::table{} },
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_5,
|
|
[](toml::table&& tbl) // spec-table-5
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(g)"sv,
|
|
toml::table{
|
|
{ R"(h)"sv,
|
|
toml::table{
|
|
{ R"(i)"sv, toml::table{} },
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_7,
|
|
[](toml::table&& tbl) // spec-table-7
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(x)"sv,
|
|
toml::table{
|
|
{ R"(y)"sv,
|
|
toml::table{
|
|
{ R"(z)"sv,
|
|
toml::table{
|
|
{ R"(w)"sv, toml::table{} },
|
|
} },
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_8,
|
|
[](toml::table&& tbl) // spec-table-8
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(fruit)"sv,
|
|
toml::table{
|
|
{ R"(apple)"sv,
|
|
toml::table{
|
|
{ R"(color)"sv, R"(red)"sv },
|
|
{ R"(taste)"sv,
|
|
toml::table{
|
|
{ R"(sweet)"sv, true },
|
|
} },
|
|
{ R"(texture)"sv,
|
|
toml::table{
|
|
{ R"(smooth)"sv, true },
|
|
} },
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_inline_1,
|
|
[](toml::table&& tbl) // spec-table-inline-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(name)"sv,
|
|
toml::table{
|
|
{ R"(first)"sv, R"(Tom)"sv },
|
|
{ R"(last)"sv, R"(Preston-Werner)"sv },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_inline_2,
|
|
[](toml::table&& tbl) // spec-table-inline-2
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(point)"sv,
|
|
toml::table{
|
|
{ R"(x)"sv, 1 },
|
|
{ R"(y)"sv, 2 },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_inline_3,
|
|
[](toml::table&& tbl) // spec-table-inline-3
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(animal)"sv,
|
|
toml::table{
|
|
{ R"(type)"sv,
|
|
toml::table{
|
|
{ R"(name)"sv, R"(pug)"sv },
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table,
|
|
[](toml::table&& tbl) // spec-table
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(table)"sv, toml::table{} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_time_1,
|
|
[](toml::table&& tbl) // spec-time-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(lt1)"sv, toml::time{ 7, 32 } },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
#if UNICODE_LITERALS_OK
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_quoted_basic_keys_1,
|
|
[](toml::table&& tbl) // spec-quoted-basic-keys-1
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(ʎǝʞ)"sv, R"(value)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_string_basic,
|
|
[](toml::table&& tbl) // spec-string-basic
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(str)"sv, R"(I'm a string. "You can quote me". Name José
|
|
Location SF.)"sv },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
parsing_should_succeed(FILE_LINE_ARGS,
|
|
spec_table_6,
|
|
[](toml::table&& tbl) // spec-table-6
|
|
{
|
|
const auto expected = toml::table{
|
|
{ R"(j)"sv,
|
|
toml::table{
|
|
{ R"(ʞ)"sv,
|
|
toml::table{
|
|
{ R"(l)"sv, toml::table{} },
|
|
} },
|
|
} },
|
|
};
|
|
REQUIRE(tbl == expected);
|
|
});
|
|
|
|
#endif // UNICODE_LITERALS_OK
|
|
}
|