Merge pull request #1009 from p12tic/gui-keysequence-tests
Add tests for KeySequence
This commit is contained in:
commit
f1aab806af
|
@ -430,4 +430,7 @@ endif()
|
||||||
else()
|
else()
|
||||||
message (STATUS "NOT configuring the installer")
|
message (STATUS "NOT configuring the installer")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
add_subdirectory (src)
|
add_subdirectory (src)
|
||||||
|
|
|
@ -24,14 +24,14 @@ if (BARRIER_USE_EXTERNAL_GTEST)
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
include_directories(
|
include_directories(
|
||||||
../../ext/gtest
|
../ext/gtest
|
||||||
../../ext/gtest/include
|
../ext/gtest/include
|
||||||
../../ext/gmock
|
../ext/gmock
|
||||||
../../ext/gmock/include
|
../ext/gmock/include
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(gtest STATIC ../../ext/gtest/src/gtest-all.cc)
|
add_library(gtest STATIC ../ext/gtest/src/gtest-all.cc)
|
||||||
add_library(gmock STATIC ../../ext/gmock/src/gmock-all.cc)
|
add_library(gmock STATIC ../ext/gmock/src/gmock-all.cc)
|
||||||
|
|
||||||
set(GTEST_LIBRARIES gtest)
|
set(GTEST_LIBRARIES gtest)
|
||||||
set(GMOCK_LIBRARIES gmock)
|
set(GMOCK_LIBRARIES gmock)
|
||||||
|
@ -42,6 +42,3 @@ else()
|
||||||
set_target_properties(gmock PROPERTIES COMPILE_FLAGS "-w")
|
set_target_properties(gmock PROPERTIES COMPILE_FLAGS "-w")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(integtests)
|
|
||||||
add_subdirectory(unittests)
|
|
|
@ -20,8 +20,11 @@ include_directories (${CMAKE_CURRENT_BINARY_DIR}/lib)
|
||||||
add_subdirectory(lib)
|
add_subdirectory(lib)
|
||||||
add_subdirectory(cmd)
|
add_subdirectory(cmd)
|
||||||
|
|
||||||
|
include(../cmake/gtest.cmake)
|
||||||
|
|
||||||
if (BARRIER_BUILD_TESTS)
|
if (BARRIER_BUILD_TESTS)
|
||||||
add_subdirectory(test)
|
add_subdirectory(test/integtests)
|
||||||
|
add_subdirectory(test/unittests)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (BARRIER_BUILD_GUI)
|
if (BARRIER_BUILD_GUI)
|
||||||
|
|
|
@ -6,15 +6,124 @@ set (CMAKE_AUTORCC ON)
|
||||||
set (CMAKE_AUTOUIC ON)
|
set (CMAKE_AUTOUIC ON)
|
||||||
set (CMAKE_INCLUDE_CURRENT_DIR ON)
|
set (CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||||
|
|
||||||
file (GLOB GUI_SOURCE_FILES src/*.cpp src/*.h)
|
# files that are used both in tests and the app
|
||||||
file (GLOB GUI_UI_FILES src/*.ui)
|
set(GUI_COMMON_SOURCE_FILES
|
||||||
|
src/KeySequence.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
set(GUI_COMMON_HEADER_FILES
|
||||||
|
src/KeySequence.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(GUI_SOURCE_FILES
|
||||||
|
src/AboutDialog.cpp
|
||||||
|
src/Action.cpp
|
||||||
|
src/ActionDialog.cpp
|
||||||
|
src/AddClientDialog.cpp
|
||||||
|
src/AppConfig.cpp
|
||||||
|
src/BarrierLocale.cpp
|
||||||
|
src/BaseConfig.cpp
|
||||||
|
src/CommandProcess.cpp
|
||||||
|
src/DataDownloader.cpp
|
||||||
|
src/DisplayIsValid.cpp
|
||||||
|
src/Fingerprint.cpp
|
||||||
|
src/Hotkey.cpp
|
||||||
|
src/HotkeyDialog.cpp
|
||||||
|
src/IpcClient.cpp
|
||||||
|
src/Ipc.cpp
|
||||||
|
src/IpcReader.cpp
|
||||||
|
src/KeySequenceWidget.cpp
|
||||||
|
src/LogWindow.cpp
|
||||||
|
src/main.cpp
|
||||||
|
src/MainWindow.cpp
|
||||||
|
src/NewScreenWidget.cpp
|
||||||
|
src/QBarrierApplication.cpp
|
||||||
|
src/QUtility.cpp
|
||||||
|
src/Screen.cpp
|
||||||
|
src/ScreenSettingsDialog.cpp
|
||||||
|
src/ScreenSetupModel.cpp
|
||||||
|
src/ScreenSetupView.cpp
|
||||||
|
src/ServerConfig.cpp
|
||||||
|
src/ServerConfigDialog.cpp
|
||||||
|
src/SettingsDialog.cpp
|
||||||
|
src/SetupWizard.cpp
|
||||||
|
src/SslCertificate.cpp
|
||||||
|
src/TrashScreenWidget.cpp
|
||||||
|
src/VersionChecker.cpp
|
||||||
|
src/ZeroconfBrowser.cpp
|
||||||
|
src/ZeroconfRegister.cpp
|
||||||
|
src/ZeroconfServer.cpp
|
||||||
|
src/ZeroconfService.cpp
|
||||||
|
src/ZeroconfThread.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
set(GUI_HEADER_FILES
|
||||||
|
src/AboutDialog.h
|
||||||
|
src/ActionDialog.h
|
||||||
|
src/Action.h
|
||||||
|
src/AddClientDialog.h
|
||||||
|
src/AppConfig.h
|
||||||
|
src/BarrierLocale.h
|
||||||
|
src/BaseConfig.h
|
||||||
|
src/CommandProcess.h
|
||||||
|
src/DataDownloader.h
|
||||||
|
src/DisplayIsValid.h
|
||||||
|
src/ElevateMode.h
|
||||||
|
src/Fingerprint.h
|
||||||
|
src/HotkeyDialog.h
|
||||||
|
src/Hotkey.h
|
||||||
|
src/IpcClient.h
|
||||||
|
src/Ipc.h
|
||||||
|
src/IpcReader.h
|
||||||
|
src/KeySequenceWidget.h
|
||||||
|
src/LogWindow.h
|
||||||
|
src/MainWindow.h
|
||||||
|
src/NewScreenWidget.h
|
||||||
|
src/ProcessorArch.h
|
||||||
|
src/QBarrierApplication.h
|
||||||
|
src/QUtility.h
|
||||||
|
src/Screen.h
|
||||||
|
src/ScreenSettingsDialog.h
|
||||||
|
src/ScreenSetupModel.h
|
||||||
|
src/ScreenSetupView.h
|
||||||
|
src/ServerConfigDialog.h
|
||||||
|
src/ServerConfig.h
|
||||||
|
src/SettingsDialog.h
|
||||||
|
src/SetupWizard.h
|
||||||
|
src/ShutdownCh.h
|
||||||
|
src/SslCertificate.h
|
||||||
|
src/TrashScreenWidget.h
|
||||||
|
src/VersionChecker.h
|
||||||
|
src/ZeroconfBrowser.h
|
||||||
|
src/ZeroconfRecord.h
|
||||||
|
src/ZeroconfRegister.h
|
||||||
|
src/ZeroconfServer.h
|
||||||
|
src/ZeroconfService.h
|
||||||
|
src/ZeroconfThread.h
|
||||||
|
)
|
||||||
|
|
||||||
|
set(GUI_UI_FILES
|
||||||
|
src/AboutDialogBase.ui
|
||||||
|
src/ActionDialogBase.ui
|
||||||
|
src/AddClientDialogBase.ui
|
||||||
|
src/HotkeyDialogBase.ui
|
||||||
|
src/LogWindowBase.ui
|
||||||
|
src/MainWindowBase.ui
|
||||||
|
src/ScreenSettingsDialogBase.ui
|
||||||
|
src/ServerConfigDialogBase.ui
|
||||||
|
src/SettingsDialogBase.ui
|
||||||
|
src/SetupWizardBase.ui
|
||||||
|
)
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set (GUI_RC_FILES res/win/Barrier.rc)
|
set (GUI_RC_FILES res/win/Barrier.rc)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable (barrier WIN32
|
add_executable (barrier WIN32
|
||||||
|
${GUI_COMMON_SOURCE_FILES}
|
||||||
|
${GUI_COMMON_HEADER_FILES}
|
||||||
${GUI_SOURCE_FILES}
|
${GUI_SOURCE_FILES}
|
||||||
|
${GUI_HEADER_FILES}
|
||||||
${GUI_UI_FILES}
|
${GUI_UI_FILES}
|
||||||
${GUI_RC_FILES}
|
${GUI_RC_FILES}
|
||||||
res/Barrier.qrc
|
res/Barrier.qrc
|
||||||
|
@ -51,3 +160,21 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "BSD")
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "BSD")
|
||||||
install (TARGETS barrier DESTINATION bin)
|
install (TARGETS barrier DESTINATION bin)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (BARRIER_BUILD_TESTS)
|
||||||
|
set(GUI_TEST_SOURCE_FILES
|
||||||
|
test/KeySequenceTests.cpp
|
||||||
|
test/main.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
add_executable(guiunittests
|
||||||
|
${GUI_TEST_SOURCE_FILES}
|
||||||
|
${GUI_COMMON_SOURCE_FILES}
|
||||||
|
${GUI_COMMON_HEADER_FILES}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_test(guiunittests guiunittests)
|
||||||
|
|
||||||
|
target_include_directories(guiunittests PUBLIC ../../ext)
|
||||||
|
target_link_libraries(guiunittests gtest gmock Qt5::Core Qt5::Widgets Qt5::Network pthread)
|
||||||
|
endif()
|
||||||
|
|
162
src/gui/gui.pro
162
src/gui/gui.pro
|
@ -1,162 +0,0 @@
|
||||||
QT += widgets \
|
|
||||||
network
|
|
||||||
TEMPLATE = app
|
|
||||||
TARGET = barrier
|
|
||||||
DEFINES += VERSION_STAGE=\\\"$$QMAKE_VERSION_STAGE\\\"
|
|
||||||
DEFINES += VERSION_REVISION=\\\"$$QMAKE_VERSION_REVISION\\\"
|
|
||||||
DEFINES -= UNICODE
|
|
||||||
DEFINES += _MBCS
|
|
||||||
DEPENDPATH += . \
|
|
||||||
res
|
|
||||||
INCLUDEPATH += . \
|
|
||||||
src \
|
|
||||||
../lib/shared/
|
|
||||||
FORMS += src/MainWindowBase.ui \
|
|
||||||
src/AboutDialogBase.ui \
|
|
||||||
src/ServerConfigDialogBase.ui \
|
|
||||||
src/ScreenSettingsDialogBase.ui \
|
|
||||||
src/ActionDialogBase.ui \
|
|
||||||
src/HotkeyDialogBase.ui \
|
|
||||||
src/SettingsDialogBase.ui \
|
|
||||||
src/SetupWizardBase.ui \
|
|
||||||
src/AddClientDialogBase.ui \
|
|
||||||
src/ActivationDialog.ui \
|
|
||||||
src/CancelActivationDialog.ui \
|
|
||||||
src/FailedLoginDialog.ui
|
|
||||||
SOURCES += src/main.cpp \
|
|
||||||
src/MainWindow.cpp \
|
|
||||||
src/AboutDialog.cpp \
|
|
||||||
src/ServerConfig.cpp \
|
|
||||||
src/ServerConfigDialog.cpp \
|
|
||||||
src/ScreenSetupView.cpp \
|
|
||||||
src/Screen.cpp \
|
|
||||||
src/ScreenSetupModel.cpp \
|
|
||||||
src/NewScreenWidget.cpp \
|
|
||||||
src/TrashScreenWidget.cpp \
|
|
||||||
src/ScreenSettingsDialog.cpp \
|
|
||||||
src/BaseConfig.cpp \
|
|
||||||
src/HotkeyDialog.cpp \
|
|
||||||
src/ActionDialog.cpp \
|
|
||||||
src/Hotkey.cpp \
|
|
||||||
src/Action.cpp \
|
|
||||||
src/KeySequence.cpp \
|
|
||||||
src/KeySequenceWidget.cpp \
|
|
||||||
src/SettingsDialog.cpp \
|
|
||||||
src/AppConfig.cpp \
|
|
||||||
src/QBarrierApplication.cpp \
|
|
||||||
src/VersionChecker.cpp \
|
|
||||||
src/SetupWizard.cpp \
|
|
||||||
src/IpcClient.cpp \
|
|
||||||
src/IpcReader.cpp \
|
|
||||||
src/Ipc.cpp \
|
|
||||||
src/BarrierLocale.cpp \
|
|
||||||
src/QUtility.cpp \
|
|
||||||
src/ZeroconfServer.cpp \
|
|
||||||
src/ZeroconfThread.cpp \
|
|
||||||
src/ZeroconfRegister.cpp \
|
|
||||||
src/ZeroconfBrowser.cpp \
|
|
||||||
src/ZeroconfService.cpp \
|
|
||||||
src/DataDownloader.cpp \
|
|
||||||
src/AddClientDialog.cpp \
|
|
||||||
src/CommandProcess.cpp \
|
|
||||||
src/CoreInterface.cpp \
|
|
||||||
src/Fingerprint.cpp \
|
|
||||||
src/SslCertificate.cpp \
|
|
||||||
src/WebClient.cpp \
|
|
||||||
src/ActivationNotifier.cpp \
|
|
||||||
src/ActivationDialog.cpp \
|
|
||||||
src/CancelActivationDialog.cpp \
|
|
||||||
src/FailedLoginDialog.cpp \
|
|
||||||
../lib/shared/SerialKey.cpp \
|
|
||||||
src/LicenseManager.cpp
|
|
||||||
HEADERS += src/MainWindow.h \
|
|
||||||
src/AboutDialog.h \
|
|
||||||
src/ServerConfig.h \
|
|
||||||
src/ServerConfigDialog.h \
|
|
||||||
src/ScreenSetupView.h \
|
|
||||||
src/Screen.h \
|
|
||||||
src/ScreenSetupModel.h \
|
|
||||||
src/NewScreenWidget.h \
|
|
||||||
src/TrashScreenWidget.h \
|
|
||||||
src/ScreenSettingsDialog.h \
|
|
||||||
src/BaseConfig.h \
|
|
||||||
src/HotkeyDialog.h \
|
|
||||||
src/ActionDialog.h \
|
|
||||||
src/Hotkey.h \
|
|
||||||
src/Action.h \
|
|
||||||
src/KeySequence.h \
|
|
||||||
src/KeySequenceWidget.h \
|
|
||||||
src/SettingsDialog.h \
|
|
||||||
src/AppConfig.h \
|
|
||||||
src/QBarrierApplication.h \
|
|
||||||
src/VersionChecker.h \
|
|
||||||
src/SetupWizard.h \
|
|
||||||
src/IpcClient.h \
|
|
||||||
src/IpcReader.h \
|
|
||||||
src/Ipc.h \
|
|
||||||
src/BarrierLocale.h \
|
|
||||||
src/QUtility.h \
|
|
||||||
src/ZeroconfServer.h \
|
|
||||||
src/ZeroconfThread.h \
|
|
||||||
src/ZeroconfRegister.h \
|
|
||||||
src/ZeroconfRecord.h \
|
|
||||||
src/ZeroconfBrowser.h \
|
|
||||||
src/ZeroconfService.h \
|
|
||||||
src/DataDownloader.h \
|
|
||||||
src/AddClientDialog.h \
|
|
||||||
src/CommandProcess.h \
|
|
||||||
src/ProcessorArch.h \
|
|
||||||
src/CoreInterface.h \
|
|
||||||
src/Fingerprint.h \
|
|
||||||
src/SslCertificate.h \
|
|
||||||
src/WebClient.h \
|
|
||||||
src/ActivationNotifier.h \
|
|
||||||
src/ElevateMode.h \
|
|
||||||
src/ActivationDialog.h \
|
|
||||||
src/CancelActivationDialog.h \
|
|
||||||
src/FailedLoginDialog.h \
|
|
||||||
../lib/shared/EditionType.h \
|
|
||||||
../lib/shared/SerialKey.h \
|
|
||||||
src/LicenseManager.h
|
|
||||||
RESOURCES += res/Barrier.qrc
|
|
||||||
RC_FILE = res/win/Barrier.rc
|
|
||||||
macx {
|
|
||||||
QMAKE_INFO_PLIST = res/mac/Info.plist
|
|
||||||
TARGET = Barrier
|
|
||||||
QBARRIER_ICON.files = res/mac/Barrier.icns
|
|
||||||
QBARRIER_ICON.path = Contents/Resources
|
|
||||||
QMAKE_BUNDLE_DATA += QBARRIER_ICON
|
|
||||||
LIBS += $$MACX_LIBS
|
|
||||||
}
|
|
||||||
unix:!macx:LIBS += -ldns_sd
|
|
||||||
debug {
|
|
||||||
OBJECTS_DIR = tmp/debug
|
|
||||||
MOC_DIR = tmp/debug
|
|
||||||
RCC_DIR = tmp/debug
|
|
||||||
}
|
|
||||||
release {
|
|
||||||
OBJECTS_DIR = tmp/release
|
|
||||||
MOC_DIR = tmp/release
|
|
||||||
RCC_DIR = tmp/release
|
|
||||||
}
|
|
||||||
win32-msvc2015 {
|
|
||||||
LIBS += -lAdvapi32
|
|
||||||
QMAKE_LFLAGS += /NODEFAULTLIB:LIBCMT
|
|
||||||
}
|
|
||||||
win32-msvc* {
|
|
||||||
contains(QMAKE_HOST.arch, x86):{
|
|
||||||
QMAKE_LFLAGS *= /MACHINE:X86
|
|
||||||
LIBS += -L"$$(BONJOUR_SDK_HOME)/Lib/Win32" -ldnssd
|
|
||||||
}
|
|
||||||
|
|
||||||
contains(QMAKE_HOST.arch, x86_64):{
|
|
||||||
QMAKE_LFLAGS *= /MACHINE:X64
|
|
||||||
LIBS += -L"$$(BONJOUR_SDK_HOME)/Lib/x64" -ldnssd
|
|
||||||
}
|
|
||||||
}
|
|
||||||
win32 {
|
|
||||||
Debug:DESTDIR = ../../bin/Debug
|
|
||||||
Release:DESTDIR = ../../bin/Release
|
|
||||||
INCLUDEPATH += "$$(BONJOUR_SDK_HOME)/Include"
|
|
||||||
}
|
|
||||||
else:DESTDIR = ../../bin
|
|
|
@ -1 +1 @@
|
||||||
lupdate -noobsolete gui.pro -ts gui.ts
|
lupdate -noobsolete src/* -ts gui.ts
|
||||||
|
|
|
@ -152,12 +152,12 @@ bool KeySequence::appendKey(int key, int modifiers)
|
||||||
|
|
||||||
void KeySequence::loadSettings(QSettings& settings)
|
void KeySequence::loadSettings(QSettings& settings)
|
||||||
{
|
{
|
||||||
sequence().clear();
|
m_Sequence.clear();
|
||||||
int num = settings.beginReadArray("keys");
|
int num = settings.beginReadArray("keys");
|
||||||
for (int i = 0; i < num; i++)
|
for (int i = 0; i < num; i++)
|
||||||
{
|
{
|
||||||
settings.setArrayIndex(i);
|
settings.setArrayIndex(i);
|
||||||
sequence().append(settings.value("key", 0).toInt());
|
m_Sequence.append(settings.value("key", 0).toInt());
|
||||||
}
|
}
|
||||||
settings.endArray();
|
settings.endArray();
|
||||||
|
|
||||||
|
@ -168,10 +168,10 @@ void KeySequence::loadSettings(QSettings& settings)
|
||||||
void KeySequence::saveSettings(QSettings& settings) const
|
void KeySequence::saveSettings(QSettings& settings) const
|
||||||
{
|
{
|
||||||
settings.beginWriteArray("keys");
|
settings.beginWriteArray("keys");
|
||||||
for (int i = 0; i < sequence().size(); i++)
|
for (int i = 0; i < m_Sequence.size(); i++)
|
||||||
{
|
{
|
||||||
settings.setArrayIndex(i);
|
settings.setArrayIndex(i);
|
||||||
settings.setValue("key", sequence()[i]);
|
settings.setValue("key", m_Sequence[i]);
|
||||||
}
|
}
|
||||||
settings.endArray();
|
settings.endArray();
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ class KeySequence
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QString toString() const;
|
QString toString() const;
|
||||||
bool appendKey(int modifiers, int key);
|
bool appendKey(int key, int modifiers);
|
||||||
bool appendMouseButton(int button);
|
bool appendMouseButton(int button);
|
||||||
bool isMouseButton() const;
|
bool isMouseButton() const;
|
||||||
bool valid() const { return m_IsValid; }
|
bool valid() const { return m_IsValid; }
|
||||||
|
@ -44,7 +44,6 @@ class KeySequence
|
||||||
private:
|
private:
|
||||||
void setValid(bool b) { m_IsValid = b; }
|
void setValid(bool b) { m_IsValid = b; }
|
||||||
void setModifiers(int i) { m_Modifiers = i; }
|
void setModifiers(int i) { m_Modifiers = i; }
|
||||||
QList<int>& sequence() { return m_Sequence; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<int> m_Sequence;
|
QList<int> m_Sequence;
|
||||||
|
|
|
@ -0,0 +1,126 @@
|
||||||
|
/* barrier -- mouse and keyboard sharing utility
|
||||||
|
Copyright (C) 2021 Povilas Kanapickas <povilas@radix.lt>
|
||||||
|
|
||||||
|
This package is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
found in the file LICENSE that should have accompanied this file.
|
||||||
|
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../src/KeySequence.h"
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <cstdio>
|
||||||
|
|
||||||
|
#include <QtCore/QFile>
|
||||||
|
#include <QtCore/QSettings>
|
||||||
|
#include <QtCore/QTemporaryFile>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
auto s_key_sequence_test_keys = {
|
||||||
|
Qt::Key_Space,
|
||||||
|
Qt::Key_Escape,
|
||||||
|
Qt::Key_Tab,
|
||||||
|
Qt::Key_Backtab,
|
||||||
|
Qt::Key_Backspace,
|
||||||
|
Qt::Key_Return,
|
||||||
|
Qt::Key_Insert,
|
||||||
|
Qt::Key_Delete,
|
||||||
|
Qt::Key_Pause,
|
||||||
|
Qt::Key_Print,
|
||||||
|
Qt::Key_SysReq,
|
||||||
|
Qt::Key_Home,
|
||||||
|
Qt::Key_End,
|
||||||
|
Qt::Key_Left,
|
||||||
|
Qt::Key_Up,
|
||||||
|
Qt::Key_Right,
|
||||||
|
Qt::Key_Down,
|
||||||
|
Qt::Key_Comma,
|
||||||
|
Qt::Key_Semicolon,
|
||||||
|
Qt::Key_PageUp,
|
||||||
|
Qt::Key_PageDown,
|
||||||
|
Qt::Key_CapsLock,
|
||||||
|
Qt::Key_NumLock,
|
||||||
|
Qt::Key_ScrollLock,
|
||||||
|
Qt::Key_Help,
|
||||||
|
Qt::Key_Enter,
|
||||||
|
Qt::Key_Clear,
|
||||||
|
Qt::Key_Back,
|
||||||
|
Qt::Key_Forward,
|
||||||
|
Qt::Key_Stop,
|
||||||
|
Qt::Key_Refresh,
|
||||||
|
Qt::Key_VolumeDown,
|
||||||
|
Qt::Key_VolumeMute,
|
||||||
|
Qt::Key_VolumeUp,
|
||||||
|
Qt::Key_MediaPlay,
|
||||||
|
Qt::Key_MediaStop,
|
||||||
|
Qt::Key_MediaPrevious,
|
||||||
|
Qt::Key_MediaNext,
|
||||||
|
Qt::Key_HomePage,
|
||||||
|
Qt::Key_Favorites,
|
||||||
|
Qt::Key_Search,
|
||||||
|
Qt::Key_Standby,
|
||||||
|
Qt::Key_LaunchMail,
|
||||||
|
Qt::Key_LaunchMedia,
|
||||||
|
Qt::Key_Launch0,
|
||||||
|
Qt::Key_Launch1,
|
||||||
|
Qt::Key_Select,
|
||||||
|
};
|
||||||
|
|
||||||
|
QString getTemporaryFilename()
|
||||||
|
{
|
||||||
|
QTemporaryFile temp_file;
|
||||||
|
temp_file.open();
|
||||||
|
return temp_file.fileName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class KeySequenceLoadSaveTestFixture :
|
||||||
|
public ::testing::TestWithParam<std::tr1::tuple<Qt::Key, QSettings::Format>> {};
|
||||||
|
|
||||||
|
TEST_P(KeySequenceLoadSaveTestFixture, SupportsSpecialSymbols)
|
||||||
|
{
|
||||||
|
int key = std::tr1::get<0>(GetParam());
|
||||||
|
QSettings::Format format = std::tr1::get<1>(GetParam());
|
||||||
|
|
||||||
|
auto filename = getTemporaryFilename();
|
||||||
|
|
||||||
|
{
|
||||||
|
QSettings settings(filename, format);
|
||||||
|
KeySequence sequence;
|
||||||
|
|
||||||
|
sequence.appendKey(key, 0);
|
||||||
|
sequence.appendKey(key, 0);
|
||||||
|
settings.beginGroup("test");
|
||||||
|
sequence.saveSettings(settings);
|
||||||
|
settings.endGroup();
|
||||||
|
}
|
||||||
|
{
|
||||||
|
QSettings settings(filename, format);
|
||||||
|
KeySequence sequence;
|
||||||
|
|
||||||
|
settings.beginGroup("test");
|
||||||
|
sequence.loadSettings(settings);
|
||||||
|
settings.endGroup();
|
||||||
|
|
||||||
|
const auto& data = sequence.sequence();
|
||||||
|
ASSERT_EQ(data.size(), 2);
|
||||||
|
ASSERT_EQ(data[0], key);
|
||||||
|
ASSERT_EQ(data[1], key);
|
||||||
|
}
|
||||||
|
|
||||||
|
QFile::remove(filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_CASE_P(
|
||||||
|
KeySequenceLoadSaveTests,
|
||||||
|
KeySequenceLoadSaveTestFixture,
|
||||||
|
::testing::Combine(::testing::ValuesIn(s_key_sequence_test_keys),
|
||||||
|
::testing::Values(QSettings::NativeFormat, QSettings::IniFormat)));
|
|
@ -0,0 +1,23 @@
|
||||||
|
/* barrier -- mouse and keyboard sharing utility
|
||||||
|
Copyright (C) 2021 Povilas Kanapickas <povilas@radix.lt>
|
||||||
|
|
||||||
|
This package is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
found in the file LICENSE that should have accompanied this file.
|
||||||
|
|
||||||
|
This package is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
testing::InitGoogleTest(&argc, argv);
|
||||||
|
return (RUN_ALL_TESTS() == 1) ? 1 : 0;
|
||||||
|
}
|
Loading…
Reference in New Issue