diff --git a/worldeditadditions/init.lua b/worldeditadditions/init.lua index 77a4573..6f24b1a 100644 --- a/worldeditadditions/init.lua +++ b/worldeditadditions/init.lua @@ -72,6 +72,8 @@ dofile(wea.modpath.."/lib/wireframe/corner_set.lua") dofile(wea.modpath.."/lib/wireframe/make_compass.lua") dofile(wea.modpath.."/lib/wireframe/wire_box.lua") +wea.normalize_test = dofile(wea.modpath.."/lib/normalize_test.lua") -- For Test command + --- diff --git a/worldeditadditions/lib/normalize_test.lua b/worldeditadditions/lib/normalize_test.lua new file mode 100644 index 0000000..3c33066 --- /dev/null +++ b/worldeditadditions/lib/normalize_test.lua @@ -0,0 +1,52 @@ +-- ████████ ███████ ███████ ████████ +-- ██ ██ ██ ██ +-- ██ █████ ███████ ██ +-- ██ ██ ██ ██ +-- ██ ███████ ███████ ██ + +-- ██ ██ █████ ███ ██ ██████ ██ ███████ ██████ +-- ██ ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ +-- ███████ ███████ ██ ██ ██ ██ ██ ██ █████ ██████ +-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +-- ██ ██ ██ ██ ██ ████ ██████ ███████ ███████ ██ ██ + +-- Metatable for tests +local metatable = { + __call = function(self,name, ...) + return pcall(self.func, name, ...) + end, + help = function(self) + return "Params: " .. self.params .. "\n" .. self.description + end +} +metatable.__index = metatable + +local normalize_test = function(test_name, def) + --- + -- 1: Validation + --- + if type(test_name) ~= "string" then + error("The test name is not a string.") + end + if type(def) ~= "table" then + error("The test definition is not a table.") + end + if type(def.description) ~= "string" then + error("The test description is not a string.") + end + if type(def.params) ~= "string" or #def.params == 0 then + error("The test params param is not valid.") + end + if type(def.func) ~= "function" then + error("The test function is not a function.") + end + + --- + -- 2: Normalisation + --- + setmetatable(def, metatable) + + return test_name, def +end + +return normalize_test \ No newline at end of file