2020-05-03 14:09:42 -03:00
|
|
|
#include <TEntityHandler.h>
|
|
|
|
|
#include <QtTest/QtTest>
|
|
|
|
|
|
|
|
|
|
class TEntityHandlerTest : public QObject {
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
|
|
void initTestCase()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void testHandleSimpleString()
|
|
|
|
|
{
|
|
|
|
|
TEntityHandler handler;
|
|
|
|
|
|
|
|
|
|
std::string str = "Someone says "Hello"";
|
2024-08-31 15:33:24 +02:00
|
|
|
QString result = processString(handler, str);
|
2020-05-03 14:09:42 -03:00
|
|
|
|
2024-08-31 15:33:24 +02:00
|
|
|
QCOMPARE(result, "Someone says \"Hello\"");
|
2020-05-03 14:09:42 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void testHandleUnfinishedString()
|
|
|
|
|
{
|
|
|
|
|
TEntityHandler handler;
|
|
|
|
|
|
|
|
|
|
std::string str = "Someone says "Hello&qu";
|
2024-08-31 15:33:24 +02:00
|
|
|
QString result = processString(handler, str);
|
2020-05-03 14:09:42 -03:00
|
|
|
|
2024-08-31 15:33:24 +02:00
|
|
|
QCOMPARE(result, "Someone says \"Hello");
|
2020-05-03 14:09:42 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void testLongSequence()
|
|
|
|
|
{
|
|
|
|
|
TEntityHandler handler;
|
|
|
|
|
|
|
|
|
|
std::string str = "Long sequence: &01234567; asdf";
|
2024-08-31 15:33:24 +02:00
|
|
|
QString result = processString(handler, str);
|
2020-05-03 14:09:42 -03:00
|
|
|
|
2024-08-31 15:33:24 +02:00
|
|
|
QCOMPARE(result, "Long sequence: &01234567; asdf");
|
2020-05-03 14:09:42 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void testHandleSplitInTwoParts()
|
|
|
|
|
{
|
|
|
|
|
TEntityHandler handler;
|
|
|
|
|
|
|
|
|
|
std::string part1 = "Someone says "Hello&qu";
|
2024-08-31 15:33:24 +02:00
|
|
|
QString result1 = processString(handler, part1);
|
|
|
|
|
QCOMPARE(result1, "Someone says \"Hello");
|
2020-05-03 14:09:42 -03:00
|
|
|
|
|
|
|
|
std::string part2 = "ot; to you";
|
2024-08-31 15:33:24 +02:00
|
|
|
QString result2 = processString(handler, part2);
|
|
|
|
|
QCOMPARE(result2, "\" to you");
|
2020-05-03 14:09:42 -03:00
|
|
|
|
2024-08-31 15:33:24 +02:00
|
|
|
QString result = result1 + result2;
|
2020-05-03 14:09:42 -03:00
|
|
|
|
2024-08-31 15:33:24 +02:00
|
|
|
qDebug() << result1;
|
|
|
|
|
qDebug() << result2;
|
|
|
|
|
qDebug() << result;
|
2020-05-03 14:09:42 -03:00
|
|
|
|
2024-08-31 15:33:24 +02:00
|
|
|
QCOMPARE(result, "Someone says \"Hello\" to you");
|
2020-05-03 14:09:42 -03:00
|
|
|
}
|
|
|
|
|
|
2024-08-31 15:33:24 +02:00
|
|
|
inline static QString processString(TEntityHandler& handler, std::string& str)
|
2020-05-03 14:09:42 -03:00
|
|
|
{
|
|
|
|
|
size_t len = str.length();
|
2024-08-31 15:33:24 +02:00
|
|
|
QString result;
|
2020-05-03 14:09:42 -03:00
|
|
|
for (size_t i = 0; i < len; i++) {
|
2024-08-31 15:33:24 +02:00
|
|
|
if (!handler.handle(str[i], true)) {
|
2020-05-03 14:09:42 -03:00
|
|
|
result += str[i];
|
|
|
|
|
} else if (handler.isEntityResolved()) {
|
|
|
|
|
result += handler.getResultAndReset();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void cleanupTestCase()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
#include "TEntityHandlerTest.moc"
|
|
|
|
|
QTEST_MAIN(TEntityHandlerTest)
|