mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-28 12:39:41 +00:00
Extend ESM3 Script record tests
This commit is contained in:
parent
4571a8b88a
commit
447c4bb6a0
1 changed files with 33 additions and 1 deletions
|
@ -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…
Reference in a new issue