metadata.lua 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. -- Tests of generic and specific metadata functionality
  2. local compare_meta = ItemStack("unittests:iron_lump"):get_meta()
  3. compare_meta:from_table({
  4. fields = {
  5. a = "1",
  6. b = "2",
  7. c = "3",
  8. d = "4",
  9. e = "e",
  10. },
  11. })
  12. local function test_metadata(meta)
  13. meta:from_table({fields = {a = 2, b = "2"}})
  14. meta:set_string("a", 1)
  15. meta:set_string("c", "3")
  16. meta:set_int("d", 4)
  17. meta:set_string("e", "e")
  18. meta:set_string("", "!")
  19. meta:set_string("", "")
  20. assert(meta:equals(compare_meta))
  21. local tab = meta:to_table()
  22. assert(tab.fields.a == "1")
  23. assert(tab.fields.b == "2")
  24. assert(tab.fields.c == "3")
  25. assert(tab.fields.d == "4")
  26. assert(tab.fields.e == "e")
  27. local keys = meta:get_keys()
  28. assert(table.indexof(keys, "a") > 0)
  29. assert(table.indexof(keys, "b") > 0)
  30. assert(table.indexof(keys, "c") > 0)
  31. assert(table.indexof(keys, "d") > 0)
  32. assert(table.indexof(keys, "e") > 0)
  33. assert(#keys == 5)
  34. assert(not meta:contains(""))
  35. assert(meta:contains("a"))
  36. assert(meta:contains("b"))
  37. assert(meta:contains("c"))
  38. assert(meta:contains("d"))
  39. assert(meta:contains("e"))
  40. assert(meta:get("") == nil)
  41. assert(meta:get_string("") == "")
  42. assert(meta:get_int("") == 0)
  43. assert(meta:get_float("") == 0.0)
  44. assert(meta:get("a") == "1")
  45. assert(meta:get_string("a") == "1")
  46. assert(meta:get_int("a") == 1)
  47. assert(meta:get_float("a") == 1.0)
  48. assert(meta:get_int("e") == 0)
  49. assert(meta:get_float("e") == 0.0)
  50. meta:set_float("f", 1.1)
  51. meta:set_string("g", "${f}")
  52. meta:set_string("h", "${g}")
  53. meta:set_string("i", "${h}")
  54. assert(meta:get_float("h") > 1)
  55. assert(meta:get_string("i") == "${f}")
  56. meta:set_float("j", 1.23456789)
  57. assert(meta:get_float("j") == 1.23456789)
  58. meta:set_float("j", -1 / 0)
  59. assert(meta:get_float("j") == -1 / 0)
  60. meta:set_float("j", 0 / 0)
  61. assert(core.is_nan(meta:get_float("j")))
  62. meta:from_table()
  63. assert(next(meta:to_table().fields) == nil)
  64. assert(#meta:get_keys() == 0)
  65. assert(not meta:equals(compare_meta))
  66. end
  67. local storage_a = core.get_mod_storage()
  68. local storage_b = core.get_mod_storage()
  69. local function test_mod_storage()
  70. assert(rawequal(storage_a, storage_b))
  71. test_metadata(storage_a)
  72. end
  73. unittests.register("test_mod_storage", test_mod_storage)
  74. local function test_item_metadata()
  75. test_metadata(ItemStack("unittest:coal_lump"):get_meta())
  76. end
  77. unittests.register("test_item_metadata", test_item_metadata)
  78. local function test_node_metadata(player, pos)
  79. test_metadata(minetest.get_meta(pos))
  80. end
  81. unittests.register("test_node_metadata", test_node_metadata, {map=true})