require "lunit" module("tests.eressea.bson", package.seeall, lunit.testcase) function setup() eressea.free_game() end function test_bson_create() local a = attrib.create("global", 12) assert_not_equal(nil, a) for a in attrib.get("global") do assert_equal(a.data, 12) end end function test_illegal_arg() local a = attrib.create(nil, 42) assert_equal(nil, a) a = attrib.create("fred", 42) assert_equal(nil, a) end function test_bson_readwrite() local i, r = region.create(0, 0, "mountain") attrib.create(r, 42) i = eressea.write_game("test_read_write.dat") assert_equal(0, i) eressea.free_game() r = get_region(0, 0) assert_equal(nil, r) i = eressea.read_game("test_read_write.dat") assert_equal(0, i) r = get_region(0, 0) assert_not_equal(nil, r) for a in attrib.get(r) do assert_equal(a.data, 42) end end function test_bson() local r = region.create(0, 0, "mountain") local f = faction.create("noreply@eressea.de", "human", "de") local u = unit.create(f, r, 1) assert_not_equal(nil, u) assert_not_equal(nil, r) assert_not_equal(nil, f) attrib.create(r, 1) assert_equal(attrib.get(r)().data, 1) attrib.create(u, 3) assert_equal(attrib.get(u)().data, 3) attrib.create(f, 5) assert_equal(attrib.get(f)().data, 5) end function test_bson_with_multiple_attribs() local r = region.create(0, 0, "mountain") attrib.create(r, { a=1}) attrib.create(r, { a=5}) local total = 0 for a in attrib.get(r) do total = total + a.data.a; end assert_equal(6, total) end