tests/smoke/uglies/errors.invalid_itemset.primi

Summary

Maintainability
Test Coverage
//
// 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)
        )

    }
}