1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

MetaDataRef: Make set_float preserve numbers exactly (#16090)

This commit is contained in:
Lars Müller 2025-05-02 21:27:00 +02:00 committed by GitHub
parent 6f3735281f
commit d96f5e1c76
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 92 additions and 12 deletions

View file

@ -8,6 +8,8 @@ compare_meta:from_table({
c = "3",
d = "4",
e = "e",
["0.3"] = "0.29999999999999999",
["0.1+0.2"] = "0.30000000000000004",
},
})
@ -21,6 +23,9 @@ local function test_metadata(meta)
meta:set_string("", "!")
meta:set_string("", "")
meta:set_float("0.3", 0.3)
meta:set_float("0.1+0.2", 0.1 + 0.2)
assert(meta:equals(compare_meta))
local tab = meta:to_table()
@ -29,6 +34,8 @@ local function test_metadata(meta)
assert(tab.fields.c == "3")
assert(tab.fields.d == "4")
assert(tab.fields.e == "e")
assert(tab.fields["0.3"] == "0.29999999999999999")
assert(tab.fields["0.1+0.2"] == "0.30000000000000004")
local keys = meta:get_keys()
assert(table.indexof(keys, "a") > 0)
@ -36,7 +43,7 @@ local function test_metadata(meta)
assert(table.indexof(keys, "c") > 0)
assert(table.indexof(keys, "d") > 0)
assert(table.indexof(keys, "e") > 0)
assert(#keys == 5)
assert(#keys == 7)
assert(not meta:contains(""))
assert(meta:contains("a"))
@ -55,6 +62,8 @@ local function test_metadata(meta)
assert(meta:get_float("a") == 1.0)
assert(meta:get_int("e") == 0)
assert(meta:get_float("e") == 0.0)
assert(meta:get_float("0.3") == 0.3)
assert(meta:get_float("0.1+0.2") == 0.1 + 0.2)
meta:set_float("f", 1.1)
meta:set_string("g", "${f}")