From f15d2e31f7bb2d2892d8db0df00754083f4e2078 Mon Sep 17 00:00:00 2001 From: VorTechnix <45538536+VorTechnix@users.noreply.github.com> Date: Sun, 13 Oct 2024 13:53:24 -0700 Subject: [PATCH] added test handler --- worldeditadditions/init.lua | 2 + worldeditadditions/lib/normalize_test.lua | 52 +++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 worldeditadditions/lib/normalize_test.lua 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