mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-03 14:09:39 +00:00
Merge branch 'esm_name_template_fix' into 'master'
Make sure that proper operator function of ESM:FIXED_STRING is used for char[N] argument See merge request OpenMW/openmw!63
This commit is contained in:
commit
4a69d96483
2 changed files with 40 additions and 1 deletions
|
@ -37,6 +37,42 @@ TEST(EsmFixedString, operator__eq_ne)
|
||||||
EXPECT_TRUE(name == ss);
|
EXPECT_TRUE(name == ss);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
TEST(EsmFixedString, operator__eq_ne_const)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
SCOPED_TRACE("asdc == asdc (const)");
|
||||||
|
ESM::NAME name;
|
||||||
|
name.assign("asdc");
|
||||||
|
const char s[4] = { 'a', 's', 'd', 'c' };
|
||||||
|
std::string ss(s, 4);
|
||||||
|
|
||||||
|
EXPECT_TRUE(name == s);
|
||||||
|
EXPECT_TRUE(name == ss.c_str());
|
||||||
|
EXPECT_TRUE(name == ss);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
SCOPED_TRACE("asdc == asdcx (const)");
|
||||||
|
ESM::NAME name;
|
||||||
|
name.assign("asdc");
|
||||||
|
const char s[5] = { 'a', 's', 'd', 'c', 'x' };
|
||||||
|
std::string ss(s, 5);
|
||||||
|
|
||||||
|
EXPECT_TRUE(name != s);
|
||||||
|
EXPECT_TRUE(name != ss.c_str());
|
||||||
|
EXPECT_TRUE(name != ss);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
SCOPED_TRACE("asdc == asdc[NULL] (const)");
|
||||||
|
ESM::NAME name;
|
||||||
|
name.assign("asdc");
|
||||||
|
const char s[5] = { 'a', 's', 'd', 'c', '\0' };
|
||||||
|
std::string ss(s, 5);
|
||||||
|
|
||||||
|
EXPECT_TRUE(name == s);
|
||||||
|
EXPECT_TRUE(name == ss.c_str());
|
||||||
|
EXPECT_TRUE(name == ss);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST(EsmFixedString, empty_strings)
|
TEST(EsmFixedString, empty_strings)
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,7 +35,10 @@ public:
|
||||||
return false;
|
return false;
|
||||||
return std::strncmp(self()->ro_data(), str, size) == 0;
|
return std::strncmp(self()->ro_data(), str, size) == 0;
|
||||||
}
|
}
|
||||||
bool operator==(const char* const str) const
|
|
||||||
|
//this operator will not be used for char[N], only for char*
|
||||||
|
template<typename T, typename = typename std::enable_if<std::is_same<T, char>::value>::type>
|
||||||
|
bool operator==(const T* const& str) const
|
||||||
{
|
{
|
||||||
char const* const data = self()->ro_data();
|
char const* const data = self()->ro_data();
|
||||||
for(size_t i = 0; i < size; ++i)
|
for(size_t i = 0; i < size; ++i)
|
||||||
|
|
Loading…
Reference in a new issue