From 4b4770fc25fac92416f6745aac8d394f8eca0981 Mon Sep 17 00:00:00 2001 From: Kampfkarren Date: Wed, 22 Aug 2018 14:07:31 -0700 Subject: [PATCH 1/3] GetEnumItems --- lib/createEnum.lua | 12 ++++++++++++ lib/createEnumGroup_spec.lua | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/lib/createEnum.lua b/lib/createEnum.lua index 540f981..b84c44a 100644 --- a/lib/createEnum.lua +++ b/lib/createEnum.lua @@ -37,6 +37,12 @@ local function createEnum(enumName, variantValues) variants[variantName] = createEnumVariant(enum, variantName, value) end + local enumItems = {} + + for _, variant in pairs(variants) do + enumItems[#enumItems + 1] = variant + end + getmetatable(enum)[typeKey] = "Enum" getmetatable(enum).__tostring = function() @@ -44,6 +50,12 @@ local function createEnum(enumName, variantValues) end getmetatable(enum).__index = function(self, key) + if key == "GetEnumItems" then + return function() + return enumItems + end + end + local variant = variants[key] if variant == nil then diff --git a/lib/createEnumGroup_spec.lua b/lib/createEnumGroup_spec.lua index 4184c19..b47daf9 100644 --- a/lib/createEnumGroup_spec.lua +++ b/lib/createEnumGroup_spec.lua @@ -40,4 +40,22 @@ describe("createEnumGroup", function() tostring(group.whatever) end) end) + + it("should return enum items with GetEnumItems", function() + local Foo = createEnum("Foo", { + Doge = 1, + Funny = 2, + }) + + local enumItems = Foo:GetEnumItems() + assert.equal(#enumItems, 2) + + local enumItemDoge = enumItems[1] + assert.equal(enumItemDoge.Name, "Doge") + assert.equal(enumItemDoge.Value, 1) + + local enumItemFunny = enumItems[2] + assert.equal(enumItemFunny.Name, "Funny") + assert.equal(enumItemFunny.Value, 2) + end) end) \ No newline at end of file From ad1beab2be323caeab3e8b8426235c5ab8ec13b5 Mon Sep 17 00:00:00 2001 From: Kampfkarren Date: Wed, 22 Aug 2018 16:06:38 -0700 Subject: [PATCH 2/3] Luacheck --- lib/createEnumGroup_spec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/createEnumGroup_spec.lua b/lib/createEnumGroup_spec.lua index b47daf9..9e04492 100644 --- a/lib/createEnumGroup_spec.lua +++ b/lib/createEnumGroup_spec.lua @@ -49,7 +49,7 @@ describe("createEnumGroup", function() local enumItems = Foo:GetEnumItems() assert.equal(#enumItems, 2) - + local enumItemDoge = enumItems[1] assert.equal(enumItemDoge.Name, "Doge") assert.equal(enumItemDoge.Value, 1) From bb344b1d23cfba4fa88c5e4b02fe43d8df7e4698 Mon Sep 17 00:00:00 2001 From: Kampfkarren Date: Wed, 22 Aug 2018 18:26:38 -0700 Subject: [PATCH 3/3] Make test undeterministic --- lib/createEnumGroup_spec.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/createEnumGroup_spec.lua b/lib/createEnumGroup_spec.lua index 9e04492..09f9ac6 100644 --- a/lib/createEnumGroup_spec.lua +++ b/lib/createEnumGroup_spec.lua @@ -42,20 +42,20 @@ describe("createEnumGroup", function() end) it("should return enum items with GetEnumItems", function() - local Foo = createEnum("Foo", { + local values = { Doge = 1, Funny = 2, - }) + } + + local Foo = createEnum("Foo", values) local enumItems = Foo:GetEnumItems() assert.equal(#enumItems, 2) - local enumItemDoge = enumItems[1] - assert.equal(enumItemDoge.Name, "Doge") - assert.equal(enumItemDoge.Value, 1) + for index=1,2 do + local enumItem = enumItems[index] - local enumItemFunny = enumItems[2] - assert.equal(enumItemFunny.Name, "Funny") - assert.equal(enumItemFunny.Value, 2) + assert.not_nil(values[enumItem.Name]) + end end) end) \ No newline at end of file