diff options
| author | Jude Melton-Houghton <jwmhjwmh@gmail.com> | 2022-09-26 17:03:43 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-26 17:03:43 -0400 |
| commit | f4a01f3a5dc0d8fe2f4f6d804d790da91d1bc30c (patch) | |
| tree | 089ddc309e22ae8549ec3b86765ee272f57a33df /games/devtest | |
| parent | 03428d9825cfdf2cfaed6ac9410dafccac0d4f3a (diff) | |
| download | minetest-f4a01f3a5dc0d8fe2f4f6d804d790da91d1bc30c.tar.xz | |
Avoid duplication of mod metadata in memory (#12562)
Co-authored-by: sfan5 <sfan5@live.de>
Diffstat (limited to 'games/devtest')
| -rw-r--r-- | games/devtest/mods/unittests/init.lua | 1 | ||||
| -rw-r--r-- | games/devtest/mods/unittests/metadata.lua | 79 |
2 files changed, 80 insertions, 0 deletions
diff --git a/games/devtest/mods/unittests/init.lua b/games/devtest/mods/unittests/init.lua index f93d516d7..936f05c6d 100644 --- a/games/devtest/mods/unittests/init.lua +++ b/games/devtest/mods/unittests/init.lua @@ -179,6 +179,7 @@ dofile(modpath .. "/itemdescription.lua") dofile(modpath .. "/async_env.lua") dofile(modpath .. "/entity.lua") dofile(modpath .. "/content_ids.lua") +dofile(modpath .. "/metadata.lua") -------------- diff --git a/games/devtest/mods/unittests/metadata.lua b/games/devtest/mods/unittests/metadata.lua new file mode 100644 index 000000000..477ea8037 --- /dev/null +++ b/games/devtest/mods/unittests/metadata.lua @@ -0,0 +1,79 @@ +-- Tests of generic and specific metadata functionality + +local compare_meta = ItemStack("unittests:iron_lump"):get_meta() +compare_meta:from_table({ + fields = { + a = "1", + b = "2", + c = "3", + d = "4", + e = "e", + }, +}) + +local function test_metadata(meta) + meta:from_table({fields = {a = 1, b = "2"}}) + meta:set_string("c", "3") + meta:set_int("d", 4) + meta:set_string("e", "e") + + meta:set_string("", "!") + meta:set_string("", "") + + assert(meta:equals(compare_meta)) + + local tab = meta:to_table() + assert(tab.fields.a == "1") + assert(tab.fields.b == "2") + assert(tab.fields.c == "3") + assert(tab.fields.d == "4") + assert(tab.fields.e == "e") + + assert(not meta:contains("")) + assert(meta:contains("a")) + assert(meta:contains("b")) + assert(meta:contains("c")) + assert(meta:contains("d")) + assert(meta:contains("e")) + + assert(meta:get("") == nil) + assert(meta:get_string("") == "") + assert(meta:get_int("") == 0) + assert(meta:get_float("") == 0.0) + assert(meta:get("a") == "1") + assert(meta:get_string("a") == "1") + assert(meta:get_int("a") == 1) + assert(meta:get_float("a") == 1.0) + assert(meta:get_int("e") == 0) + assert(meta:get_float("e") == 0.0) + + meta:set_float("f", 1.1) + meta:set_string("g", "${f}") + meta:set_string("h", "${g}") + meta:set_string("i", "${h}") + assert(meta:get_float("h") > 1) + assert(meta:get_string("i") == "${f}") + + meta:from_table() + assert(next(meta:to_table().fields) == nil) + + assert(not meta:equals(compare_meta)) +end + +local storage_a = core.get_mod_storage() +local storage_b = core.get_mod_storage() +local function test_mod_storage() + assert(rawequal(storage_a, storage_b)) + test_metadata(storage_a) +end +unittests.register("test_mod_storage", test_mod_storage) + +local function test_item_metadata() + test_metadata(ItemStack("unittest:coal_lump"):get_meta()) +end +unittests.register("test_item_metadata", test_item_metadata) + +local function test_node_metadata(player, pos) + test_metadata(minetest.get_meta(pos)) +end +unittests.register("test_node_metadata", test_node_metadata, {map=true}) |
