{
    "tests": {
        "slice": {
            "start zero, length = 0": {
                "in": ["0x12345678", 0, 0],
                "out": ["0x"]
            },
            "start zero, length = input.length": {
                "in": ["0x12345678", 0, 4],
                "out": ["0x12345678"]
            },
            "start zero, length > 0 and length < input.length": {
                "in": ["0x12345678", 0, 2],
                "out": ["0x1234"]
            },
            "start zero, length > input.length": {
                "in": ["0x12345678", 0, 5],
                "revert": "Read out of bounds"
            },
            "start > 0 and <= input.length, length = 0": {
                "in": ["0x12345678", 2, 0],
                "out": ["0x"]
            },
            "start > 0 and <= input.length, length = input.length - start": {
                "in": ["0x12345678", 2, 2],
                "out": ["0x5678"]
            },
            "start > 0 and <= input.length, length < input.length - start": {
                "in": ["0x12345678", 2, 1],
                "out": ["0x56"]
            },
            "start > 0 and <= input.length, length > input.length - start": {
                "in": ["0x12345678", 2, 3],
                "revert": "Read out of bounds"
            },
            "start > input.length": {
                "in": ["0x12345678", 5, 1],
                "revert":"Read out of bounds"
            },
            "input.length + 31 >= input.length": {
                "in": ["0x12345678", 5, "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"],
                "revert":"slice_overflow"
            },
            "input.start + input.length >= input.start": {
                "in": ["0x12345678", "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 1],
                "revert":"slice_overflow"
            }
        },
        "toBytes32": {
            "input.length < 32 bytes": {
                "in": ["0x1234"],
                "out": ["0x1234000000000000000000000000000000000000000000000000000000000000"]
            },
            "input.length = 32 bytes": {
                "in": ["0x1234123412341234123412341234123412341234123412341234123412341234"],
                "out": ["0x1234123412341234123412341234123412341234123412341234123412341234"]
            },
            "input.length > 32 bytes": {
                "in": ["0x12341234123412341234123412341234123412341234123412341234123412345678567856785678567856785678567856785678567856785678567856785678"],
                "out": ["0x1234123412341234123412341234123412341234123412341234123412341234"]
            }
        },
        "toUint256": {
            "input.length < 32 bytes": {
                "in": ["0x000000000000000000000000000000000000000000000000000000001234"],
                "out": [305397760]
            },
            "input.length = 32 bytes": {
                "in": ["0x0000000000000000000000000000000000000000000000000000000000001234"],
                "out": [4660]
            },
            "input.length > 32 bytes": {
                "in": ["0x00000000000000000000000000000000000000000000000000000000000012345678567856785678567856785678567856785678567856785678567856785678"],
                "out": [4660]
            }
        },
        "toNibbles": {
            "one byte": {
                "in": ["0xff"],
                "out": ["0x0f0f"]
            },
            "two bytes": {
                "in": ["0xffff"],
                "out": ["0x0f0f0f0f"]
            },
            "four bytes": {
                "in": ["0xffffffff"],
                "out": ["0x0f0f0f0f0f0f0f0f"]
            }
        },
        "fromNibbles": {
            "two nibbles": {
                "in": ["0x0f0f"],
                "out": ["0xff"]
            },
            "four nibbles": {
                "in": ["0x0f0f0f0f"],
                "out": ["0xffff"]
            },
            "eight nibbles": {
                "in": ["0x0f0f0f0f0f0f0f0f"],
                "out": ["0xffffffff"]
            }
        },
        "equal": {
            "same inputs": {
                "in": ["0x1234", "0x1234"],
                "out": [true]
            },
            "different inputs": {
                "in": ["0x1234", "0x4567"],
                "out": [false]
            }
        }
    }
}
