🏗️ adding anonymous namespace
This commit is contained in:
parent
0da99027b7
commit
f05614b240
16 changed files with 51 additions and 8 deletions
|
@ -34,8 +34,9 @@ SOFTWARE.
|
||||||
using nlohmann::json;
|
using nlohmann::json;
|
||||||
#undef private
|
#undef private
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
// special test case to check if memory is leaked if constructor throws
|
// special test case to check if memory is leaked if constructor throws
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
struct bad_allocator : std::allocator<T>
|
struct bad_allocator : std::allocator<T>
|
||||||
{
|
{
|
||||||
|
@ -45,6 +46,7 @@ struct bad_allocator : std::allocator<T>
|
||||||
throw std::bad_alloc();
|
throw std::bad_alloc();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("bad_alloc")
|
TEST_CASE("bad_alloc")
|
||||||
{
|
{
|
||||||
|
@ -65,6 +67,8 @@ TEST_CASE("bad_alloc")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
static bool next_construct_fails = false;
|
static bool next_construct_fails = false;
|
||||||
static bool next_destroy_fails = false;
|
static bool next_destroy_fails = false;
|
||||||
static bool next_deallocate_fails = false;
|
static bool next_deallocate_fails = false;
|
||||||
|
@ -130,6 +134,7 @@ void my_allocator_clean_up(T* p)
|
||||||
alloc.destroy(p);
|
alloc.destroy(p);
|
||||||
alloc.deallocate(p, 1);
|
alloc.deallocate(p, 1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("controlled bad_alloc")
|
TEST_CASE("controlled bad_alloc")
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,7 +39,6 @@ SOFTWARE.
|
||||||
class alt_string;
|
class alt_string;
|
||||||
bool operator<(const char* op1, const alt_string& op2);
|
bool operator<(const char* op1, const alt_string& op2);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is virtually a string class.
|
* This is virtually a string class.
|
||||||
* It covers std::string under the hood.
|
* It covers std::string under the hood.
|
||||||
|
@ -155,7 +154,6 @@ class alt_string
|
||||||
friend bool ::operator<(const char*, const alt_string&);
|
friend bool ::operator<(const char*, const alt_string&);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
using alt_json = nlohmann::basic_json <
|
using alt_json = nlohmann::basic_json <
|
||||||
std::map,
|
std::map,
|
||||||
std::vector,
|
std::vector,
|
||||||
|
@ -173,8 +171,6 @@ bool operator<(const char* op1, const alt_string& op2)
|
||||||
return op1 < op2.str_impl;
|
return op1 < op2.str_impl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TEST_CASE("alternative string type")
|
TEST_CASE("alternative string type")
|
||||||
{
|
{
|
||||||
SECTION("dump")
|
SECTION("dump")
|
||||||
|
|
|
@ -608,6 +608,8 @@ TEST_CASE("BSON input/output_adapters")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
class SaxCountdown
|
class SaxCountdown
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -677,6 +679,7 @@ class SaxCountdown
|
||||||
private:
|
private:
|
||||||
int events_left = 0;
|
int events_left = 0;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("Incomplete BSON Input")
|
TEST_CASE("Incomplete BSON Input")
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,6 +38,8 @@ using nlohmann::json;
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
class SaxCountdown
|
class SaxCountdown
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -107,6 +109,7 @@ class SaxCountdown
|
||||||
private:
|
private:
|
||||||
int events_left = 0;
|
int events_left = 0;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("CBOR")
|
TEST_CASE("CBOR")
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,12 +34,15 @@ SOFTWARE.
|
||||||
using nlohmann::json;
|
using nlohmann::json;
|
||||||
#undef private
|
#undef private
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
// shortcut to scan a string literal
|
// shortcut to scan a string literal
|
||||||
json::lexer::token_type scan_string(const char* s);
|
json::lexer::token_type scan_string(const char* s);
|
||||||
json::lexer::token_type scan_string(const char* s)
|
json::lexer::token_type scan_string(const char* s)
|
||||||
{
|
{
|
||||||
return json::lexer(nlohmann::detail::input_adapter(s)).scan();
|
return json::lexer(nlohmann::detail::input_adapter(s)).scan();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("lexer class")
|
TEST_CASE("lexer class")
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,6 +36,8 @@ using nlohmann::json;
|
||||||
|
|
||||||
#include <valarray>
|
#include <valarray>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
class SaxEventLogger
|
class SaxEventLogger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -256,6 +258,7 @@ bool accept_helper(const std::string& s)
|
||||||
// 7. return result
|
// 7. return result
|
||||||
return ok_accept;
|
return ok_accept;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("parser class")
|
TEST_CASE("parser class")
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,6 +32,8 @@ SOFTWARE.
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
using nlohmann::json;
|
using nlohmann::json;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
// helper function to check std::less<json::value_t>
|
// helper function to check std::less<json::value_t>
|
||||||
// see https://en.cppreference.com/w/cpp/utility/functional/less
|
// see https://en.cppreference.com/w/cpp/utility/functional/less
|
||||||
template <typename A, typename B, typename U = std::less<json::value_t>>
|
template <typename A, typename B, typename U = std::less<json::value_t>>
|
||||||
|
@ -39,6 +41,7 @@ bool f(A a, B b, U u = U())
|
||||||
{
|
{
|
||||||
return u(a, b);
|
return u(a, b);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("lexicographical comparison operators")
|
TEST_CASE("lexicographical comparison operators")
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,6 +36,8 @@ using nlohmann::json;
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
void check_escaped(const char* original, const char* escaped = "", const bool ensure_ascii = false);
|
void check_escaped(const char* original, const char* escaped = "", const bool ensure_ascii = false);
|
||||||
void check_escaped(const char* original, const char* escaped, const bool ensure_ascii)
|
void check_escaped(const char* original, const char* escaped, const bool ensure_ascii)
|
||||||
{
|
{
|
||||||
|
@ -44,6 +46,7 @@ void check_escaped(const char* original, const char* escaped, const bool ensure_
|
||||||
s.dump_escaped(original, ensure_ascii);
|
s.dump_escaped(original, ensure_ascii);
|
||||||
CHECK(ss.str() == escaped);
|
CHECK(ss.str() == escaped);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("convenience functions")
|
TEST_CASE("convenience functions")
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,6 +36,8 @@ using nlohmann::json;
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <valarray>
|
#include <valarray>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
struct SaxEventLogger : public nlohmann::json_sax<json>
|
struct SaxEventLogger : public nlohmann::json_sax<json>
|
||||||
{
|
{
|
||||||
bool null() override
|
bool null() override
|
||||||
|
@ -167,6 +169,7 @@ struct SaxEventLoggerExitAfterStartArray : public SaxEventLogger
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("deserialization")
|
TEST_CASE("deserialization")
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,6 +37,8 @@ using nlohmann::json;
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
class SaxCountdown
|
class SaxCountdown
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -106,6 +108,7 @@ class SaxCountdown
|
||||||
private:
|
private:
|
||||||
int events_left = 0;
|
int events_left = 0;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("MessagePack")
|
TEST_CASE("MessagePack")
|
||||||
{
|
{
|
||||||
|
@ -1300,7 +1303,6 @@ TEST_CASE("MessagePack")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// use this testcase outside [hide] to run it with Valgrind
|
// use this testcase outside [hide] to run it with Valgrind
|
||||||
TEST_CASE("single MessagePack roundtrip")
|
TEST_CASE("single MessagePack roundtrip")
|
||||||
{
|
{
|
||||||
|
@ -1347,7 +1349,6 @@ TEST_CASE("single MessagePack roundtrip")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_CASE("MessagePack roundtrips" * doctest::skip())
|
TEST_CASE("MessagePack roundtrips" * doctest::skip())
|
||||||
{
|
{
|
||||||
SECTION("input from msgpack-python")
|
SECTION("input from msgpack-python")
|
||||||
|
|
|
@ -33,6 +33,8 @@ SOFTWARE.
|
||||||
|
|
||||||
using nlohmann::json;
|
using nlohmann::json;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
enum test
|
enum test
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
@ -59,6 +61,7 @@ static_assert(noexcept(json(pod{})), "");
|
||||||
static_assert(noexcept(j.get<pod>()), "");
|
static_assert(noexcept(j.get<pod>()), "");
|
||||||
static_assert(not noexcept(j.get<pod_bis>()), "");
|
static_assert(not noexcept(j.get<pod_bis>()), "");
|
||||||
static_assert(noexcept(json(pod{})), "");
|
static_assert(noexcept(json(pod{})), "");
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("runtime checks")
|
TEST_CASE("runtime checks")
|
||||||
{
|
{
|
||||||
|
|
|
@ -418,7 +418,6 @@ TEST_CASE("json.org examples")
|
||||||
json j;
|
json j;
|
||||||
CHECK_NOTHROW(j.parse(f.get()));
|
CHECK_NOTHROW(j.parse(f.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("RFC 7159 examples")
|
TEST_CASE("RFC 7159 examples")
|
||||||
|
@ -1352,6 +1351,8 @@ TEST_CASE("nst's JSONTestSuite (2)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
std::string trim(const std::string& str);
|
std::string trim(const std::string& str);
|
||||||
|
|
||||||
// from http://stackoverflow.com/a/25829178/266378
|
// from http://stackoverflow.com/a/25829178/266378
|
||||||
|
@ -1365,6 +1366,7 @@ std::string trim(const std::string& str)
|
||||||
size_t last = str.find_last_not_of(' ');
|
size_t last = str.find_last_not_of(' ');
|
||||||
return str.substr(first, (last - first + 1));
|
return str.substr(first, (last - first + 1));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("Big List of Naughty Strings")
|
TEST_CASE("Big List of Naughty Strings")
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,6 +36,8 @@ SOFTWARE.
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
using nlohmann::detail::dtoa_impl::reinterpret_bits;
|
using nlohmann::detail::dtoa_impl::reinterpret_bits;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
static float make_float(uint32_t sign_bit, uint32_t biased_exponent, uint32_t significand)
|
static float make_float(uint32_t sign_bit, uint32_t biased_exponent, uint32_t significand)
|
||||||
{
|
{
|
||||||
assert(sign_bit == 0 || sign_bit == 1);
|
assert(sign_bit == 0 || sign_bit == 1);
|
||||||
|
@ -139,6 +141,7 @@ static double make_double(uint64_t f, int e)
|
||||||
uint64_t bits = (f & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize);
|
uint64_t bits = (f & kSignificandMask) | (biased_exponent << kPhysicalSignificandSize);
|
||||||
return reinterpret_bits<double>(bits);
|
return reinterpret_bits<double>(bits);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("digit gen")
|
TEST_CASE("digit gen")
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,6 +35,8 @@ using nlohmann::json;
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
class SaxCountdown
|
class SaxCountdown
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -104,6 +106,7 @@ class SaxCountdown
|
||||||
private:
|
private:
|
||||||
int events_left = 0;
|
int events_left = 0;
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("UBJSON")
|
TEST_CASE("UBJSON")
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,6 +42,8 @@ using nlohmann::json;
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
extern size_t calls;
|
extern size_t calls;
|
||||||
size_t calls = 0;
|
size_t calls = 0;
|
||||||
|
|
||||||
|
@ -165,6 +167,7 @@ void check_utf8string(bool success_expected, int byte1, int byte2 = -1, int byte
|
||||||
CHECK_THROWS_AS(json::parse(json_string), json::parse_error&);
|
CHECK_THROWS_AS(json::parse(json_string), json::parse_error&);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("Unicode" * doctest::skip())
|
TEST_CASE("Unicode" * doctest::skip())
|
||||||
{
|
{
|
||||||
|
@ -1205,6 +1208,8 @@ TEST_CASE("Unicode" * doctest::skip())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
void roundtrip(bool success_expected, const std::string& s);
|
void roundtrip(bool success_expected, const std::string& s);
|
||||||
|
|
||||||
void roundtrip(bool success_expected, const std::string& s)
|
void roundtrip(bool success_expected, const std::string& s)
|
||||||
|
@ -1244,6 +1249,7 @@ void roundtrip(bool success_expected, const std::string& s)
|
||||||
CHECK_THROWS_AS(json::parse(ps), json::parse_error&);
|
CHECK_THROWS_AS(json::parse(ps), json::parse_error&);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("Markus Kuhn's UTF-8 decoder capability and stress test")
|
TEST_CASE("Markus Kuhn's UTF-8 decoder capability and stress test")
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,6 +32,8 @@ SOFTWARE.
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
using nlohmann::json;
|
using nlohmann::json;
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
bool wstring_is_utf16();
|
bool wstring_is_utf16();
|
||||||
bool wstring_is_utf16()
|
bool wstring_is_utf16()
|
||||||
{
|
{
|
||||||
|
@ -49,6 +51,7 @@ bool u32string_is_utf32()
|
||||||
{
|
{
|
||||||
return (std::u32string(U"💩") == std::u32string(U"\U0001F4A9"));
|
return (std::u32string(U"💩") == std::u32string(U"\U0001F4A9"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST_CASE("wide strings")
|
TEST_CASE("wide strings")
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue