| 'use strict'; | |
| // Helper assertion functions to validate dictionary fields | |
| // on dictionary objects returned from APIs | |
| function assert_unsigned_int_field(object, field) { | |
| const num = object[field]; | |
| assert_true(Number.isInteger(num) && (num >= 0), | |
| `Expect dictionary.${field} to be unsigned integer`); | |
| } | |
| function assert_int_field(object, field) { | |
| const num = object[field]; | |
| assert_true(Number.isInteger(num), | |
| `Expect dictionary.${field} to be integer`); | |
| } | |
| function assert_string_field(object, field) { | |
| const str = object[field]; | |
| assert_equals(typeof str, 'string', | |
| `Expect dictionary.${field} to be string`); | |
| } | |
| function assert_number_field(object, field) { | |
| const num = object[field]; | |
| assert_equals(typeof num, 'number', | |
| `Expect dictionary.${field} to be number`); | |
| } | |
| function assert_boolean_field(object, field) { | |
| const bool = object[field]; | |
| assert_equals(typeof bool, 'boolean', | |
| `Expect dictionary.${field} to be boolean`); | |
| } | |
| function assert_array_field(object, field) { | |
| assert_true(Array.isArray(object[field]), | |
| `Expect dictionary.${field} to be array`); | |
| } | |
| function assert_dict_field(object, field) { | |
| assert_equals(typeof object[field], 'object', | |
| `Expect dictionary.${field} to be plain object`); | |
| assert_not_equals(object[field], null, | |
| `Expect dictionary.${field} to not be null`); | |
| } | |
| function assert_enum_field(object, field, validValues) { | |
| assert_string_field(object, field); | |
| assert_true(validValues.includes(object[field]), | |
| `Expect dictionary.${field} to have one of the valid enum values: ${validValues}`); | |
| } | |
| function assert_optional_unsigned_int_field(object, field) { | |
| if(object[field] !== undefined) { | |
| assert_unsigned_int_field(object, field); | |
| } | |
| } | |
| function assert_optional_int_field(object, field) { | |
| if(object[field] !== undefined) { | |
| assert_int_field(object, field); | |
| } | |
| } | |
| function assert_optional_string_field(object, field) { | |
| if(object[field] !== undefined) { | |
| assert_string_field(object, field); | |
| } | |
| } | |
| function assert_optional_number_field(object, field) { | |
| if(object[field] !== undefined) { | |
| assert_number_field(object, field); | |
| } | |
| } | |
| function assert_optional_boolean_field(object, field) { | |
| if(object[field] !== undefined) { | |
| assert_boolean_field(object, field); | |
| } | |
| } | |
| function assert_optional_array_field(object, field) { | |
| if(object[field] !== undefined) { | |
| assert_array_field(object, field); | |
| } | |
| } | |
| function assert_optional_dict_field(object, field) { | |
| if(object[field] !== undefined) { | |
| assert_dict_field(object, field); | |
| } | |
| } | |
| function assert_optional_enum_field(object, field, validValues) { | |
| if(object[field] !== undefined) { | |
| assert_enum_field(object, field, validValues); | |
| } | |
| } |