Merge branch 'develop' into iterator_arithmetic

This commit is contained in:
HenryLee 2017-06-09 20:47:42 +10:00
commit e12c2ee6a8
2 changed files with 96 additions and 4 deletions

View file

@ -156,6 +156,31 @@ TEST_CASE("constructors")
CHECK(j == j_reference);
}
SECTION("std::pair<CompatibleString, T>")
{
std::pair<std::string, std::string> p{"first", "second"};
json j(p);
CHECK((j.get<decltype(p)>() == p));
std::pair<std::string, int> p2{"first", 1};
// use char const*
json j2(std::make_pair("first", 1));
CHECK((j2.get<decltype(p2)>() == p2));
}
SECTION("std::map<std::string, std::string> #600")
{
std::map<std::string, std::string> m;
m["a"] = "b";
m["c"] = "d";
m["e"] = "f";
json j(m);
CHECK((j.get<decltype(m)>() == m));
}
SECTION("std::map<const char*, json>")
{
std::map<const char*, json> o {{"a", json(1)}, {"b", json(1u)}, {"c", json(2.2)}, {"d", json(false)}, {"e", json("string")}, {"f", json()}};
@ -164,6 +189,7 @@ TEST_CASE("constructors")
CHECK(j == j_reference);
}
SECTION("std::multimap<json::string_t, json>")
{
std::multimap<json::string_t, json> o {{"a", json(1)}, {"b", json(1u)}, {"c", json(2.2)}, {"d", json(false)}, {"e", json("string")}, {"f", json()}};
@ -954,6 +980,28 @@ TEST_CASE("constructors")
"[json.exception.type_error.301] cannot create object from initializer list");
}
SECTION("std::pair<CompatibleString, T> with error")
{
SECTION("wrong field number")
{
json j{{"too", "much"}, {"string", "fields"}};
CHECK_THROWS_AS((j.get<std::pair<std::string, std::string>>()), json::other_error);
CHECK_THROWS_WITH((j.get<std::pair<std::string, std::string>>()),
"[json.exception.other_error.502] conversion "
"to std::pair requires the object to have "
"exactly one field, but it has 2");
}
SECTION("wrong JSON type")
{
json j(42);
CHECK_THROWS_AS((j.get<std::pair<std::string, std::string>>()), json::type_error);
CHECK_THROWS_WITH((j.get<std::pair<std::string, std::string>>()),
"[json.exception.type_error.302] type must be object, but is number");
}
}
SECTION("empty array")
{
json j = json::array();