From 5696660ebac54b40a1c717bf6624ba19ca581585 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Tue, 31 Oct 2017 15:04:14 +0100 Subject: [PATCH] :hammer: another try to fix #714 adding std::ios_base::binary when opening all_unicode.json.cbor --- src/json.hpp | 2 +- test/src/unit-regression.cpp | 67 ++++++++++++++++++------------------ 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index e8941302..d28325a6 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6789,7 +6789,7 @@ class json_ref {} template - json_ref(Args&&... args) + json_ref(Args&& ... args) : owned_value(std::forward(args)...), value_ref(&owned_value), is_rvalue(true) diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index edd03b9c..3b9f6b4a 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -38,18 +38,18 @@ using nlohmann::json; namespace { - struct nocopy - { +struct nocopy +{ nocopy() = default; - nocopy(const nocopy &) = delete; + nocopy(const nocopy&) = delete; int val = 0; friend void to_json(json& j, const nocopy& n) { - j = {{"val", n.val}}; + j = {{"val", n.val}}; } - }; +}; } TEST_CASE("regression tests") @@ -1270,40 +1270,39 @@ TEST_CASE("regression tests") } } - /* - SECTION("issue #714 - throw std::ios_base::failure exception when failbit set to true") + SECTION("issue #714 - throw std::ios_base::failure exception when failbit set to true") + { { - { - std::ifstream is; - is.exceptions( - is.exceptions() - | std::ios_base::failbit - | std::ios_base::badbit - ); // handle different exceptions as 'file not found', 'permission denied' + std::ifstream is; + is.exceptions( + is.exceptions() + | std::ios_base::failbit + | std::ios_base::badbit + ); // handle different exceptions as 'file not found', 'permission denied' - is.open("test/data/regression/working_file.json"); - CHECK_NOTHROW(nlohmann::json::parse(is)); - } - - { - std::ifstream is; - is.exceptions( - is.exceptions() - | std::ios_base::failbit - | std::ios_base::badbit - ); // handle different exceptions as 'file not found', 'permission denied' - - is.open("test/data/json_nlohmann_tests/all_unicode.json.cbor"); - CHECK_NOTHROW(nlohmann::json::from_cbor(is)); - } + is.open("test/data/regression/working_file.json"); + CHECK_NOTHROW(nlohmann::json::parse(is)); } - */ + + { + std::ifstream is; + is.exceptions( + is.exceptions() + | std::ios_base::failbit + | std::ios_base::badbit + ); // handle different exceptions as 'file not found', 'permission denied' + + is.open("test/data/json_nlohmann_tests/all_unicode.json.cbor", + std::ios_base::in | std::ios_base::binary); + CHECK_NOTHROW(nlohmann::json::from_cbor(is)); + } + } SECTION("issue #805 - copy constructor is used with std::initializer_list constructor.") { - nocopy n; - json j; - j = {{"nocopy", n}}; - CHECK(j["nocopy"]["val"] == 0); + nocopy n; + json j; + j = {{"nocopy", n}}; + CHECK(j["nocopy"]["val"] == 0); } }