mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-03 17:37:18 +00:00
83 lines
2.9 KiB
C++
83 lines
2.9 KiB
C++
#include "apps/openmw/mwclass/npc.hpp"
|
|
#include "apps/openmw/mwworld/esmstore.hpp"
|
|
#include "apps/openmw/mwworld/livecellref.hpp"
|
|
#include "apps/openmw/mwworld/ptr.hpp"
|
|
#include "apps/openmw/mwworld/worldmodel.hpp"
|
|
|
|
#include <components/esm3/loadnpc.hpp>
|
|
#include <components/esm3/readerscache.hpp>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
namespace MWWorld
|
|
{
|
|
namespace
|
|
{
|
|
using namespace testing;
|
|
|
|
TEST(MWWorldPtrTest, toStringShouldReturnHumanReadableTextRepresentationOfPtrWithNullRef)
|
|
{
|
|
Ptr ptr;
|
|
EXPECT_EQ(ptr.toString(), "null object");
|
|
}
|
|
|
|
TEST(MWWorldPtrTest, toStringShouldReturnHumanReadableTextRepresentationOfPtrWithDeletedRef)
|
|
{
|
|
MWClass::Npc::registerSelf();
|
|
ESM::NPC npc;
|
|
npc.blank();
|
|
npc.mId = ESM::RefId::stringRefId("Player");
|
|
ESMStore store;
|
|
store.insert(npc);
|
|
ESM::CellRef cellRef;
|
|
cellRef.blank();
|
|
cellRef.mRefID = npc.mId;
|
|
cellRef.mRefNum = ESM::RefNum{ .mIndex = 0x2a, .mContentFile = 0xd };
|
|
LiveCellRef<ESM::NPC> liveCellRef(cellRef, &npc);
|
|
liveCellRef.mData.setDeletedByContentFile(true);
|
|
Ptr ptr(&liveCellRef);
|
|
EXPECT_EQ(ptr.toString(), "deleted object0xd00002a (NPC, \"player\")");
|
|
}
|
|
|
|
TEST(MWWorldPtrTest, toStringShouldReturnHumanReadableTextRepresentationOfPtr)
|
|
{
|
|
MWClass::Npc::registerSelf();
|
|
ESM::NPC npc;
|
|
npc.blank();
|
|
npc.mId = ESM::RefId::stringRefId("Player");
|
|
ESMStore store;
|
|
store.insert(npc);
|
|
ESM::CellRef cellRef;
|
|
cellRef.blank();
|
|
cellRef.mRefID = npc.mId;
|
|
cellRef.mRefNum = ESM::RefNum{ .mIndex = 0x2a, .mContentFile = 0xd };
|
|
LiveCellRef<ESM::NPC> liveCellRef(cellRef, &npc);
|
|
Ptr ptr(&liveCellRef);
|
|
EXPECT_EQ(ptr.toString(), "object0xd00002a (NPC, \"player\")");
|
|
}
|
|
|
|
TEST(MWWorldPtrTest, underlyingLiveCellRefShouldBeDeregisteredOnDestruction)
|
|
{
|
|
MWClass::Npc::registerSelf();
|
|
ESM::NPC npc;
|
|
npc.blank();
|
|
npc.mId = ESM::RefId::stringRefId("Player");
|
|
ESMStore store;
|
|
store.insert(npc);
|
|
ESM::ReadersCache readersCache;
|
|
WorldModel worldModel(store, readersCache);
|
|
ESM::CellRef cellRef;
|
|
cellRef.blank();
|
|
cellRef.mRefID = npc.mId;
|
|
cellRef.mRefNum = ESM::FormId{ .mIndex = 0x2a, .mContentFile = 0xd };
|
|
{
|
|
LiveCellRef<ESM::NPC> liveCellRef(cellRef, &npc);
|
|
Ptr ptr(&liveCellRef);
|
|
worldModel.registerPtr(ptr);
|
|
ASSERT_EQ(worldModel.getPtr(cellRef.mRefNum), ptr);
|
|
}
|
|
EXPECT_EQ(worldModel.getPtr(cellRef.mRefNum), Ptr());
|
|
}
|
|
}
|
|
}
|