diff --git a/src/test/unittests/base/StringTests.cpp b/src/test/unittests/base/StringTests.cpp deleted file mode 100644 index a9c87d0b0..000000000 --- a/src/test/unittests/base/StringTests.cpp +++ /dev/null @@ -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 - -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 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); -} diff --git a/src/unittests/base/CMakeLists.txt b/src/unittests/base/CMakeLists.txt index e65fab1ed..30ae0d00b 100644 --- a/src/unittests/base/CMakeLists.txt +++ b/src/unittests/base/CMakeLists.txt @@ -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" +) diff --git a/src/unittests/base/StringTests.cpp b/src/unittests/base/StringTests.cpp new file mode 100644 index 000000000..7fb33738e --- /dev/null +++ b/src/unittests/base/StringTests.cpp @@ -0,0 +1,95 @@ +/* + * Deskflow -- mouse and keyboard sharing utility + * SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello + * 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 + +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 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) diff --git a/src/unittests/base/StringTests.h b/src/unittests/base/StringTests.h new file mode 100644 index 000000000..b138d4a3b --- /dev/null +++ b/src/unittests/base/StringTests.h @@ -0,0 +1,20 @@ +/* + * Deskflow -- mouse and keyboard sharing utility + * SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello + * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception + */ + +#include + +class StringTests : public QObject +{ + Q_OBJECT +private slots: + void formatWithArgs(); + void formatedString(); + void toHex(); + void fromHex(); + void toLower(); + void intToString(); + void stringToInt(); +};