diff options
| author | fluxionary <25628292+fluxionary@users.noreply.github.com> | 2022-10-09 05:06:09 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-09 08:06:09 -0400 |
| commit | 440d966b939059dfa51604eb68d61eecb12baeb4 (patch) | |
| tree | 702416d3686b168cee90e1029a766161267277c6 /games/devtest | |
| parent | b2a3f53b297d4aec37f8272992f8e9b465d43a43 (diff) | |
| download | minetest-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.lua | 3 | ||||
| -rw-r--r-- | games/devtest/mods/unittests/itemstack_equals.lua | 74 |
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) |
