local function test(msg, f) local success, error = pcall(f) if success then print(msg .. "\t\t[OK]") else print(msg .. "\t\t[FAIL]") print(error) end end local ecs = require 'ecs' local Filter = ecs.Filter test("Filter.AND correctly matches basic keys", function() local filter = Filter.AND{"hello", "world"} assert(filter{hello=true} == false) assert(filter{world=true} == false) assert(filter{hello=true, world=true} == true) assert(filter{asm=true, hello=true, world=true} == true) end) test("Filter.AND correctly matches subfilters", function() local subfilter = Filter.AND{"hello"} local filter = Filter.AND{subfilter, "world"} assert(filter{hello=true} == false) assert(filter{world=true} == false) assert(filter{hello=true, world=true} == true) assert(filter{asm=true, hello=true, world=true} == true) end) test("Filter.OR correctly matches basic keys", function() local filter = Filter.OR{"hello", "world"} assert(filter{hello=true} == true) assert(filter{world=true} == true) assert(filter{hello=true, world=true} == true) assert(filter{asm=true} == false) end) test("Filter.OR correctly matches subfilters", function() local subfilter = Filter.OR{"hello"} local filter = Filter.OR{subfilter, "world"} assert(filter{hello=true} == true) assert(filter{world=true} == true) assert(filter{hello=true, world=true} == true) assert(filter{asm=true} == false) end)