🔨 added user-defined exceptions 305
This commit is contained in:
parent
f473f74fb0
commit
aa842b4a27
4 changed files with 124 additions and 112 deletions
34
src/json.hpp
34
src/json.hpp
|
@ -3828,8 +3828,8 @@ class basic_json
|
|||
|
||||
@return reference to the element at index @a idx
|
||||
|
||||
@throw std::domain_error if JSON is not an array or null; example:
|
||||
`"cannot use operator[] with string"`
|
||||
@throw type_error.305 if JSON is not an array or null; example: `"cannot
|
||||
use operator[] with string"
|
||||
|
||||
@complexity Constant if @a idx is in the range of the array. Otherwise
|
||||
linear in `idx - size()`.
|
||||
|
@ -3864,7 +3864,7 @@ class basic_json
|
|||
return m_value.array->operator[](idx);
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -3876,7 +3876,7 @@ class basic_json
|
|||
|
||||
@return const reference to the element at index @a idx
|
||||
|
||||
@throw std::domain_error if JSON is not an array; example: `"cannot use
|
||||
@throw type_error.305 if JSON is not an array; example: `"cannot use
|
||||
operator[] with null"`
|
||||
|
||||
@complexity Constant.
|
||||
|
@ -3894,7 +3894,7 @@ class basic_json
|
|||
return m_value.array->operator[](idx);
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -3910,8 +3910,8 @@ class basic_json
|
|||
|
||||
@return reference to the element at key @a key
|
||||
|
||||
@throw std::domain_error if JSON is not an object or null; example:
|
||||
`"cannot use operator[] with string"`
|
||||
@throw type_error.305 if JSON is not an object or null; example: `"cannot
|
||||
use operator[] with string"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
||||
|
@ -3940,7 +3940,7 @@ class basic_json
|
|||
return m_value.object->operator[](key);
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -3959,7 +3959,7 @@ class basic_json
|
|||
@pre The element with key @a key must exist. **This precondition is
|
||||
enforced with an assertion.**
|
||||
|
||||
@throw std::domain_error if JSON is not an object; example: `"cannot use
|
||||
@throw type_error.305 if JSON is not an object; example: `"cannot use
|
||||
operator[] with null"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
@ -3982,7 +3982,7 @@ class basic_json
|
|||
return m_value.object->find(key)->second;
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -3998,8 +3998,8 @@ class basic_json
|
|||
|
||||
@return reference to the element at key @a key
|
||||
|
||||
@throw std::domain_error if JSON is not an object or null; example:
|
||||
`"cannot use operator[] with string"`
|
||||
@throw type_error.305 if JSON is not an object or null; example: `"cannot
|
||||
use operator[] with string"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
||||
|
@ -4066,8 +4066,8 @@ class basic_json
|
|||
|
||||
@return reference to the element at key @a key
|
||||
|
||||
@throw std::domain_error if JSON is not an object or null; example:
|
||||
`"cannot use operator[] with string"`
|
||||
@throw type_error.305 if JSON is not an object or null; example: `"cannot
|
||||
use operator[] with string"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
||||
|
@ -4097,7 +4097,7 @@ class basic_json
|
|||
return m_value.object->operator[](key);
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -4116,7 +4116,7 @@ class basic_json
|
|||
@pre The element with key @a key must exist. **This precondition is
|
||||
enforced with an assertion.**
|
||||
|
||||
@throw std::domain_error if JSON is not an object; example: `"cannot use
|
||||
@throw type_error.305 if JSON is not an object; example: `"cannot use
|
||||
operator[] with null"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
@ -4140,7 +4140,7 @@ class basic_json
|
|||
return m_value.object->find(key)->second;
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
@ -3828,8 +3828,8 @@ class basic_json
|
|||
|
||||
@return reference to the element at index @a idx
|
||||
|
||||
@throw std::domain_error if JSON is not an array or null; example:
|
||||
`"cannot use operator[] with string"`
|
||||
@throw type_error.305 if JSON is not an array or null; example: `"cannot
|
||||
use operator[] with string"
|
||||
|
||||
@complexity Constant if @a idx is in the range of the array. Otherwise
|
||||
linear in `idx - size()`.
|
||||
|
@ -3864,7 +3864,7 @@ class basic_json
|
|||
return m_value.array->operator[](idx);
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -3876,7 +3876,7 @@ class basic_json
|
|||
|
||||
@return const reference to the element at index @a idx
|
||||
|
||||
@throw std::domain_error if JSON is not an array; example: `"cannot use
|
||||
@throw type_error.305 if JSON is not an array; example: `"cannot use
|
||||
operator[] with null"`
|
||||
|
||||
@complexity Constant.
|
||||
|
@ -3894,7 +3894,7 @@ class basic_json
|
|||
return m_value.array->operator[](idx);
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -3910,8 +3910,8 @@ class basic_json
|
|||
|
||||
@return reference to the element at key @a key
|
||||
|
||||
@throw std::domain_error if JSON is not an object or null; example:
|
||||
`"cannot use operator[] with string"`
|
||||
@throw type_error.305 if JSON is not an object or null; example: `"cannot
|
||||
use operator[] with string"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
||||
|
@ -3940,7 +3940,7 @@ class basic_json
|
|||
return m_value.object->operator[](key);
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -3959,7 +3959,7 @@ class basic_json
|
|||
@pre The element with key @a key must exist. **This precondition is
|
||||
enforced with an assertion.**
|
||||
|
||||
@throw std::domain_error if JSON is not an object; example: `"cannot use
|
||||
@throw type_error.305 if JSON is not an object; example: `"cannot use
|
||||
operator[] with null"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
@ -3982,7 +3982,7 @@ class basic_json
|
|||
return m_value.object->find(key)->second;
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -3998,8 +3998,8 @@ class basic_json
|
|||
|
||||
@return reference to the element at key @a key
|
||||
|
||||
@throw std::domain_error if JSON is not an object or null; example:
|
||||
`"cannot use operator[] with string"`
|
||||
@throw type_error.305 if JSON is not an object or null; example: `"cannot
|
||||
use operator[] with string"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
||||
|
@ -4066,8 +4066,8 @@ class basic_json
|
|||
|
||||
@return reference to the element at key @a key
|
||||
|
||||
@throw std::domain_error if JSON is not an object or null; example:
|
||||
`"cannot use operator[] with string"`
|
||||
@throw type_error.305 if JSON is not an object or null; example: `"cannot
|
||||
use operator[] with string"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
||||
|
@ -4097,7 +4097,7 @@ class basic_json
|
|||
return m_value.object->operator[](key);
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -4116,7 +4116,7 @@ class basic_json
|
|||
@pre The element with key @a key must exist. **This precondition is
|
||||
enforced with an assertion.**
|
||||
|
||||
@throw std::domain_error if JSON is not an object; example: `"cannot use
|
||||
@throw type_error.305 if JSON is not an object; example: `"cannot use
|
||||
operator[] with null"`
|
||||
|
||||
@complexity Logarithmic in the size of the container.
|
||||
|
@ -4140,7 +4140,7 @@ class basic_json
|
|||
return m_value.object->find(key)->second;
|
||||
}
|
||||
|
||||
JSON_THROW(std::domain_error("cannot use operator[] with " + type_name()));
|
||||
JSON_THROW(type_error(305, "cannot use operator[] with " + type_name()));
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
@ -191,8 +191,8 @@ TEST_CASE("element access 1")
|
|||
json j_nonarray(json::value_t::null);
|
||||
const json j_nonarray_const(j_nonarray);
|
||||
CHECK_NOTHROW(j_nonarray[0]);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "cannot use operator[] with null");
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "[json.exception.type_error.305] cannot use operator[] with null");
|
||||
}
|
||||
|
||||
SECTION("implicit transformation to properly filled array")
|
||||
|
@ -207,60 +207,60 @@ TEST_CASE("element access 1")
|
|||
{
|
||||
json j_nonarray(json::value_t::boolean);
|
||||
const json j_nonarray_const(j_nonarray);
|
||||
CHECK_THROWS_AS(j_nonarray[0], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "cannot use operator[] with boolean");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "cannot use operator[] with boolean");
|
||||
CHECK_THROWS_AS(j_nonarray[0], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "[json.exception.type_error.305] cannot use operator[] with boolean");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "[json.exception.type_error.305] cannot use operator[] with boolean");
|
||||
}
|
||||
|
||||
SECTION("string")
|
||||
{
|
||||
json j_nonarray(json::value_t::string);
|
||||
const json j_nonarray_const(j_nonarray);
|
||||
CHECK_THROWS_AS(j_nonarray[0], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "cannot use operator[] with string");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "cannot use operator[] with string");
|
||||
CHECK_THROWS_AS(j_nonarray[0], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "[json.exception.type_error.305] cannot use operator[] with string");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "[json.exception.type_error.305] cannot use operator[] with string");
|
||||
}
|
||||
|
||||
SECTION("object")
|
||||
{
|
||||
json j_nonarray(json::value_t::object);
|
||||
const json j_nonarray_const(j_nonarray);
|
||||
CHECK_THROWS_AS(j_nonarray[0], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "cannot use operator[] with object");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "cannot use operator[] with object");
|
||||
CHECK_THROWS_AS(j_nonarray[0], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "[json.exception.type_error.305] cannot use operator[] with object");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "[json.exception.type_error.305] cannot use operator[] with object");
|
||||
}
|
||||
|
||||
SECTION("number (integer)")
|
||||
{
|
||||
json j_nonarray(json::value_t::number_integer);
|
||||
const json j_nonarray_const(j_nonarray);
|
||||
CHECK_THROWS_AS(j_nonarray[0], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "cannot use operator[] with number");
|
||||
CHECK_THROWS_AS(j_nonarray[0], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "[json.exception.type_error.305] cannot use operator[] with number");
|
||||
}
|
||||
|
||||
SECTION("number (unsigned)")
|
||||
{
|
||||
json j_nonarray(json::value_t::number_unsigned);
|
||||
const json j_nonarray_const(j_nonarray);
|
||||
CHECK_THROWS_AS(j_nonarray[0], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "cannot use operator[] with number");
|
||||
CHECK_THROWS_AS(j_nonarray[0], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "[json.exception.type_error.305] cannot use operator[] with number");
|
||||
}
|
||||
|
||||
SECTION("number (floating-point)")
|
||||
{
|
||||
json j_nonarray(json::value_t::number_float);
|
||||
const json j_nonarray_const(j_nonarray);
|
||||
CHECK_THROWS_AS(j_nonarray[0], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "cannot use operator[] with number");
|
||||
CHECK_THROWS_AS(j_nonarray[0], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonarray_const[0], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonarray[0], "[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonarray_const[0], "[json.exception.type_error.305] cannot use operator[] with number");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -447,106 +447,118 @@ TEST_CASE("element access 2")
|
|||
const json j_const_nonobject(j_nonobject);
|
||||
CHECK_NOTHROW(j_nonobject["foo"]);
|
||||
CHECK_NOTHROW(j_nonobject2[json::object_t::key_type("foo")]);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"], "cannot use operator[] with null");
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"], "[json.exception.type_error.305] cannot use operator[] with null");
|
||||
CHECK_THROWS_WITH(j_const_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with null");
|
||||
"[json.exception.type_error.305] cannot use operator[] with null");
|
||||
}
|
||||
|
||||
SECTION("boolean")
|
||||
{
|
||||
json j_nonobject(json::value_t::boolean);
|
||||
const json j_const_nonobject(j_nonobject);
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"], "cannot use operator[] with boolean");
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with boolean");
|
||||
CHECK_THROWS_WITH(j_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with boolean");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"], "cannot use operator[] with boolean");
|
||||
"[json.exception.type_error.305] cannot use operator[] with boolean");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with boolean");
|
||||
CHECK_THROWS_WITH(j_const_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with boolean");
|
||||
"[json.exception.type_error.305] cannot use operator[] with boolean");
|
||||
}
|
||||
|
||||
SECTION("string")
|
||||
{
|
||||
json j_nonobject(json::value_t::string);
|
||||
const json j_const_nonobject(j_nonobject);
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"], "cannot use operator[] with string");
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with string");
|
||||
CHECK_THROWS_WITH(j_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with string");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"], "cannot use operator[] with string");
|
||||
"[json.exception.type_error.305] cannot use operator[] with string");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with string");
|
||||
CHECK_THROWS_WITH(j_const_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with string");
|
||||
"[json.exception.type_error.305] cannot use operator[] with string");
|
||||
}
|
||||
|
||||
SECTION("array")
|
||||
{
|
||||
json j_nonobject(json::value_t::array);
|
||||
const json j_const_nonobject(j_nonobject);
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"], "cannot use operator[] with array");
|
||||
CHECK_THROWS_WITH(j_nonobject[json::object_t::key_type("foo")], "cannot use operator[] with array");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"], "cannot use operator[] with array");
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with array");
|
||||
CHECK_THROWS_WITH(j_nonobject[json::object_t::key_type("foo")], "[json.exception.type_error.305] cannot use operator[] with array");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with array");
|
||||
CHECK_THROWS_WITH(j_const_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with array");
|
||||
"[json.exception.type_error.305] cannot use operator[] with array");
|
||||
}
|
||||
|
||||
SECTION("number (integer)")
|
||||
{
|
||||
json j_nonobject(json::value_t::number_integer);
|
||||
const json j_const_nonobject(j_nonobject);
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"], "cannot use operator[] with number");
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"], "cannot use operator[] with number");
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with number");
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
}
|
||||
|
||||
SECTION("number (unsigned)")
|
||||
{
|
||||
json j_nonobject(json::value_t::number_unsigned);
|
||||
const json j_const_nonobject(j_nonobject);
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"], "cannot use operator[] with number");
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"], "cannot use operator[] with number");
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with number");
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
}
|
||||
|
||||
SECTION("number (floating-point)")
|
||||
{
|
||||
json j_nonobject(json::value_t::number_float);
|
||||
const json j_const_nonobject(j_nonobject);
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], std::domain_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], std::domain_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"], "cannot use operator[] with number");
|
||||
CHECK_THROWS_AS(j_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject["foo"], json::type_error);
|
||||
CHECK_THROWS_AS(j_const_nonobject[json::object_t::key_type("foo")], json::type_error);
|
||||
CHECK_THROWS_WITH(j_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"], "cannot use operator[] with number");
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject["foo"],
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
CHECK_THROWS_WITH(j_const_nonobject[json::object_t::key_type("foo")],
|
||||
"cannot use operator[] with number");
|
||||
"[json.exception.type_error.305] cannot use operator[] with number");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue