mirror of
https://github.com/deskflow/deskflow.git
synced 2026-07-01 21:02:39 +08:00
325 lines
7.9 KiB
C++
325 lines
7.9 KiB
C++
/*
|
|
* Deskflow -- mouse and keyboard sharing utility
|
|
* SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello <sithlord48@gmail.com>
|
|
* SPDX-FileCopyrightText: (C) 2014 - 2016 Symless Ltd.
|
|
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
|
|
*/
|
|
|
|
#include "ArgParserTests.h"
|
|
|
|
#include "deskflow/ArgsBase.h"
|
|
#include "deskflow/ClientArgs.h"
|
|
#include "deskflow/ServerArgs.h"
|
|
|
|
// This file is generated at build time
|
|
#include <common/Constants.h>
|
|
|
|
void ArgParserTests::initTestCase()
|
|
{
|
|
m_arch.init();
|
|
m_log.setFilter(LogLevel::Debug2);
|
|
static deskflow::ArgsBase base;
|
|
m_parser.setArgsBase(base);
|
|
}
|
|
|
|
void ArgParserTests::isArg()
|
|
{
|
|
int i = 1;
|
|
const int argc = 2;
|
|
const char *argShort[argc] = {"stub", "-t"};
|
|
QVERIFY(ArgParser::isArg(i, argc, argShort, "-t", NULL));
|
|
|
|
const char *argLong[argc] = {"stub", "--test"};
|
|
QVERIFY(ArgParser::isArg(i, argc, argLong, NULL, "--test"));
|
|
}
|
|
|
|
void ArgParserTests::missingArg()
|
|
{
|
|
int i = 1;
|
|
const int argc = 2;
|
|
const char *argv[argc] = {"stub", "-t"};
|
|
static deskflow::ArgsBase argsBase;
|
|
|
|
m_parser.setArgsBase(argsBase);
|
|
|
|
QVERIFY(!ArgParser::isArg(i, argc, argv, "-t", NULL, 1));
|
|
QVERIFY(argsBase.m_shouldExitFail);
|
|
}
|
|
|
|
void ArgParserTests::withQuotes()
|
|
{
|
|
std::string command("\"stub\"");
|
|
size_t left = 0;
|
|
size_t right = 0;
|
|
|
|
QVERIFY(ArgParser::searchDoubleQuotes(command, left, right));
|
|
QCOMPARE(left, 0);
|
|
QCOMPARE(right, 5);
|
|
|
|
command = "stub";
|
|
left = 0;
|
|
right = 0;
|
|
|
|
QVERIFY(!ArgParser::searchDoubleQuotes(command, left, right));
|
|
QCOMPARE(0, left);
|
|
QCOMPARE(0, right);
|
|
|
|
command = "\"stub";
|
|
left = 0;
|
|
right = 0;
|
|
|
|
QVERIFY(!ArgParser::searchDoubleQuotes(command, left, right));
|
|
QCOMPARE(left, 0);
|
|
QCOMPARE(right, 0);
|
|
}
|
|
|
|
void ArgParserTests::splitCommand()
|
|
{
|
|
std::string command("stub");
|
|
std::vector<std::string> argv;
|
|
ArgParser::splitCommandString(command, argv);
|
|
|
|
QCOMPARE(argv.size(), 1);
|
|
QCOMPARE(argv.at(0), "stub");
|
|
|
|
command = "stub1 stub2";
|
|
argv.resize(0);
|
|
ArgParser::splitCommandString(command, argv);
|
|
|
|
QCOMPARE(2, argv.size());
|
|
QCOMPARE(argv.at(0), "stub1");
|
|
QCOMPARE(argv.at(1), "stub2");
|
|
|
|
command = "stub1 stub2 stub3";
|
|
argv.resize(0);
|
|
ArgParser::splitCommandString(command, argv);
|
|
|
|
QCOMPARE(3, argv.size());
|
|
QCOMPARE(argv.at(0), "stub1");
|
|
QCOMPARE(argv.at(1), "stub2");
|
|
QCOMPARE(argv.at(2), "stub3");
|
|
|
|
command = "\"stub1\" stub2 \"stub3 space\"";
|
|
argv.resize(0);
|
|
ArgParser::splitCommandString(command, argv);
|
|
|
|
QCOMPARE(3, argv.size());
|
|
QCOMPARE(argv.at(0), "stub1");
|
|
QCOMPARE(argv.at(1), "stub2");
|
|
QCOMPARE(argv.at(2), "stub3 space");
|
|
}
|
|
|
|
void ArgParserTests::getArgv()
|
|
{
|
|
std::vector<std::string> argArray;
|
|
argArray.push_back("stub1");
|
|
argArray.push_back("stub2");
|
|
argArray.push_back("stub3 space");
|
|
const char **argv = ArgParser::getArgv(argArray);
|
|
|
|
std::string row1(argv[0]);
|
|
std::string row2(argv[1]);
|
|
std::string row3(argv[2]);
|
|
|
|
QCOMPARE(row1, "stub1");
|
|
QCOMPARE(row2, "stub2");
|
|
QCOMPARE(row3, "stub3 space");
|
|
|
|
delete[] argv;
|
|
}
|
|
|
|
void ArgParserTests::assembleCommand()
|
|
{
|
|
std::vector<std::string> argArray;
|
|
argArray.push_back("stub1");
|
|
argArray.push_back("stub2");
|
|
std::string command = ArgParser::assembleCommand(argArray);
|
|
|
|
QCOMPARE(command, "stub1 stub2");
|
|
|
|
argArray.resize(0);
|
|
argArray.push_back("stub1");
|
|
argArray.push_back("stub2");
|
|
command = ArgParser::assembleCommand(argArray, "stub2");
|
|
|
|
QCOMPARE(command, "stub1");
|
|
|
|
argArray.resize(0);
|
|
argArray.push_back("stub1");
|
|
argArray.push_back("stub2");
|
|
argArray.push_back("stub3");
|
|
argArray.push_back("stub4");
|
|
command = ArgParser::assembleCommand(argArray, "stub2", 1);
|
|
|
|
QCOMPARE(command, "stub1 stub4");
|
|
|
|
argArray.resize(0);
|
|
argArray.push_back("stub1 space");
|
|
argArray.push_back("stub2");
|
|
argArray.push_back("stub3 space");
|
|
command = ArgParser::assembleCommand(argArray);
|
|
|
|
QCOMPARE(command, "\"stub1 space\" stub2 \"stub3 space\"");
|
|
}
|
|
|
|
void ArgParserTests::server_setConfigFile()
|
|
{
|
|
deskflow::ServerArgs serverArgs;
|
|
const int argc = 3;
|
|
const char *kConfigCmd[argc] = {"stub", "--config", "mock_configFile"};
|
|
|
|
m_parser.parseServerArgs(serverArgs, argc, kConfigCmd);
|
|
|
|
QCOMPARE(serverArgs.m_configFile, "mock_configFile");
|
|
}
|
|
|
|
void ArgParserTests::server_unexpectedParam()
|
|
{
|
|
deskflow::ServerArgs serverArgs;
|
|
const int argc = 2;
|
|
std::array<const char *, argc> kUnknownCmd = {"stub", "--unknown"};
|
|
|
|
QVERIFY(!m_parser.parseServerArgs(serverArgs, argc, kUnknownCmd.data()));
|
|
}
|
|
|
|
void ArgParserTests::serverArgs()
|
|
{
|
|
deskflow::ServerArgs args;
|
|
char const *argv[] = {"deskflow", "--help", "--res-w", "888"};
|
|
|
|
QVERIFY(m_parser.parseServerArgs(args, sizeof(argv) / sizeof(argv[0]), argv));
|
|
QVERIFY(args.m_shouldExitOk);
|
|
}
|
|
|
|
void ArgParserTests::clientArgs()
|
|
{
|
|
deskflow::ClientArgs args;
|
|
char const *argv[] = {kAppId, "--help", "--res-w", "888", "127.0.0.1"};
|
|
|
|
QVERIFY(m_parser.parseClientArgs(args, sizeof(argv) / sizeof(argv[0]), argv));
|
|
QVERIFY(args.m_shouldExitOk);
|
|
}
|
|
|
|
void ArgParserTests::client_yScroll()
|
|
{
|
|
deskflow::ClientArgs clientArgs;
|
|
const int argc = 3;
|
|
const char *kYScrollCmd[argc] = {"stub", "--yscroll", "1"};
|
|
|
|
m_parser.parseClientArgs(clientArgs, argc, kYScrollCmd);
|
|
|
|
QCOMPARE(clientArgs.m_yscroll, 1);
|
|
}
|
|
|
|
void ArgParserTests::client_setLangSync()
|
|
{
|
|
deskflow::ClientArgs clientArgs;
|
|
clientArgs.m_enableLangSync = false;
|
|
const int argc = 2;
|
|
std::array<const char *, argc> kLangCmd = {"stub", "--sync-language"};
|
|
|
|
m_parser.parseClientArgs(clientArgs, argc, kLangCmd.data());
|
|
|
|
QVERIFY(clientArgs.m_enableLangSync);
|
|
}
|
|
|
|
void ArgParserTests::client_setInvertScroll()
|
|
{
|
|
deskflow::ClientArgs clientArgs;
|
|
const int argc = 2;
|
|
std::array<const char *, argc> kLangCmd = {"stub", "--invert-scroll"};
|
|
|
|
m_parser.parseClientArgs(clientArgs, argc, kLangCmd.data());
|
|
|
|
QCOMPARE(clientArgs.m_clientScrollDirection, deskflow::ClientScrollDirection::Inverted);
|
|
}
|
|
|
|
void ArgParserTests::client_setAddress()
|
|
{
|
|
deskflow::ClientArgs clientArgs;
|
|
const int argc = 2;
|
|
const char *kAddressCmd[argc] = {"stub", "mock_address"};
|
|
|
|
QVERIFY(m_parser.parseClientArgs(clientArgs, argc, kAddressCmd));
|
|
QCOMPARE(clientArgs.m_serverAddress, "mock_address");
|
|
}
|
|
|
|
void ArgParserTests::client_badArgs()
|
|
{
|
|
deskflow::ClientArgs clientArgs;
|
|
const int argc = 1;
|
|
const char *kNoAddressCmd[argc] = {"stub"};
|
|
QVERIFY(!m_parser.parseClientArgs(clientArgs, argc, kNoAddressCmd));
|
|
|
|
const int argc2 = 3;
|
|
const char *kUnrecognizedCmd[argc2] = {"stub", "mock_arg", "mock_address"};
|
|
QVERIFY(!m_parser.parseClientArgs(clientArgs, argc2, kUnrecognizedCmd));
|
|
}
|
|
|
|
void ArgParserTests::deprecatedArg_crypoPass_true()
|
|
{
|
|
int i = 1;
|
|
const int argc = 3;
|
|
const char *kCryptoPassCmd[argc] = {"stub", "--crypto-pass", "mock_pass"};
|
|
|
|
QVERIFY(m_parser.parseDeprecatedArgs(argc, kCryptoPassCmd, i));
|
|
QCOMPARE(i, 2);
|
|
}
|
|
|
|
void ArgParserTests::deprecatedArg_crypoPass_false()
|
|
{
|
|
int i = 1;
|
|
const int argc = 3;
|
|
const char *kCryptoPassCmd[argc] = {"stub", "--mock-arg", "mock_value"};
|
|
|
|
QVERIFY(!m_parser.parseDeprecatedArgs(argc, kCryptoPassCmd, i));
|
|
QCOMPARE(i, 1);
|
|
}
|
|
|
|
void ArgParserTests::generic_noRestart()
|
|
{
|
|
int i = 1;
|
|
const int argc = 2;
|
|
const char *kNoRestartCmd[argc] = {"stub", "--no-restart"};
|
|
|
|
m_parser.parseGenericArgs(argc, kNoRestartCmd, i);
|
|
|
|
QVERIFY(!m_parser.argsBase().m_restartable);
|
|
QCOMPARE(i, 1);
|
|
}
|
|
|
|
void ArgParserTests::generic_restart()
|
|
{
|
|
int i = 1;
|
|
const int argc = 2;
|
|
const char *kRestartCmd[argc] = {"stub", "--restart"};
|
|
|
|
m_parser.parseGenericArgs(argc, kRestartCmd, i);
|
|
|
|
QVERIFY(m_parser.argsBase().m_restartable);
|
|
QCOMPARE(i, 1);
|
|
}
|
|
|
|
void ArgParserTests::generic_unknown()
|
|
{
|
|
int i = 1;
|
|
const int argc = 2;
|
|
const char *kBackendCmd[argc] = {"stub", "-z"};
|
|
|
|
QVERIFY(!m_parser.parseGenericArgs(argc, kBackendCmd, i));
|
|
}
|
|
|
|
void ArgParserTests::generic_noHook()
|
|
{
|
|
int i = 1;
|
|
const int argc = 2;
|
|
const char *kNoHookCmd[argc] = {"stub", "--no-hooks"};
|
|
|
|
m_parser.parseGenericArgs(argc, kNoHookCmd, i);
|
|
|
|
QVERIFY(m_parser.argsBase().m_noHooks);
|
|
QCOMPARE(i, 1);
|
|
}
|
|
|
|
QTEST_MAIN(ArgParserTests)
|