Skip to content

Commit

Permalink
✅ added regression tests for #473
Browse files Browse the repository at this point in the history
These tests currently pass without any adjustments to the source code.
  • Loading branch information
nlohmann committed Mar 12, 2017
1 parent 80dcf22 commit 87eafd8
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions test/src/unit-regression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ SOFTWARE.
using nlohmann::json;

#include <fstream>
#include <list>

TEST_CASE("regression tests")
{
Expand Down Expand Up @@ -796,6 +797,55 @@ TEST_CASE("regression tests")
CHECK(s1 == s2);
}

SECTION("issue #473 - inconsistent behavior in conversion to array type")
{
json j_array = {1, 2, 3, 4};
json j_number = 42;
json j_null = nullptr;

SECTION("std::vector")
{
auto create = [](const json & j)
{
std::vector<int> v = j;
};

CHECK_NOTHROW(create(j_array));
CHECK_THROWS_AS(create(j_number), std::domain_error);
CHECK_THROWS_WITH(create(j_number), "type must be array, but is number");
CHECK_THROWS_AS(create(j_null), std::domain_error);
CHECK_THROWS_WITH(create(j_null), "type must be array, but is null");
}

SECTION("std::list")
{
auto create = [](const json & j)
{
std::list<int> v = j;
};

CHECK_NOTHROW(create(j_array));
CHECK_THROWS_AS(create(j_number), std::domain_error);
CHECK_THROWS_WITH(create(j_number), "type must be array, but is number");
CHECK_THROWS_AS(create(j_null), std::domain_error);
CHECK_THROWS_WITH(create(j_null), "type must be array, but is null");
}

SECTION("std::forward_list")
{
auto create = [](const json & j)
{
std::forward_list<int> v = j;
};

CHECK_NOTHROW(create(j_array));
CHECK_THROWS_AS(create(j_number), std::domain_error);
CHECK_THROWS_WITH(create(j_number), "type must be array, but is number");
CHECK_THROWS_AS(create(j_null), std::domain_error);
CHECK_THROWS_WITH(create(j_null), "type must be array, but is null");
}
}

SECTION("issue #486 - json::value_t can't be a map's key type in VC++ 2015")
{
// the code below must compile with MSVC
Expand Down

0 comments on commit 87eafd8

Please sign in to comment.