tests/smoke/uglies/errors.invalid_itemset.primi
//
// Wrong square-brackets-inserts (for example in wrong data types) raise errors.
//
variables = [
['number', 123],
['string', 'abc'],
['regex', rx'\d+'],
['list', [1, 2, 3]],
['dict', {'a': 'aa', 'b': 'bb', 'c': 'cc'}],
['bool', true],
['null', null],
]
// Matrix of expected results.
// true: Operation is valid.
// false: Operation is invalid - raises error.
expected = {
// Inserting into...
"number": {
// Inserting what...
"number": false,
"string": false,
"regex": false,
"list": false,
"dict": false,
"bool": false,
"null": false,
},
"string": {
"number": false,
"string": false,
"regex": false,
"list": false,
"dict": false,
"bool": false,
"null": false,
},
"regex": {
"number": false,
"string": false,
"regex": false,
"list": false,
"dict": false,
"bool": false,
"null": false,
},
"list": {
"number": true,
"string": true,
"regex": true,
"list": true,
"dict": true,
"bool": true,
"null": true,
},
"dict": {
"number": true,
"string": true,
"regex": true,
"list": true,
"dict": true,
"bool": true,
"null": true,
},
"bool": {
"number": false,
"string": false,
"regex": false,
"list": false,
"dict": false,
"bool": false,
"null": false,
},
"null": {
"number": false,
"string": false,
"regex": false,
"list": false,
"dict": false,
"bool": false,
"null": false,
},
}
for (target_type, target_value in variables) {
for (inject_type, inject_value in variables) {
try {
was_valid = true
target_value[0] = inject_value
} catch {
was_valid = false
}
state = 'Operation was {}'.format('valid' if (was_valid) else 'invalid')
assert(
expected[target_type][inject_type] == was_valid,
"Unexpected result when inserting '{}' into '{}': {}".format(
inject_type, target_type, state)
)
}
}