# TEST SPECIFICATION V1.1 ## Puzzles 1. Termins The field is depicted as `(Data type) Name`. u8 is 8-bit integer (uint8_t in C). u32 is a 32-bit integer (uint32_t in C). string is a null-terminated ASCII byte array. - Maximum length is 8192 characters (including a null terminator). 2. Puzzles are stored in binary format. The specification for it is as follows: +----------------------------+---------------+----------------------+ | (u8) Specification version | (string) Name | (string) Description | +----------------------------+-----+---------+----------------------+ | (string) Initial code | (u32) Test count | +----------------------------------+--------------------------------+ | (Test) Test value | | ... | +-------------------------------------------------------------------+ The amount of the tests must be the exact same as specified in test counter. 3. The test is a following struct: +------------------------+---------------------------+-------------------+ | (string) Reciever name | (string) Method signature | (u32) Arg counter | +------------------------+---------------------------+-------------------+ | (Value descriptor) Input value | | ... | +------------------------------------------------------------------------+ | (Value descriptor) Expected output | | ... | +------------------------------------------------------------------------+ The amount of the input values must be the exact same as specified in arg counter. 4. The value descriptor is a following struct: +----------------+--------------+ | (u8) Type code | (Type) Value | +----------------+--------------+ 4.1. The type is defined by the Type code. The following types are supported: +------+---------+----------------------------+ | Code | Name | Value size | +------+---------+----------------------------+ | 0 | Null | 0 bytes | +------+---------+----------------------------+ | 1 | Bool | 1 byte (0 = false) | +------+---------+----------------------------+ | 2 | Num | 8 bytes | +------+---------+----------------------------+ | 3 | String | Variadic, null-terminated | +------+---------+----------------------------+ | 4 | List | 4 bytes (See the item 3.2) | +------+---------+----------------------------+ 4.2 The list value descriptor contains the amount of elements in the list. The following N Value descriptors will be treated as list elements. The N elements that belong to the list do not count towards the total arg counter. That is the only case where the expected output will contain more than one value.