diff options
Diffstat (limited to 'test/type.lua')
-rw-r--r-- | test/type.lua | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/type.lua b/test/type.lua new file mode 100644 index 00000000..5078920b --- /dev/null +++ b/test/type.lua @@ -0,0 +1,37 @@ +$debug + +function check (object, class) + local v = next(object,nil); + while v ~= nil do + if class[v] = nil then + print("unknown field: " .. v) + elseif type(object[v]) ~= class[v].type then + print("wrong type for field " .. v) + end + v = next(object,v); + end + v = next(class,nil); + while v ~= nil do + if object[v] = nil then + if class[v].default ~= nil then + object[v] = class[v].default + else + print("field "..v.." not initialized") + end + end + v = next(class,v); + end +end + +typeblock = @{x = @{default = 0, type = "number"}, + y = @{default = 0, type = "number"}, + name = @{type = "string"} + } + +function block(t) check(t,typeblock) end + +@block{ x = 7, name = "3"} +@block{ x = "7", name = "3"} +@block{ x = 7, name = 3} +@block{ x = 7} +@block{ x = 7, name = "3", bogus=3.14} |