Extend ESM3 Script record tests

pull/3236/head
elsid 6 months ago
parent 4571a8b88a
commit 447c4bb6a0
No known key found for this signature in database
GPG Key ID: 4DE04C198CBA7625

@ -19,6 +19,7 @@
#include <algorithm>
#include <array>
#include <iterator>
#include <limits>
#include <memory>
#include <numeric>
@ -216,6 +217,19 @@ namespace ESM
for (auto& v : dst)
v = std::uniform_real_distribution<float>{ -1.0f, 1.0f }(mRandom);
}
void generateBytes(auto iterator, std::size_t count)
{
std::uniform_int_distribution<unsigned short> distribution{ 0,
std::numeric_limits<unsigned char>::max() };
std::generate_n(iterator, count, [&] { return static_cast<unsigned char>(distribution(mRandom)); });
}
void generateStrings(auto iterator, std::size_t count)
{
std::uniform_int_distribution<std::size_t> distribution{ 1, 13 };
std::generate_n(iterator, count, [&] { return generateRandomString(distribution(mRandom)); });
}
};
TEST_F(Esm3SaveLoadRecordTest, headerShouldNotChange)
@ -403,11 +417,29 @@ namespace ESM
Script record;
record.blank();
record.mId = generateRandomRefId(32);
record.mData.mNumShorts = 42;
record.mData.mNumShorts = 3;
record.mData.mNumFloats = 4;
record.mData.mNumLongs = 5;
record.mData.mScriptDataSize = 13;
generateStrings(std::back_inserter(record.mVarNames),
record.mData.mNumShorts + record.mData.mNumFloats + record.mData.mNumLongs);
record.mData.mStringTableSize = std::accumulate(record.mVarNames.begin(), record.mVarNames.end(), 0,
[](std::size_t r, const std::string& v) { return r + v.size() + 1; });
generateBytes(std::back_inserter(record.mScriptData), record.mData.mScriptDataSize);
record.mScriptText = generateRandomString(17);
Script result;
saveAndLoadRecord(record, GetParam(), result);
EXPECT_EQ(result.mId, record.mId);
EXPECT_EQ(result.mData.mNumShorts, record.mData.mNumShorts);
EXPECT_EQ(result.mData.mNumFloats, record.mData.mNumFloats);
EXPECT_EQ(result.mData.mNumShorts, record.mData.mNumShorts);
EXPECT_EQ(result.mData.mScriptDataSize, record.mData.mScriptDataSize);
EXPECT_EQ(result.mData.mStringTableSize, record.mData.mStringTableSize);
EXPECT_EQ(result.mVarNames, record.mVarNames);
EXPECT_EQ(result.mScriptData, record.mScriptData);
EXPECT_EQ(result.mScriptText, record.mScriptText);
}
TEST_P(Esm3SaveLoadRecordTest, quickKeysShouldNotChange)

Loading…
Cancel
Save