mirror of
https://github.com/NixOS/nix
synced 2025-06-25 10:41:16 +02:00
Merge pull request #13112 from NaN-git/fix-json-getInteger
bugfix in getInteger(const nlohmann::json &) and add bounds checks
This commit is contained in:
commit
4548dd1abb
5 changed files with 54 additions and 15 deletions
|
@ -128,19 +128,29 @@ TEST(getString, wrongAssertions) {
|
|||
ASSERT_THROW(getString(valueAt(json, "boolean")), Error);
|
||||
}
|
||||
|
||||
TEST(getInteger, rightAssertions) {
|
||||
auto simple = R"({ "int": 0 })"_json;
|
||||
TEST(getIntegralNumber, rightAssertions) {
|
||||
auto simple = R"({ "int": 0, "signed": -1 })"_json;
|
||||
|
||||
ASSERT_EQ(getInteger(valueAt(getObject(simple), "int")), 0);
|
||||
ASSERT_EQ(getUnsigned(valueAt(getObject(simple), "int")), 0);
|
||||
ASSERT_EQ(getInteger<int8_t>(valueAt(getObject(simple), "int")), 0);
|
||||
ASSERT_EQ(getInteger<int8_t>(valueAt(getObject(simple), "signed")), -1);
|
||||
}
|
||||
|
||||
TEST(getInteger, wrongAssertions) {
|
||||
auto json = R"({ "object": {}, "array": [], "string": "", "int": 0, "boolean": false })"_json;
|
||||
TEST(getIntegralNumber, wrongAssertions) {
|
||||
auto json = R"({ "object": {}, "array": [], "string": "", "int": 0, "signed": -256, "large": 128, "boolean": false })"_json;
|
||||
|
||||
ASSERT_THROW(getInteger(valueAt(json, "object")), Error);
|
||||
ASSERT_THROW(getInteger(valueAt(json, "array")), Error);
|
||||
ASSERT_THROW(getInteger(valueAt(json, "string")), Error);
|
||||
ASSERT_THROW(getInteger(valueAt(json, "boolean")), Error);
|
||||
ASSERT_THROW(getUnsigned(valueAt(json, "object")), Error);
|
||||
ASSERT_THROW(getUnsigned(valueAt(json, "array")), Error);
|
||||
ASSERT_THROW(getUnsigned(valueAt(json, "string")), Error);
|
||||
ASSERT_THROW(getUnsigned(valueAt(json, "boolean")), Error);
|
||||
ASSERT_THROW(getUnsigned(valueAt(json, "signed")), Error);
|
||||
|
||||
ASSERT_THROW(getInteger<int8_t>(valueAt(json, "object")), Error);
|
||||
ASSERT_THROW(getInteger<int8_t>(valueAt(json, "array")), Error);
|
||||
ASSERT_THROW(getInteger<int8_t>(valueAt(json, "string")), Error);
|
||||
ASSERT_THROW(getInteger<int8_t>(valueAt(json, "boolean")), Error);
|
||||
ASSERT_THROW(getInteger<int8_t>(valueAt(json, "large")), Error);
|
||||
ASSERT_THROW(getInteger<int8_t>(valueAt(json, "signed")), Error);
|
||||
}
|
||||
|
||||
TEST(getBoolean, rightAssertions) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue