refactor: port Platform/MSWindowsClipboardTests to QtTests
This commit is contained in:
@ -1,217 +0,0 @@
|
||||
/*
|
||||
* Deskflow -- mouse and keyboard sharing utility
|
||||
* SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
|
||||
* SPDX-FileCopyrightText: (C) 2011 Nick Bolton
|
||||
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
||||
*/
|
||||
|
||||
#include "platform/IMSWindowsClipboardFacade.h"
|
||||
#include "platform/MSWindowsClipboard.h"
|
||||
|
||||
#include <gmock/gmock.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
class MSWindowsClipboardTests : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
virtual void SetUp()
|
||||
{
|
||||
emptyClipboard();
|
||||
}
|
||||
|
||||
virtual void TearDown()
|
||||
{
|
||||
emptyClipboard();
|
||||
}
|
||||
|
||||
private:
|
||||
void emptyClipboard()
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
clipboard.empty();
|
||||
}
|
||||
};
|
||||
|
||||
class MockFacade : public IMSWindowsClipboardFacade
|
||||
{
|
||||
public:
|
||||
MOCK_METHOD2(write, void(HANDLE, UINT));
|
||||
};
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, emptyUnowned_openCalled_returnsTrue)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
|
||||
bool actual = clipboard.emptyUnowned();
|
||||
|
||||
EXPECT_EQ(true, actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, empty_openCalled_returnsTrue)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
|
||||
bool actual = clipboard.empty();
|
||||
|
||||
EXPECT_EQ(true, actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, empty_singleFormat_hasReturnsFalse)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
clipboard.add(MSWindowsClipboard::kText, "synergy rocks!");
|
||||
|
||||
clipboard.empty();
|
||||
|
||||
bool actual = clipboard.has(MSWindowsClipboard::kText);
|
||||
EXPECT_EQ(false, actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, add_newValue_valueWasStored)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
|
||||
clipboard.add(IClipboard::kText, "synergy rocks!");
|
||||
|
||||
std::string actual = clipboard.get(IClipboard::kText);
|
||||
EXPECT_EQ("synergy rocks!", actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, add_newValue_writeWasCalled)
|
||||
{
|
||||
MockFacade facade;
|
||||
EXPECT_CALL(facade, write(testing::_, testing::_));
|
||||
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.setFacade(facade);
|
||||
clipboard.open(0);
|
||||
|
||||
clipboard.add(IClipboard::kText, "synergy rocks!");
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, add_replaceValue_valueWasReplaced)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
|
||||
clipboard.add(IClipboard::kText, "synergy rocks!");
|
||||
clipboard.add(IClipboard::kText, "maxivista sucks"); // haha, just kidding.
|
||||
|
||||
std::string actual = clipboard.get(IClipboard::kText);
|
||||
EXPECT_EQ("maxivista sucks", actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, open_timeIsZero_returnsTrue)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
|
||||
bool actual = clipboard.open(0);
|
||||
|
||||
EXPECT_EQ(true, actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, open_timeIsOne_returnsTrue)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
|
||||
bool actual = clipboard.open(1);
|
||||
|
||||
EXPECT_EQ(true, actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, close_isOpen_noErrors)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
|
||||
clipboard.close();
|
||||
|
||||
// can't assert anything
|
||||
}
|
||||
|
||||
// TODO: fix intermittently failing tests
|
||||
#if 0
|
||||
TEST_F(MSWindowsClipboardTests, getTime_openWithNoEmpty_returnsOne)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(1);
|
||||
|
||||
MSWindowsClipboard::Time actual = clipboard.getTime();
|
||||
|
||||
// this behavior is different to that of Clipboard which only
|
||||
// returns the value passed into open(t) after empty() is called.
|
||||
EXPECT_EQ(1, actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, getTime_openAndEmpty_returnsOne)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(1);
|
||||
clipboard.empty();
|
||||
|
||||
MSWindowsClipboard::Time actual = clipboard.getTime();
|
||||
|
||||
EXPECT_EQ(1, actual);
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, has_withFormatAdded_returnsTrue)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
clipboard.empty();
|
||||
clipboard.add(IClipboard::kText, "synergy rocks!");
|
||||
|
||||
bool actual = clipboard.has(IClipboard::kText);
|
||||
|
||||
EXPECT_EQ(true, actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, has_withNoFormats_returnsFalse)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
clipboard.empty();
|
||||
|
||||
bool actual = clipboard.has(IClipboard::kText);
|
||||
|
||||
EXPECT_EQ(false, actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, get_withNoFormats_returnsEmpty)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
clipboard.empty();
|
||||
|
||||
std::string actual = clipboard.get(IClipboard::kText);
|
||||
|
||||
EXPECT_EQ("", actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, get_withFormatAdded_returnsExpected)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
clipboard.empty();
|
||||
clipboard.add(IClipboard::kText, "synergy rocks!");
|
||||
|
||||
std::string actual = clipboard.get(IClipboard::kText);
|
||||
|
||||
EXPECT_EQ("synergy rocks!", actual);
|
||||
}
|
||||
|
||||
TEST_F(MSWindowsClipboardTests, isOwnedByDeskflow_defaultState_noError)
|
||||
{
|
||||
MSWindowsClipboard clipboard(nullptr);
|
||||
clipboard.open(0);
|
||||
|
||||
bool actual = clipboard.isOwnedByDeskflow();
|
||||
|
||||
EXPECT_EQ(true, actual);
|
||||
}
|
||||
@ -44,6 +44,7 @@ find_package(Qt6 ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS Test)
|
||||
add_subdirectory(common)
|
||||
add_subdirectory(deskflow)
|
||||
add_subdirectory(gui)
|
||||
add_subdirectory(platform)
|
||||
|
||||
#make sure to use CI only plugin on Unix
|
||||
if (UNIX AND NOT APPLE)
|
||||
|
||||
12
src/unittests/platform/CMakeLists.txt
Normal file
12
src/unittests/platform/CMakeLists.txt
Normal file
@ -0,0 +1,12 @@
|
||||
# SPDX-FileCopyrightText: 2025 Deskflow Developers
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
if (WIN32)
|
||||
create_test(
|
||||
NAME MSWindowsClipboardTests
|
||||
DEPENDS platform
|
||||
LIBS base arch
|
||||
SOURCE MSWindowsClipboardTests.cpp
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/src/lib/platform"
|
||||
)
|
||||
endif()
|
||||
138
src/unittests/platform/MSWindowsClipboardTests.cpp
Normal file
138
src/unittests/platform/MSWindowsClipboardTests.cpp
Normal file
@ -0,0 +1,138 @@
|
||||
/*
|
||||
* Deskflow -- mouse and keyboard sharing utility
|
||||
* SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello <sithlord48@gmail.com>
|
||||
* SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
|
||||
* SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
|
||||
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
||||
*/
|
||||
|
||||
#include "MSWindowsClipboardTests.h"
|
||||
|
||||
#include "../../lib/platform/MSWindowsClipboard.h"
|
||||
|
||||
void MSWindowsClipboardTests::initTestCase()
|
||||
{
|
||||
m_arch.init();
|
||||
m_log.setFilter(kDEBUG2);
|
||||
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
|
||||
QVERIFY(clipboard.open(0));
|
||||
QVERIFY(clipboard.empty());
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::cleanupTestCase()
|
||||
{
|
||||
initTestCase();
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::emptyUnusedClipboard()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
QVERIFY(clipboard.emptyUnowned());
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::emptyOpenCalled()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
QVERIFY(clipboard.empty());
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::emptySingleFormat()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
|
||||
clipboard.add(MSWindowsClipboard::kText, m_testString);
|
||||
QVERIFY(clipboard.empty());
|
||||
QVERIFY(!clipboard.has(MSWindowsClipboard::kText));
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::addValue()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
|
||||
clipboard.add(IClipboard::kText, m_testString);
|
||||
QCOMPARE(clipboard.get(IClipboard::kText), m_testString);
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::replaceValue()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
|
||||
clipboard.add(IClipboard::kText, m_testString);
|
||||
clipboard.add(IClipboard::kText, m_testString2);
|
||||
|
||||
QCOMPARE(clipboard.get(IClipboard::kText), m_testString2);
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::openTimeIsOne()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(1));
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::closeIsOpen()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(1));
|
||||
clipboard.close();
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::getTimeOpenWithNoEmpty()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(1));
|
||||
// this behavior is different to that of Clipboard which only
|
||||
// returns the value passed into open(t) after empty() is called.
|
||||
QCOMPARE(clipboard.getTime(), 1);
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::getTimeOpenAndEmpty()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(1));
|
||||
QVERIFY(clipboard.empty());
|
||||
QCOMPARE(clipboard.getTime(), 1);
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::has_withFormatAdded()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
QVERIFY(clipboard.empty());
|
||||
|
||||
clipboard.add(IClipboard::kText, m_testString);
|
||||
QVERIFY(clipboard.has(IClipboard::kText));
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::has_withNoFormatAdded()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
QVERIFY(clipboard.empty());
|
||||
QCOMPARE(clipboard.get(IClipboard::kText), "");
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::getNonEmptyText()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
QVERIFY(clipboard.empty());
|
||||
|
||||
clipboard.add(IClipboard::kText, m_testString);
|
||||
QCOMPARE(clipboard.get(IClipboard::kText), m_testString);
|
||||
}
|
||||
|
||||
void MSWindowsClipboardTests::isOwnedByDeskflow()
|
||||
{
|
||||
MSWindowsClipboard clipboard(NULL);
|
||||
QVERIFY(clipboard.open(0));
|
||||
QVERIFY(clipboard.isOwnedByDeskflow());
|
||||
}
|
||||
|
||||
QTEST_MAIN(MSWindowsClipboardTests)
|
||||
37
src/unittests/platform/MSWindowsClipboardTests.h
Normal file
37
src/unittests/platform/MSWindowsClipboardTests.h
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* 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 "base/Log.h"
|
||||
|
||||
#include <QTest>
|
||||
|
||||
class MSWindowsClipboardTests : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
// Test are run in order top to bottom
|
||||
void initTestCase();
|
||||
void cleanupTestCase();
|
||||
void emptyUnusedClipboard();
|
||||
void emptyOpenCalled();
|
||||
void emptySingleFormat();
|
||||
void addValue();
|
||||
void replaceValue();
|
||||
void openTimeIsOne();
|
||||
void closeIsOpen();
|
||||
void getTimeOpenWithNoEmpty();
|
||||
void getTimeOpenAndEmpty();
|
||||
void has_withFormatAdded();
|
||||
void has_withNoFormatAdded();
|
||||
void getNonEmptyText();
|
||||
void isOwnedByDeskflow();
|
||||
|
||||
private:
|
||||
Arch m_arch;
|
||||
Log m_log;
|
||||
const std::string m_testString = "deskflow test string";
|
||||
const std::string m_testString2 = "Another String";
|
||||
};
|
||||
Reference in New Issue
Block a user