TestSchemaValidator = {} local config = require('config') local function len(t) local count = 0 for _ in pairs(t) do count = count + 1 end return count end function pprint(t, ident) local ident = ident or 0 if type(t) == 'table' then local count = 0 for k, v in pairs(t) do print(string.rep('\t', ident) .. k) pprint(v, ident + 1) count = count + 1 end if count == 0 then print('') end else print(string.rep('\t', ident) .. tostring(t)) end end function TestSchemaValidator:testBasicFields() local errors = config.validateSchema({a={type='string'}}, {a='test'}) lu.assertIs(len(errors), 0) local errors = config.validateSchema({a={type='number'}}, {a=123}) lu.assertIs(len(errors), 0) local errors = config.validateSchema({a={type='string'}}, {a=123}) lu.assertIs(len(errors), 1) end function TestSchemaValidator:testList() local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3}}) lu.assertIs(len(errors), 0) local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3,'asd'}}) lu.assertIs(len(errors), 1) end function TestSchemaValidator:testTable() local TEST_SCHEMA = { a={ type='table', schema={ b={ type='number' } } } } local errors = config.validateSchema( TEST_SCHEMA, {a= {b=2} } ) lu.assertIs(len(errors), 0) local errors = config.validateSchema( TEST_SCHEMA, {a= {b='sex'} } ) lu.assertIs(len(errors), 1) end