mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-22 17:18:39 +00:00
ActiveObjectMgr fixes (#13560)
This commit is contained in:
parent
929a13a9a0
commit
11ec75c2ad
17 changed files with 204 additions and 153 deletions
|
@ -90,8 +90,9 @@ void TestClientActiveObjectMgr::testFreeID()
|
|||
// Register basic objects, ensure we never found
|
||||
for (u8 i = 0; i < UINT8_MAX; i++) {
|
||||
// Register an object
|
||||
auto tcao = new TestClientActiveObject();
|
||||
caomgr.registerObject(tcao);
|
||||
auto tcao_u = std::make_unique<TestClientActiveObject>();
|
||||
auto tcao = tcao_u.get();
|
||||
caomgr.registerObject(std::move(tcao_u));
|
||||
aoids.push_back(tcao->getId());
|
||||
|
||||
// Ensure next id is not in registered list
|
||||
|
@ -105,8 +106,9 @@ void TestClientActiveObjectMgr::testFreeID()
|
|||
void TestClientActiveObjectMgr::testRegisterObject()
|
||||
{
|
||||
client::ActiveObjectMgr caomgr;
|
||||
auto tcao = new TestClientActiveObject();
|
||||
UASSERT(caomgr.registerObject(tcao));
|
||||
auto tcao_u = std::make_unique<TestClientActiveObject>();
|
||||
auto tcao = tcao_u.get();
|
||||
UASSERT(caomgr.registerObject(std::move(tcao_u)));
|
||||
|
||||
u16 id = tcao->getId();
|
||||
|
||||
|
@ -114,8 +116,9 @@ void TestClientActiveObjectMgr::testRegisterObject()
|
|||
UASSERT(tcaoToCompare->getId() == id);
|
||||
UASSERT(tcaoToCompare == tcao);
|
||||
|
||||
tcao = new TestClientActiveObject();
|
||||
UASSERT(caomgr.registerObject(tcao));
|
||||
tcao_u = std::make_unique<TestClientActiveObject>();
|
||||
tcao = tcao_u.get();
|
||||
UASSERT(caomgr.registerObject(std::move(tcao_u)));
|
||||
UASSERT(caomgr.getActiveObject(tcao->getId()) == tcao);
|
||||
UASSERT(caomgr.getActiveObject(tcao->getId()) != tcaoToCompare);
|
||||
|
||||
|
@ -125,8 +128,9 @@ void TestClientActiveObjectMgr::testRegisterObject()
|
|||
void TestClientActiveObjectMgr::testRemoveObject()
|
||||
{
|
||||
client::ActiveObjectMgr caomgr;
|
||||
auto tcao = new TestClientActiveObject();
|
||||
UASSERT(caomgr.registerObject(tcao));
|
||||
auto tcao_u = std::make_unique<TestClientActiveObject>();
|
||||
auto tcao = tcao_u.get();
|
||||
UASSERT(caomgr.registerObject(std::move(tcao_u)));
|
||||
|
||||
u16 id = tcao->getId();
|
||||
UASSERT(caomgr.getActiveObject(id) != nullptr)
|
||||
|
@ -140,8 +144,10 @@ void TestClientActiveObjectMgr::testRemoveObject()
|
|||
void TestClientActiveObjectMgr::testGetActiveSelectableObjects()
|
||||
{
|
||||
client::ActiveObjectMgr caomgr;
|
||||
auto obj = new TestSelectableClientActiveObject({v3f{-1, -1, -1}, v3f{1, 1, 1}});
|
||||
UASSERT(caomgr.registerObject(obj));
|
||||
auto obj_u = std::make_unique<TestSelectableClientActiveObject>(
|
||||
aabb3f{v3f{-1, -1, -1}, v3f{1, 1, 1}});
|
||||
auto obj = obj_u.get();
|
||||
UASSERT(caomgr.registerObject(std::move(obj_u)));
|
||||
|
||||
auto assert_obj_selected = [&] (v3f a, v3f b) {
|
||||
auto actual = caomgr.getActiveSelectableObjects({a, b});
|
||||
|
|
|
@ -53,15 +53,6 @@ void TestServerActiveObjectMgr::runTests(IGameDef *gamedef)
|
|||
TEST(testGetAddedActiveObjectsAroundPos);
|
||||
}
|
||||
|
||||
void clearSAOMgr(server::ActiveObjectMgr *saomgr)
|
||||
{
|
||||
auto clear_cb = [](ServerActiveObject *obj, u16 id) {
|
||||
delete obj;
|
||||
return true;
|
||||
};
|
||||
saomgr->clear(clear_cb);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void TestServerActiveObjectMgr::testFreeID()
|
||||
|
@ -78,8 +69,9 @@ void TestServerActiveObjectMgr::testFreeID()
|
|||
// Register basic objects, ensure we never found
|
||||
for (u8 i = 0; i < UINT8_MAX; i++) {
|
||||
// Register an object
|
||||
auto sao = new MockServerActiveObject();
|
||||
saomgr.registerObject(sao);
|
||||
auto sao_u = std::make_unique<MockServerActiveObject>();
|
||||
auto sao = sao_u.get();
|
||||
saomgr.registerObject(std::move(sao_u));
|
||||
aoids.push_back(sao->getId());
|
||||
|
||||
// Ensure next id is not in registered list
|
||||
|
@ -87,14 +79,15 @@ void TestServerActiveObjectMgr::testFreeID()
|
|||
aoids.end());
|
||||
}
|
||||
|
||||
clearSAOMgr(&saomgr);
|
||||
saomgr.clear();
|
||||
}
|
||||
|
||||
void TestServerActiveObjectMgr::testRegisterObject()
|
||||
{
|
||||
server::ActiveObjectMgr saomgr;
|
||||
auto sao = new MockServerActiveObject();
|
||||
UASSERT(saomgr.registerObject(sao));
|
||||
auto sao_u = std::make_unique<MockServerActiveObject>();
|
||||
auto sao = sao_u.get();
|
||||
UASSERT(saomgr.registerObject(std::move(sao_u)));
|
||||
|
||||
u16 id = sao->getId();
|
||||
|
||||
|
@ -102,19 +95,21 @@ void TestServerActiveObjectMgr::testRegisterObject()
|
|||
UASSERT(saoToCompare->getId() == id);
|
||||
UASSERT(saoToCompare == sao);
|
||||
|
||||
sao = new MockServerActiveObject();
|
||||
UASSERT(saomgr.registerObject(sao));
|
||||
sao_u = std::make_unique<MockServerActiveObject>();
|
||||
sao = sao_u.get();
|
||||
UASSERT(saomgr.registerObject(std::move(sao_u)));
|
||||
UASSERT(saomgr.getActiveObject(sao->getId()) == sao);
|
||||
UASSERT(saomgr.getActiveObject(sao->getId()) != saoToCompare);
|
||||
|
||||
clearSAOMgr(&saomgr);
|
||||
saomgr.clear();
|
||||
}
|
||||
|
||||
void TestServerActiveObjectMgr::testRemoveObject()
|
||||
{
|
||||
server::ActiveObjectMgr saomgr;
|
||||
auto sao = new MockServerActiveObject();
|
||||
UASSERT(saomgr.registerObject(sao));
|
||||
auto sao_u = std::make_unique<MockServerActiveObject>();
|
||||
auto sao = sao_u.get();
|
||||
UASSERT(saomgr.registerObject(std::move(sao_u)));
|
||||
|
||||
u16 id = sao->getId();
|
||||
UASSERT(saomgr.getActiveObject(id) != nullptr)
|
||||
|
@ -122,7 +117,7 @@ void TestServerActiveObjectMgr::testRemoveObject()
|
|||
saomgr.removeObject(sao->getId());
|
||||
UASSERT(saomgr.getActiveObject(id) == nullptr);
|
||||
|
||||
clearSAOMgr(&saomgr);
|
||||
saomgr.clear();
|
||||
}
|
||||
|
||||
void TestServerActiveObjectMgr::testGetObjectsInsideRadius()
|
||||
|
@ -137,7 +132,7 @@ void TestServerActiveObjectMgr::testGetObjectsInsideRadius()
|
|||
};
|
||||
|
||||
for (const auto &p : sao_pos) {
|
||||
saomgr.registerObject(new MockServerActiveObject(nullptr, p));
|
||||
saomgr.registerObject(std::make_unique<MockServerActiveObject>(nullptr, p));
|
||||
}
|
||||
|
||||
std::vector<ServerActiveObject *> result;
|
||||
|
@ -160,7 +155,7 @@ void TestServerActiveObjectMgr::testGetObjectsInsideRadius()
|
|||
saomgr.getObjectsInsideRadius(v3f(), 750000, result, include_obj_cb);
|
||||
UASSERTCMP(int, ==, result.size(), 4);
|
||||
|
||||
clearSAOMgr(&saomgr);
|
||||
saomgr.clear();
|
||||
}
|
||||
|
||||
void TestServerActiveObjectMgr::testGetAddedActiveObjectsAroundPos()
|
||||
|
@ -175,7 +170,7 @@ void TestServerActiveObjectMgr::testGetAddedActiveObjectsAroundPos()
|
|||
};
|
||||
|
||||
for (const auto &p : sao_pos) {
|
||||
saomgr.registerObject(new MockServerActiveObject(nullptr, p));
|
||||
saomgr.registerObject(std::make_unique<MockServerActiveObject>(nullptr, p));
|
||||
}
|
||||
|
||||
std::queue<u16> result;
|
||||
|
@ -188,5 +183,5 @@ void TestServerActiveObjectMgr::testGetAddedActiveObjectsAroundPos()
|
|||
saomgr.getAddedActiveObjectsAroundPos(v3f(), 740, 50, cur_objects, result);
|
||||
UASSERTCMP(int, ==, result.size(), 2);
|
||||
|
||||
clearSAOMgr(&saomgr);
|
||||
saomgr.clear();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue