* Copypaste ElementMap * Add MappedNameRef * Fix missing include * Copypaste `findTagInElementName` * fix error introduced _somewhere_ * refactor toponaming constants * Move `findTagInElementName` in `MappedName` * reintroduce workaround to compile ElementMap * Added missing functions copied from complexgeodata * fix last compile errors, reorder and format files * remove recursive refs to ComplexGeoData * Add more comments * fixed comments and added tests * added FIXME, make functions private, misc fixes * Move static functions from complexGeoData to PostfixStringReferences. Rename to ElementNamingUtils * Fix broken includes due to previous change * Revert constants from string to const char* * added childmap tests and made hasher public * Make functions private * Added remaining tests * removed bool return from `erase` functions * fix missing appexport Co-authored-by: John Dupuy <jdupuy98@gmail.com>
839 lines
24 KiB
C++
839 lines
24 KiB
C++
// SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
#include "App/ComplexGeoData.h"
|
|
#include "App/MappedName.h"
|
|
|
|
#include <string>
|
|
|
|
// NOLINTBEGIN(readability-magic-numbers)
|
|
|
|
TEST(MappedName, defaultConstruction)
|
|
{
|
|
// Act
|
|
Data::MappedName mappedName;
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), true);
|
|
EXPECT_EQ(mappedName.size(), 0);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray());
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, namedConstruction)
|
|
{
|
|
// Act
|
|
Data::MappedName mappedName("TEST");
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 4);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, namedConstructionWithMaxSize)
|
|
{
|
|
// Act
|
|
Data::MappedName mappedName("TEST", 2);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 2);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TE"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, namedConstructionDiscardPrefix)
|
|
{
|
|
// Arrange
|
|
std::string name = std::string(Data::ELEMENT_MAP_PREFIX) + "TEST";
|
|
|
|
// Act
|
|
Data::MappedName mappedName(name.c_str());
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 4);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, stringNamedConstruction)
|
|
{
|
|
// Act
|
|
Data::MappedName mappedName(std::string("TEST"));
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 4);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, stringNamedConstructionDiscardPrefix)
|
|
{
|
|
// Arrange
|
|
std::string name = std::string(Data::ELEMENT_MAP_PREFIX) + "TEST";
|
|
|
|
// Act
|
|
Data::MappedName mappedName(name);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 4);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, constructFromIndexedNameNoIndex)
|
|
{
|
|
// Arrange
|
|
Data::IndexedName indexedName {"INDEXED_NAME"};
|
|
|
|
// Act
|
|
Data::MappedName mappedName {indexedName};
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.dataBytes().constData(), indexedName.getType());// shared memory
|
|
EXPECT_EQ(mappedName.isRaw(), true);
|
|
}
|
|
|
|
TEST(MappedName, constructFromIndexedNameWithIndex)
|
|
{
|
|
// Arrange
|
|
Data::IndexedName indexedName {"INDEXED_NAME", 1};
|
|
|
|
// Act
|
|
Data::MappedName mappedName {indexedName};
|
|
|
|
// Assert
|
|
EXPECT_NE(mappedName.dataBytes().constData(), indexedName.getType());// NOT shared memory
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.toString(), indexedName.toString());
|
|
}
|
|
|
|
TEST(MappedName, copyConstructor)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp("TEST");
|
|
|
|
// Act
|
|
Data::MappedName mappedName(temp);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 4);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, copyConstructorWithPostfix)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp("TEST");
|
|
|
|
// Act
|
|
Data::MappedName mappedName(temp, "POSTFIXTEST");
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 15);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTEST"));
|
|
|
|
// Act
|
|
Data::MappedName mappedName2(mappedName, "ANOTHERPOSTFIX");
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName2.isRaw(), false);
|
|
EXPECT_EQ(mappedName2.empty(), false);
|
|
EXPECT_EQ(mappedName2.size(), 29);
|
|
EXPECT_EQ(mappedName2.dataBytes(), QByteArray("TESTPOSTFIXTEST"));
|
|
EXPECT_EQ(mappedName2.postfixBytes(), QByteArray("ANOTHERPOSTFIX"));
|
|
}
|
|
|
|
TEST(MappedName, copyConstructorStartpos)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
Data::MappedName mappedName(temp, 2, -1);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 13);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("ST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTEST"));
|
|
}
|
|
|
|
TEST(MappedName, copyConstructorStartposAndSize)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
Data::MappedName mappedName(temp, 2, 6);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 6);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("ST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POST"));
|
|
}
|
|
|
|
TEST(MappedName, moveConstructor)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
Data::MappedName mappedName(std::move(temp));
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 15);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTEST"));
|
|
}
|
|
|
|
TEST(MappedName, fromRawData)
|
|
{
|
|
// Act
|
|
Data::MappedName mappedName = Data::MappedName::fromRawData("TESTTEST", 10);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), true);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 10);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TESTTEST", 10));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, fromRawDataQByteArray)
|
|
{
|
|
// Act
|
|
Data::MappedName mappedName = Data::MappedName::fromRawData(QByteArray("TESTTEST", 10));
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), true);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 10);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TESTTEST", 10));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, fromRawDataCopy)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp = Data::MappedName::fromRawData(QByteArray("TESTTEST", 10));
|
|
temp.append("TESTPOSTFIX");
|
|
temp.compact();// Always call compact before accessing data!
|
|
|
|
// Act
|
|
Data::MappedName mappedName = Data::MappedName::fromRawData(temp, 0);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), true);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 21);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TESTTEST", 10));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("TESTPOSTFIX"));
|
|
}
|
|
|
|
TEST(MappedName, fromRawDataCopyStartposAndSize)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp = Data::MappedName::fromRawData(QByteArray("TESTTEST", 8));
|
|
temp.append("ABCDEFGHIJKLM");// postfix
|
|
temp.compact(); // Always call compact before accessing data!
|
|
|
|
// Act
|
|
Data::MappedName mappedName = Data::MappedName::fromRawData(temp, 2, 13);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), true);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 13);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("STTEST", 6));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("ABCDEFG"));
|
|
}
|
|
|
|
TEST(MappedName, assignmentOperator)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
Data::MappedName mappedName = temp;
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 15);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTEST"));
|
|
}
|
|
|
|
TEST(MappedName, assignmentOperatorString)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName;
|
|
|
|
// Act
|
|
mappedName = std::string("TEST");
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 4);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, assignmentOperatorConstCharPtr)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName;
|
|
|
|
// Act
|
|
mappedName = "TEST";
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 4);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, assignmentOperatorMove)
|
|
{
|
|
// Arrange
|
|
Data::MappedName temp(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
Data::MappedName mappedName = std::move(temp);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 15);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTEST"));
|
|
}
|
|
|
|
TEST(MappedName, streamInsertionOperator)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
std::stringstream ss;
|
|
|
|
// Act
|
|
ss << mappedName;
|
|
|
|
// Assert
|
|
EXPECT_EQ(ss.str(), std::string("TESTPOSTFIXTEST"));
|
|
}
|
|
|
|
TEST(MappedName, comparisonOperators)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName1(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
Data::MappedName mappedName2(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
Data::MappedName mappedName3(Data::MappedName("TESTPOST"), "FIXTEST");
|
|
Data::MappedName mappedName4(Data::MappedName("THIS"), "ISDIFFERENT");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName1 == mappedName1, true);
|
|
EXPECT_EQ(mappedName1 == mappedName2, true);
|
|
EXPECT_EQ(mappedName1 == mappedName3, true);
|
|
EXPECT_EQ(mappedName1 == mappedName4, false);
|
|
|
|
EXPECT_EQ(mappedName1 != mappedName1, false);
|
|
EXPECT_EQ(mappedName1 != mappedName2, false);
|
|
EXPECT_EQ(mappedName1 != mappedName3, false);
|
|
EXPECT_EQ(mappedName1 != mappedName4, true);
|
|
}
|
|
|
|
TEST(MappedName, additionOperators)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
mappedName += "POST1";
|
|
mappedName += std::string("POST2");
|
|
mappedName += QByteArray("POST3");
|
|
mappedName += Data::MappedName("POST4");
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 35);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTESTPOST1POST2POST3POST4"));
|
|
|
|
// Arrange
|
|
mappedName = Data::MappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
mappedName = mappedName + Data::MappedName("POST5");
|
|
mappedName = mappedName + "POST6";
|
|
mappedName = mappedName + std::string("POST7");
|
|
mappedName = mappedName + QByteArray("POST8");
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 35);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTESTPOST5POST6POST7POST8"));
|
|
}
|
|
|
|
TEST(MappedName, append)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName;
|
|
|
|
// Act
|
|
mappedName.append("TEST");
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 4);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray(""));
|
|
|
|
// Act
|
|
mappedName.append("POSTFIX");
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 11);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIX"));
|
|
|
|
// Act
|
|
mappedName.append("ANOTHERPOSTFIX", 5);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 16);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXANOTH"));
|
|
}
|
|
|
|
TEST(MappedName, appendMappedNameObj)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName;
|
|
Data::MappedName temp(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
mappedName.append(temp);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 15);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTEST"));
|
|
|
|
// Act
|
|
mappedName.append(temp, 2, 7);
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 22);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TEST"));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray("POSTFIXTESTSTPOSTF"));
|
|
}
|
|
|
|
TEST(MappedName, toString)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.toString(0), "TESTPOSTFIXTEST");
|
|
EXPECT_EQ(mappedName.toString(0), std::string("TESTPOSTFIXTEST"));
|
|
EXPECT_EQ(mappedName.toString(2, 8), "STPOSTFI");
|
|
EXPECT_EQ(mappedName.toString(2, 8), std::string("STPOSTFI"));
|
|
}
|
|
|
|
TEST(MappedName, toConstString)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
int size {0};
|
|
|
|
// Act
|
|
const char* temp = mappedName.toConstString(0, size);
|
|
|
|
// Assert
|
|
EXPECT_EQ(QByteArray(temp, size), QByteArray("TEST"));
|
|
EXPECT_EQ(size, 4);
|
|
|
|
// Act
|
|
const char* temp2 = mappedName.toConstString(7, size);
|
|
|
|
// Assert
|
|
EXPECT_EQ(QByteArray(temp2, size), QByteArray("TFIXTEST"));
|
|
EXPECT_EQ(size, 8);
|
|
}
|
|
|
|
TEST(MappedName, toRawBytes)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.toRawBytes(), QByteArray("TESTPOSTFIXTEST"));
|
|
EXPECT_EQ(mappedName.toRawBytes(3), QByteArray("TPOSTFIXTEST"));
|
|
EXPECT_EQ(mappedName.toRawBytes(7, 3), QByteArray("TFI"));
|
|
EXPECT_EQ(mappedName.toRawBytes(502, 5), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, toIndexedNameASCIIOnly)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName {"MAPPED_NAME"};
|
|
|
|
// Act
|
|
auto indexedName = mappedName.toIndexedName();
|
|
|
|
// Assert
|
|
EXPECT_FALSE(indexedName.isNull());
|
|
}
|
|
|
|
TEST(MappedName, toIndexedNameInvalid)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName {"MAPPED-NAME"};
|
|
|
|
// Act
|
|
auto indexedName = mappedName.toIndexedName();
|
|
|
|
// Assert
|
|
EXPECT_TRUE(indexedName.isNull());
|
|
}
|
|
|
|
TEST(MappedName, appendToBuffer)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
std::string buffer("STUFF");
|
|
|
|
// Act
|
|
mappedName.appendToBuffer(buffer);
|
|
|
|
// Assert
|
|
EXPECT_EQ(buffer, std::string("STUFFTESTPOSTFIXTEST"));
|
|
|
|
// Act
|
|
mappedName.appendToBuffer(buffer, 2, 7);
|
|
|
|
// Assert
|
|
EXPECT_EQ(buffer, std::string("STUFFTESTPOSTFIXTESTSTPOSTF"));
|
|
}
|
|
|
|
TEST(MappedName, appendToBufferWithPrefix)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
std::string buffer("STUFF");
|
|
std::string elemMapPrefix = Data::ELEMENT_MAP_PREFIX;
|
|
|
|
// Act
|
|
mappedName.appendToBufferWithPrefix(buffer);
|
|
|
|
// Assert
|
|
EXPECT_EQ(buffer, std::string("STUFF") + elemMapPrefix + std::string("TESTPOSTFIXTEST"));
|
|
|
|
// Arrange
|
|
Data::MappedName mappedName2("TEST");// If mappedName does not have a postfix and is a valid
|
|
// indexedName: prefix is not added
|
|
|
|
// Act
|
|
mappedName2.appendToBufferWithPrefix(buffer);
|
|
|
|
// Assert
|
|
EXPECT_EQ(buffer,
|
|
std::string("STUFF") + elemMapPrefix + std::string("TESTPOSTFIXTEST")
|
|
+ /*missing prefix*/ std::string("TEST"));
|
|
}
|
|
|
|
TEST(MappedName, toPrefixedString)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
std::string buffer("STUFF");
|
|
std::string elemMapPrefix = Data::ELEMENT_MAP_PREFIX;
|
|
|
|
// Act
|
|
buffer += mappedName.toPrefixedString();
|
|
|
|
// Assert
|
|
EXPECT_EQ(buffer, std::string("STUFF") + elemMapPrefix + std::string("TESTPOSTFIXTEST"));
|
|
|
|
// Arrange
|
|
Data::MappedName mappedName2("TEST");// If mappedName does not have a postfix and is a valid
|
|
// indexedName: prefix is not added
|
|
|
|
// Act
|
|
buffer += mappedName2.toPrefixedString();
|
|
|
|
// Assert
|
|
EXPECT_EQ(buffer,
|
|
std::string("STUFF") + elemMapPrefix + std::string("TESTPOSTFIXTEST")
|
|
+ /*missing prefix*/ std::string("TEST"));
|
|
}
|
|
|
|
TEST(MappedName, toBytes)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.toBytes(), QByteArray("TESTPOSTFIXTEST"));
|
|
}
|
|
|
|
TEST(MappedName, compare)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName1(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
Data::MappedName mappedName2(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
Data::MappedName mappedName3(Data::MappedName("TESTPOST"), "FIXTEST");
|
|
Data::MappedName mappedName4(Data::MappedName("THIS"), "ISDIFFERENT");
|
|
Data::MappedName mappedName5(Data::MappedName("SH"), "ORTHER");
|
|
Data::MappedName mappedName6(Data::MappedName("VERYVERYVERY"), "VERYMUCHLONGER");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName1.compare(mappedName1), 0);
|
|
EXPECT_EQ(mappedName1.compare(mappedName2), 0);
|
|
EXPECT_EQ(mappedName1.compare(mappedName3), 0);
|
|
EXPECT_EQ(mappedName1.compare(mappedName4), -1);
|
|
EXPECT_EQ(mappedName1.compare(mappedName5), 1);
|
|
EXPECT_EQ(mappedName1.compare(mappedName6), -1);
|
|
|
|
EXPECT_EQ(mappedName1 < mappedName1, false);
|
|
EXPECT_EQ(mappedName1 < mappedName2, false);
|
|
EXPECT_EQ(mappedName1 < mappedName3, false);
|
|
EXPECT_EQ(mappedName1 < mappedName4, true);
|
|
EXPECT_EQ(mappedName1 < mappedName5, false);
|
|
EXPECT_EQ(mappedName1 < mappedName6, true);
|
|
}
|
|
|
|
TEST(MappedName, subscriptOperator)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName[0], 'T');
|
|
EXPECT_EQ(mappedName[1], 'E');
|
|
EXPECT_EQ(mappedName[2], 'S');
|
|
EXPECT_EQ(mappedName[3], 'T');
|
|
EXPECT_EQ(mappedName[4], 'P');
|
|
EXPECT_EQ(mappedName[5], 'O');
|
|
EXPECT_EQ(mappedName[6], 'S');
|
|
EXPECT_EQ(mappedName[7], 'T');
|
|
EXPECT_EQ(mappedName[8], 'F');
|
|
EXPECT_EQ(mappedName[9], 'I');
|
|
}
|
|
|
|
TEST(MappedName, copy)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
Data::MappedName mappedName2 = mappedName.copy();
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName, mappedName2);
|
|
}
|
|
|
|
TEST(MappedName, compact)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName = Data::MappedName::fromRawData("TESTTEST", 10);
|
|
|
|
// Act
|
|
mappedName.compact();
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.isRaw(), false);
|
|
EXPECT_EQ(mappedName.empty(), false);
|
|
EXPECT_EQ(mappedName.size(), 10);
|
|
EXPECT_EQ(mappedName.dataBytes(), QByteArray("TESTTEST", 10));
|
|
EXPECT_EQ(mappedName.postfixBytes(), QByteArray());
|
|
}
|
|
|
|
TEST(MappedName, boolOperator)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName;
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ((bool)mappedName, false);
|
|
|
|
// Arrange
|
|
mappedName.append("TEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ((bool)mappedName, true);
|
|
}
|
|
|
|
TEST(MappedName, clear)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act
|
|
mappedName.clear();
|
|
|
|
// Assert
|
|
EXPECT_EQ(mappedName.empty(), true);
|
|
}
|
|
|
|
TEST(MappedName, find)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.find(nullptr), -1);
|
|
EXPECT_EQ(mappedName.find(""), 0);
|
|
EXPECT_EQ(mappedName.find(std::string("")), 0);
|
|
EXPECT_EQ(mappedName.find("TEST"), 0);
|
|
EXPECT_EQ(mappedName.find("STPO"), -1);// sentence must be fully contained in data or postfix
|
|
EXPECT_EQ(mappedName.find("POST"), 4);
|
|
EXPECT_EQ(mappedName.find("POST", 4), 4);
|
|
EXPECT_EQ(mappedName.find("POST", 5), -1);
|
|
|
|
EXPECT_EQ(mappedName.rfind("ST"), 13);
|
|
EXPECT_EQ(mappedName.rfind("ST", 15), 13);
|
|
EXPECT_EQ(mappedName.rfind("ST", 14), 13);
|
|
EXPECT_EQ(mappedName.rfind("ST", 13), 13);
|
|
EXPECT_EQ(mappedName.rfind("ST", 12), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 11), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 10), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 9), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 8), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 7), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 6), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 5), 2);
|
|
EXPECT_EQ(mappedName.rfind("ST", 4), 2);
|
|
EXPECT_EQ(mappedName.rfind("ST", 3), 2);
|
|
EXPECT_EQ(mappedName.rfind("ST", 2), 2);
|
|
EXPECT_EQ(mappedName.rfind("ST", 1), -1);
|
|
EXPECT_EQ(mappedName.rfind("ST", 0), -1);
|
|
}
|
|
|
|
TEST(MappedName, rfind)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.rfind(nullptr), -1);
|
|
EXPECT_EQ(mappedName.rfind(""), mappedName.size());
|
|
EXPECT_EQ(mappedName.rfind(std::string("")), mappedName.size());
|
|
EXPECT_EQ(mappedName.rfind("TEST"), 11);
|
|
EXPECT_EQ(mappedName.rfind("STPO"), -1);// sentence must be fully contained in data or postfix
|
|
EXPECT_EQ(mappedName.rfind("POST"), 4);
|
|
EXPECT_EQ(mappedName.rfind("POST", 4), 4);
|
|
EXPECT_EQ(mappedName.rfind("POST", 3), -1);
|
|
|
|
EXPECT_EQ(mappedName.rfind("ST"), 13);
|
|
EXPECT_EQ(mappedName.rfind("ST", 0), -1);
|
|
EXPECT_EQ(mappedName.rfind("ST", 1), -1);
|
|
EXPECT_EQ(mappedName.rfind("ST", 2), 2);
|
|
EXPECT_EQ(mappedName.rfind("ST", 3), 2);
|
|
EXPECT_EQ(mappedName.rfind("ST", 4), 2);
|
|
EXPECT_EQ(mappedName.rfind("ST", 5), 2);
|
|
EXPECT_EQ(mappedName.rfind("ST", 6), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 7), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 8), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 9), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 10), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 11), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 12), 6);
|
|
EXPECT_EQ(mappedName.rfind("ST", 13), 13);
|
|
EXPECT_EQ(mappedName.rfind("ST", 14), 13);
|
|
EXPECT_EQ(mappedName.rfind("ST", 15), 13);
|
|
}
|
|
|
|
TEST(MappedName, endswith)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName("TEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.endsWith(nullptr), false);
|
|
EXPECT_EQ(mappedName.endsWith("TEST"), true);
|
|
EXPECT_EQ(mappedName.endsWith(std::string("TEST")), true);
|
|
EXPECT_EQ(mappedName.endsWith("WASD"), false);
|
|
|
|
// Arrange
|
|
mappedName.append("POSTFIX");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.endsWith(nullptr), false);
|
|
EXPECT_EQ(mappedName.endsWith("TEST"), false);
|
|
EXPECT_EQ(mappedName.endsWith("FIX"), true);
|
|
}
|
|
|
|
TEST(MappedName, startsWith)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName;
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.startsWith(nullptr), false);
|
|
EXPECT_EQ(mappedName.startsWith(QByteArray()), true);
|
|
EXPECT_EQ(mappedName.startsWith(""), true);
|
|
EXPECT_EQ(mappedName.startsWith(std::string("")), true);
|
|
EXPECT_EQ(mappedName.startsWith("WASD"), false);
|
|
|
|
// Arrange
|
|
mappedName.append("TEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.startsWith(nullptr), false);
|
|
EXPECT_EQ(mappedName.startsWith(QByteArray()), true);
|
|
EXPECT_EQ(mappedName.startsWith("TEST"), true);
|
|
EXPECT_EQ(mappedName.startsWith(std::string("TEST")), true);
|
|
EXPECT_EQ(mappedName.startsWith("WASD"), false);
|
|
}
|
|
|
|
TEST(MappedName, hash)
|
|
{
|
|
// Arrange
|
|
Data::MappedName mappedName(Data::MappedName("TEST"), "POSTFIXTEST");
|
|
|
|
// Act & Assert
|
|
EXPECT_EQ(mappedName.hash(), qHash(QByteArray("TEST"), qHash(QByteArray("POSTFIXTEST"))));
|
|
}
|
|
|
|
// NOLINTEND(readability-magic-numbers)
|