aboutsummaryrefslogtreecommitdiff
path: root/games/devtest
diff options
context:
space:
mode:
authorfluxionary <25628292+fluxionary@users.noreply.github.com>2022-10-09 05:06:09 -0700
committerGitHub <noreply@github.com>2022-10-09 08:06:09 -0400
commit440d966b939059dfa51604eb68d61eecb12baeb4 (patch)
tree702416d3686b168cee90e1029a766161267277c6 /games/devtest
parentb2a3f53b297d4aec37f8272992f8e9b465d43a43 (diff)
downloadminetest-440d966b939059dfa51604eb68d61eecb12baeb4.tar.xz
add an 'equals' method to ItemStack and compatibility w/ lua '==' (#12771)
Co-authored-by: rubenwardy <rw@rubenwardy.com> Co-authored-by: sfan5 <sfan5@live.de>
Diffstat (limited to 'games/devtest')
-rw-r--r--games/devtest/mods/unittests/init.lua3
-rw-r--r--games/devtest/mods/unittests/itemstack_equals.lua74
2 files changed, 76 insertions, 1 deletions
diff --git a/games/devtest/mods/unittests/init.lua b/games/devtest/mods/unittests/init.lua
index 936f05c6d..d8237e767 100644
--- a/games/devtest/mods/unittests/init.lua
+++ b/games/devtest/mods/unittests/init.lua
@@ -91,7 +91,7 @@ function unittests.run_one(idx, counters, out_callback, player, pos)
done(status, err)
out_callback(true)
end
-
+
return true
end
@@ -178,6 +178,7 @@ dofile(modpath .. "/crafting.lua")
dofile(modpath .. "/itemdescription.lua")
dofile(modpath .. "/async_env.lua")
dofile(modpath .. "/entity.lua")
+dofile(modpath .. "/itemstack_equals.lua")
dofile(modpath .. "/content_ids.lua")
dofile(modpath .. "/metadata.lua")
diff --git a/games/devtest/mods/unittests/itemstack_equals.lua b/games/devtest/mods/unittests/itemstack_equals.lua
new file mode 100644
index 000000000..561e612c4
--- /dev/null
+++ b/games/devtest/mods/unittests/itemstack_equals.lua
@@ -0,0 +1,74 @@
+local function test_itemstack_equals_non_stack()
+ local i1 = ItemStack("basenodes:stone")
+ local i2 = { foo = "bar" }
+
+ assert(not i1:equals(i2))
+ assert(i1 ~= i2)
+ assert(i2 ~= i1)
+end
+
+unittests.register("test_itemstack_equals_non_stack", test_itemstack_equals_non_stack)
+
+local function test_itemstack_equals_name()
+ local i1 = ItemStack("basenodes:stone")
+ local i2 = ItemStack("basenodes:desert_stone")
+
+ assert(not i1:equals(i2))
+ assert(i1 ~= i2)
+end
+
+unittests.register("test_itemstack_equals_name", test_itemstack_equals_name)
+
+local function test_itemstack_equals_count()
+ local i1 = ItemStack("basenodes:stone")
+ local i2 = ItemStack("basenodes:stone 2")
+
+ assert(not i1:equals(i2))
+ assert(i1 ~= i2)
+end
+
+unittests.register("test_itemstack_equals_count", test_itemstack_equals_count)
+
+local function test_itemstack_equals_wear()
+ local i1 = ItemStack("basetools:axe_stone")
+ local i2 = ItemStack("basetools:axe_stone")
+
+ i2:add_wear(1)
+
+ assert(not i1:equals(i2))
+ assert(i1 ~= i2)
+end
+
+unittests.register("test_itemstack_equals_wear", test_itemstack_equals_wear)
+
+local function test_itemstack_equals_metadata()
+ local i1 = ItemStack("basenodes:stone")
+ local i2 = ItemStack("basenodes:stone")
+ local i3 = ItemStack("basenodes:stone")
+
+ local m1 = i1:get_meta()
+ local m2 = i2:get_meta()
+ local m3 = i3:get_meta()
+
+ local keys = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}
+ local values = {}
+
+ for i, key in pairs(keys) do
+ m1:set_int(key, i)
+ m3:set_int(key, i)
+ values[key] = i
+ end
+
+ m3:set_int("a", 999)
+
+ for key, i in pairs(values) do
+ m2:set_int(key, i)
+ end
+
+ assert(i1:equals(i2))
+ assert(i1 == i2)
+ assert(not i1:equals(i3))
+ assert(i1 ~= i3)
+end
+
+unittests.register("test_itemstack_equals_metadata", test_itemstack_equals_metadata)