refactor: port Platform/MSWindowsClipboardTests to QtTests

This commit is contained in:
sithlord48
2025-03-30 20:41:00 -04:00
committed by Nick Bolton
parent 8a139f0e3d
commit 4479b90d37
5 changed files with 188 additions and 217 deletions

View File

@ -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);
}

View File

@ -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)

View 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()

View 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)

View 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";
};