mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
add unit tests for map block position encoding
This commit is contained in:
parent
42ac5b2f40
commit
c439d784ac
1 changed files with 31 additions and 0 deletions
|
@ -72,6 +72,7 @@ public:
|
||||||
void testLoad();
|
void testLoad();
|
||||||
void testList(int expect);
|
void testList(int expect);
|
||||||
void testRemove();
|
void testRemove();
|
||||||
|
void testPositionEncoding();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MapDatabaseProvider *provider = nullptr;
|
MapDatabaseProvider *provider = nullptr;
|
||||||
|
@ -90,6 +91,8 @@ void TestMapDatabase::runTests(IGameDef *gamedef)
|
||||||
test_data.push_back(static_cast<char>(c));
|
test_data.push_back(static_cast<char>(c));
|
||||||
sanity_check(!test_data.empty());
|
sanity_check(!test_data.empty());
|
||||||
|
|
||||||
|
TEST(testPositionEncoding);
|
||||||
|
|
||||||
rawstream << "-------- Dummy" << std::endl;
|
rawstream << "-------- Dummy" << std::endl;
|
||||||
|
|
||||||
// We can't re-create this object since it would lose the data
|
// We can't re-create this object since it would lose the data
|
||||||
|
@ -193,3 +196,31 @@ void TestMapDatabase::testRemove()
|
||||||
// FIXME: this isn't working consistently, maybe later
|
// FIXME: this isn't working consistently, maybe later
|
||||||
//UASSERT(!db->deleteBlock({1, 2, 4}));
|
//UASSERT(!db->deleteBlock({1, 2, 4}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestMapDatabase::testPositionEncoding()
|
||||||
|
{
|
||||||
|
auto db = std::make_unique<Database_Dummy>();
|
||||||
|
|
||||||
|
// Unit vectors and extremes
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({0, 0, 0}), 0)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({1, 0, 0}), 1)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({0, 1, 0}), 0x1000)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({0, 0, 1}), 0x1000000)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({-1, 0, 0}), -1)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({0, -1, 0}), -0x1000)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({0, 0, -1}), -0x1000000)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({2047, 2047, 2047}), 0x7FF7FF7FF)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({-2048, -2048, -2048}), -0x800800800)
|
||||||
|
UASSERTEQ(s64, db->getBlockAsInteger({-123, 456, -789}), -0x314e3807b)
|
||||||
|
|
||||||
|
UASSERT(db->getIntegerAsBlock(0) == v3s16(0, 0, 0))
|
||||||
|
UASSERT(db->getIntegerAsBlock(1) == v3s16(1, 0, 0))
|
||||||
|
UASSERT(db->getIntegerAsBlock(0x1000) == v3s16(0, 1, 0))
|
||||||
|
UASSERT(db->getIntegerAsBlock(0x1000000) == v3s16(0, 0, 1))
|
||||||
|
UASSERT(db->getIntegerAsBlock(-1) == v3s16(-1, 0, 0))
|
||||||
|
UASSERT(db->getIntegerAsBlock(-0x1000) == v3s16(0, -1, 0))
|
||||||
|
UASSERT(db->getIntegerAsBlock(-0x1000000) == v3s16(0, 0, -1))
|
||||||
|
UASSERT(db->getIntegerAsBlock(0x7FF7FF7FF) == v3s16(2047, 2047, 2047))
|
||||||
|
UASSERT(db->getIntegerAsBlock(-0x800800800) == v3s16(-2048, -2048, -2048))
|
||||||
|
UASSERT(db->getIntegerAsBlock(-0x314e3807b) == v3s16(-123, 456, -789))
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue