refactor: port base/StringTests to QtTests

This commit is contained in:
sithlord48
2025-04-02 20:50:09 -04:00
committed by Nick Bolton
parent 501726d471
commit a1a7c8f3ff
4 changed files with 123 additions and 108 deletions

View File

@ -1,108 +0,0 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
* SPDX-FileCopyrightText: (C) 2014 - 2016 Symless Ltd.
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
*/
#include "base/String.h"
#include <gtest/gtest.h>
using namespace deskflow;
TEST(StringTests, format_formatWithArguments_formatedString)
{
const char *format = "%%%{1}=%{2}";
const char *arg1 = "answer";
const char *arg2 = "42";
std::string result = string::format(format, arg1, arg2);
EXPECT_EQ("%answer=42", result);
}
TEST(StringTests, sprintf_formatWithArgument_formatedString)
{
const char *format = "%s=%d";
const char *arg1 = "answer";
int arg2 = 42;
std::string result = string::sprintf(format, arg1, arg2);
EXPECT_EQ("answer=42", result);
}
TEST(StringTests, toHex_plaintext_hexString)
{
EXPECT_EQ("666f6f626172", string::toHex("foobar", 2));
}
TEST(StringTests, toHex_vector_uint8_t_hexString)
{
std::vector<std::uint8_t> subject{'f', 'o', 'o', 'b', 'a', 'r'};
int width = 2;
EXPECT_EQ("666f6f626172", string::toHex(subject, width));
}
TEST(StringTests, fromHexChar_plaintext_hexString)
{
EXPECT_EQ(-1, string::fromHexChar('z'));
EXPECT_EQ(0, string::fromHexChar('0'));
EXPECT_EQ(1, string::fromHexChar('1'));
EXPECT_EQ(2, string::fromHexChar('2'));
EXPECT_EQ(3, string::fromHexChar('3'));
EXPECT_EQ(4, string::fromHexChar('4'));
EXPECT_EQ(5, string::fromHexChar('5'));
EXPECT_EQ(6, string::fromHexChar('6'));
EXPECT_EQ(7, string::fromHexChar('7'));
EXPECT_EQ(8, string::fromHexChar('8'));
EXPECT_EQ(9, string::fromHexChar('9'));
EXPECT_EQ(10, string::fromHexChar('a'));
EXPECT_EQ(10, string::fromHexChar('A'));
EXPECT_EQ(11, string::fromHexChar('b'));
EXPECT_EQ(11, string::fromHexChar('B'));
EXPECT_EQ(12, string::fromHexChar('c'));
EXPECT_EQ(12, string::fromHexChar('C'));
EXPECT_EQ(13, string::fromHexChar('d'));
EXPECT_EQ(13, string::fromHexChar('D'));
EXPECT_EQ(14, string::fromHexChar('e'));
EXPECT_EQ(14, string::fromHexChar('E'));
EXPECT_EQ(15, string::fromHexChar('f'));
EXPECT_EQ(15, string::fromHexChar('F'));
}
TEST(StringTests, fromHex_plaintext_hexString)
{
EXPECT_EQ(255, string::fromHex("FF")[0]);
EXPECT_EQ(255, string::fromHex(":FF:EE")[0]);
EXPECT_EQ(238, string::fromHex(":FF:EE")[1]);
}
TEST(StringTests, uppercase_lowercaseInput_uppercaseOutput)
{
std::string subject = "12foo3BaR";
string::uppercase(subject);
EXPECT_EQ("12FOO3BAR", subject);
}
TEST(StringTests, intToString_inputInt_outputString)
{
size_t value = 123;
std::string number = string::sizeTypeToString(value);
EXPECT_EQ("123", number);
}
TEST(StringTests, stringToUint_inputString_outputInt)
{
std::string number = "123";
size_t value = string::stringToSizeType(number);
EXPECT_EQ(123, value);
}

View File

@ -8,3 +8,11 @@ create_test(
SOURCE PathTests.cpp
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/lib/base"
)
create_test(
NAME StringTests
DEPENDS base
LIBS arch
SOURCE StringTests.cpp
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/lib/base"
)

View File

@ -0,0 +1,95 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello <sithlord48@gmail.com>
* SPDX-FileCopyrightText: (C) 2014 - 2021 Symless Ltd.
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
*/
#include "StringTests.h"
#include "../../lib/base/String.h"
#include <string.h>
void StringTests::formatWithArgs()
{
const char *format = "%%%{1}=%{2}";
const char *arg1 = "answer";
const char *arg2 = "42";
std::string result = deskflow::string::format(format, arg1, arg2);
QCOMPARE(result, "%answer=42");
}
void StringTests::formatedString()
{
const char *format = "%s=%d";
const char *arg1 = "answer";
int arg2 = 42;
std::string result = deskflow::string::sprintf(format, arg1, arg2);
QCOMPARE("answer=42", result);
}
void StringTests::toHex()
{
QCOMPARE(deskflow::string::toHex("foobar", 2), "666f6f626172");
std::vector<std::uint8_t> subject{'f', 'o', 'o', 'b', 'a', 'r'};
QCOMPARE(deskflow::string::toHex(subject, 2), "666f6f626172");
}
void StringTests::fromHex()
{
QCOMPARE(deskflow::string::fromHexChar('z'), -1);
QCOMPARE(deskflow::string::fromHexChar('0'), 0);
QCOMPARE(deskflow::string::fromHexChar('1'), 1);
QCOMPARE(deskflow::string::fromHexChar('2'), 2);
QCOMPARE(deskflow::string::fromHexChar('3'), 3);
QCOMPARE(deskflow::string::fromHexChar('4'), 4);
QCOMPARE(deskflow::string::fromHexChar('5'), 5);
QCOMPARE(deskflow::string::fromHexChar('6'), 6);
QCOMPARE(deskflow::string::fromHexChar('7'), 7);
QCOMPARE(deskflow::string::fromHexChar('8'), 8);
QCOMPARE(deskflow::string::fromHexChar('9'), 9);
QCOMPARE(deskflow::string::fromHexChar('a'), 10);
QCOMPARE(deskflow::string::fromHexChar('A'), 10);
QCOMPARE(deskflow::string::fromHexChar('b'), 11);
QCOMPARE(deskflow::string::fromHexChar('B'), 11);
QCOMPARE(deskflow::string::fromHexChar('c'), 12);
QCOMPARE(deskflow::string::fromHexChar('C'), 12);
QCOMPARE(deskflow::string::fromHexChar('d'), 13);
QCOMPARE(deskflow::string::fromHexChar('D'), 13);
QCOMPARE(deskflow::string::fromHexChar('e'), 14);
QCOMPARE(deskflow::string::fromHexChar('E'), 14);
QCOMPARE(deskflow::string::fromHexChar('f'), 15);
QCOMPARE(deskflow::string::fromHexChar('F'), 15);
QCOMPARE(deskflow::string::fromHex("FF")[0], 255);
QCOMPARE(deskflow::string::fromHex(":FF:EE")[0], 255);
QCOMPARE(deskflow::string::fromHex(":FF:EE")[1], 238);
}
void StringTests::toLower()
{
std::string subject = "12foo3BaR";
deskflow::string::uppercase(subject);
QCOMPARE(subject, "12FOO3BAR");
}
void StringTests::stringToInt()
{
std::string number = "123";
size_t value = deskflow::string::stringToSizeType(number);
QCOMPARE(value, 123);
}
void StringTests::intToString()
{
size_t value = 123;
std::string number = deskflow::string::sizeTypeToString(value);
QCOMPARE(number, "123");
}
QTEST_MAIN(StringTests)

View File

@ -0,0 +1,20 @@
/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello <sithlord48@gmail.com>
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
*/
#include <QTest>
class StringTests : public QObject
{
Q_OBJECT
private slots:
void formatWithArgs();
void formatedString();
void toHex();
void fromHex();
void toLower();
void intToString();
void stringToInt();
};