16 #define GETTEXT_DOMAIN "wesnoth-test" 18 #include <boost/test/unit_test.hpp> 21 #include <boost/test/data/test_case.hpp> 40 BOOST_CHECK_EQUAL(x_str,
"1");
41 x_int = c[
"x"].to_int();
42 BOOST_CHECK_EQUAL(x_int, 1);
43 x_sll = c[
"x"].to_long_long();
44 BOOST_CHECK_EQUAL(x_sll, 1ll);
45 x_dbl = c[
"x"].to_double();
46 BOOST_CHECK_EQUAL(x_dbl, 1.0);
49 x_int = c[
"x"].to_int();
50 BOOST_CHECK_EQUAL(x_int, 10000000);
52 BOOST_CHECK_EQUAL(x_str,
"10000000");
53 x_sll = c[
"x"].to_long_long();
54 BOOST_CHECK_EQUAL(x_sll, 10000000ll);
55 x_dbl = c[
"x"].to_double();
56 BOOST_CHECK_EQUAL(x_dbl, 1e7);
59 x_sll = c[
"x"].to_long_long();
60 BOOST_CHECK_EQUAL(x_sll, 0ll);
62 BOOST_CHECK_EQUAL(x_str,
"");
63 x_int = c[
"x"].to_int();
64 BOOST_CHECK_EQUAL(x_int, 0);
65 x_dbl = c[
"x"].to_double();
66 BOOST_CHECK_EQUAL(x_dbl, 0.0);
69 x_int = c[
"x"].to_int();
70 BOOST_CHECK_EQUAL(x_int, 0);
72 BOOST_CHECK_EQUAL(x_str,
"0x11");
73 x_sll = c[
"x"].to_long_long();
74 BOOST_CHECK_EQUAL(x_sll, 0ll);
75 x_dbl = c[
"x"].to_double();
76 BOOST_CHECK_EQUAL(x_dbl, 0.0);
79 x_int = c[
"x"].to_int();
80 BOOST_CHECK_EQUAL(x_int, 0);
82 BOOST_CHECK_EQUAL(x_str,
"0xab");
83 x_sll = c[
"x"].to_long_long();
84 BOOST_CHECK_EQUAL(x_sll, 0ll);
85 x_dbl = c[
"x"].to_double();
86 BOOST_CHECK_EQUAL(x_dbl, 0.0);
89 x_int = c[
"x"].to_int();
90 BOOST_CHECK_EQUAL(x_int, 1111);
92 BOOST_CHECK_EQUAL(x_str,
"00001111");
93 x_sll = c[
"x"].to_long_long();
94 BOOST_CHECK_EQUAL(x_sll, 1111ll);
95 x_dbl = c[
"x"].to_double();
96 BOOST_CHECK_EQUAL(x_dbl, 1.111e3);
99 x_int = c[
"x"].to_int();
100 BOOST_CHECK_EQUAL(x_int, 0);
101 x_str = c[
"x"].str();
102 BOOST_CHECK_EQUAL(x_str,
"000000");
103 x_sll = c[
"x"].to_long_long();
104 BOOST_CHECK_EQUAL(x_sll, 0ll);
105 x_dbl = c[
"x"].to_double();
106 BOOST_CHECK_EQUAL(x_dbl, 0.0);
108 c[
"x"] =
"01234567890123456789";
109 x_sll = c[
"x"].to_long_long();
110 BOOST_CHECK_EQUAL(x_sll, 1234567890123456789ll);
111 x_str = c[
"x"].str();
112 BOOST_CHECK_EQUAL(x_str,
"01234567890123456789");
113 x_int = c[
"x"].to_int();
114 BOOST_CHECK_EQUAL(x_int, 0);
115 x_dbl = c[
"x"].to_double();
116 BOOST_CHECK_EQUAL(x_dbl, 1.23456789012345678e18);
118 c[
"x"] =
"99999999999999999999";
119 x_sll = c[
"x"].to_long_long();
120 BOOST_CHECK_EQUAL(x_sll, 0ll);
121 x_str = c[
"x"].str();
122 BOOST_CHECK_EQUAL(x_str,
"99999999999999999999");
123 x_int = c[
"x"].to_int();
124 BOOST_CHECK_EQUAL(x_int, 0);
125 x_dbl = c[
"x"].to_double();
126 BOOST_CHECK_EQUAL(x_dbl, 1e20);
129 x_sll = c[
"x"].to_long_long();
130 BOOST_CHECK_EQUAL(x_sll, 1ll);
131 x_str = c[
"x"].str();
132 BOOST_CHECK_EQUAL(x_str,
"1.499");
133 x_int = c[
"x"].to_int();
134 BOOST_CHECK_EQUAL(x_int, 1);
135 x_dbl = c[
"x"].to_double();
136 BOOST_CHECK(std::abs(x_dbl - 1.499) < 1
e-6);
138 c[
"x"] = 123456789123ll;
139 x_int = c[
"x"].to_int();
140 BOOST_CHECK_EQUAL(x_int, -1097262461);
141 x_dbl = c[
"x"].to_double();
142 BOOST_CHECK_EQUAL(x_dbl, 1.23456789123e11);
143 x_sll = c[
"x"].to_long_long();
144 BOOST_CHECK_EQUAL(x_sll, 123456789123ll);
145 x_str = c[
"x"].str();
146 BOOST_CHECK_EQUAL(x_str,
"123456789123");
150 BOOST_CHECK(cc[
"x"] !=
"");
151 BOOST_CHECK(cc[
"x"].empty());
152 BOOST_CHECK(cc[
"x"].blank());
154 BOOST_CHECK(c[
"x"] !=
"");
155 BOOST_CHECK(c[
"x"].empty());
156 BOOST_CHECK(c[
"x"].blank());
158 BOOST_CHECK_EQUAL(cc[
"x"], c[
"x"]);
161 BOOST_CHECK(cc[
"x"].empty());
162 BOOST_CHECK(cc[
"x"].empty());
163 BOOST_CHECK(!cc[
"x"].blank());
165 BOOST_CHECK(c[
"x"].empty());
166 BOOST_CHECK(c[
"x"].empty());
167 BOOST_CHECK(!c[
"x"].blank());
169 BOOST_CHECK_EQUAL(cc[
"x"], c[
"x"]);
206 BOOST_CHECK(c.
empty());
233 "atribute2",
"value",
258 BOOST_CHECK_EQUAL(
variable_access_const(
"tag1[1].tag2[2].atribute1", nonempty).as_scalar().to_int(), 88);
263 BOOST_CHECK_EQUAL(count, 3);
268 BOOST_CHECK_EQUAL(count, 0);
274 BOOST_CHECK_EQUAL(count, 1);
282 const config expected(
"A");
283 BOOST_CHECK_EQUAL(actual, expected);
284 BOOST_CHECK_EQUAL(new_child,
config());
287 namespace bdata = boost::unit_test::data;
289 bdata::make({
"A",
"B",
"C"}) * bdata::make<std::string>({
"lvalue_ref",
"rvalue_ref"}),
307 if(update_ref_kind == std::string(
"lvalue_ref"))
308 new_child = actual.
add_child(key, update);
312 BOOST_CHECK_EQUAL(actual, expected);
313 BOOST_CHECK_EQUAL(new_child, update);
315 BOOST_CHECK_NE(&new_child, &update);
318 BOOST_AUTO_TEST_SUITE_END()
bool exists_as_attribute() const
BOOST_AUTO_TEST_CASE(test_config_attribute_value)
maybe_const_t< config::attribute_value, V > & as_scalar() const
If instantiated with vi_policy_const, the lifetime of the returned const attribute_value reference mi...
Additional functionality for a non-const variable_info.
maybe_const_t< config, V > & as_container() const
If instantiated with vi_policy_const, the lifetime of the returned const attribute_value reference mi...
Definitions for the interface to Wesnoth Markup Language (WML).
variable_info< const variable_info_implementation::vi_policy_const > variable_access_const
Read-only access.
BOOST_AUTO_TEST_SUITE(filesystem)
config & add_child(config_key_type key)
Information on a WML variable.
bool exists_as_container() const
BOOST_DATA_TEST_CASE(add_child_NonEmptyThis_newOrExistingKey_lOrRValue_AppendAndReturnNewChild, bdata::make({"A", "B", "C"}) *bdata::make< std::string >({"lvalue_ref", "rvalue_ref"}), key, update_ref_kind)
config_attribute_value attribute_value
Variant for storing WML attributes.
A config object defines a single node in a WML file, with access to child nodes.