mirror of https://github.com/OpenMW/openmw.git
Add a test and address feedback
parent
c9ef03fdd1
commit
ffe164b28d
@ -0,0 +1,57 @@
|
||||
#include <components/esm3/esmreader.hpp>
|
||||
#include <components/esm3/esmwriter.hpp>
|
||||
#include <components/esm3/loaddial.hpp>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
namespace ESM
|
||||
{
|
||||
namespace
|
||||
{
|
||||
TEST(Esm3CStringIdTest, dialNameShouldBeNullTerminated)
|
||||
{
|
||||
std::unique_ptr<std::istream> stream;
|
||||
|
||||
{
|
||||
auto ostream = std::make_unique<std::stringstream>();
|
||||
|
||||
ESMWriter writer;
|
||||
writer.setFormatVersion(DefaultFormatVersion);
|
||||
writer.save(*ostream);
|
||||
|
||||
Dialogue record;
|
||||
record.blank();
|
||||
record.mStringId = "topic name";
|
||||
record.mId = RefId::stringRefId(record.mStringId);
|
||||
record.mType = Dialogue::Topic;
|
||||
writer.startRecord(Dialogue::sRecordId);
|
||||
record.save(writer);
|
||||
writer.endRecord(Dialogue::sRecordId);
|
||||
|
||||
stream = std::move(ostream);
|
||||
}
|
||||
|
||||
ESMReader reader;
|
||||
reader.open(std::move(stream), "stream");
|
||||
ASSERT_TRUE(reader.hasMoreRecs());
|
||||
ASSERT_EQ(reader.getRecName(), Dialogue::sRecordId);
|
||||
reader.getRecHeader();
|
||||
while (reader.hasMoreSubs())
|
||||
{
|
||||
reader.getSubName();
|
||||
if (reader.retSubName().toInt() == SREC_NAME)
|
||||
{
|
||||
reader.getSubHeader();
|
||||
auto size = reader.getSubSize();
|
||||
std::string buffer(size, '1');
|
||||
reader.getExact(buffer.data(), size);
|
||||
ASSERT_EQ(buffer[size - 1], '\0');
|
||||
return;
|
||||
}
|
||||
else
|
||||
reader.skipHSub();
|
||||
}
|
||||
ASSERT_FALSE(true);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue