mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Add more tests
This commit is contained in:
parent
01cf000cbe
commit
fb7bcd57cd
|
|
@ -1,6 +1,7 @@
|
|||
#include "utility.hpp"
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <QTextStream>
|
||||
#include <sstream>
|
||||
|
||||
namespace advss {
|
||||
|
|
|
|||
|
|
@ -6,11 +6,13 @@ add_executable(${PROJECT_NAME})
|
|||
target_compile_definitions(${PROJECT_NAME} PRIVATE UNIT_TEST)
|
||||
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
|
||||
|
||||
target_sources(${PROJECT_NAME} PRIVATE main.cpp mocks/obs-data.cpp
|
||||
mocks/ui-helpers.cpp mocks/utility.cpp)
|
||||
target_sources(
|
||||
${PROJECT_NAME} PRIVATE test-main.cpp mocks/obs-data.cpp
|
||||
mocks/path-helpers.cpp mocks/ui-helpers.cpp)
|
||||
target_include_directories(
|
||||
${PROJECT_NAME} PRIVATE mocks ${ADVSS_SOURCE_DIR}/lib/utils
|
||||
${ADVSS_SOURCE_DIR}/plugins/base/utils)
|
||||
${PROJECT_NAME}
|
||||
PRIVATE mocks ${ADVSS_SOURCE_DIR}/lib/utils ${ADVSS_SOURCE_DIR}/lib/variables
|
||||
${ADVSS_SOURCE_DIR}/plugins/base/utils)
|
||||
|
||||
# --- Qt --- #
|
||||
|
||||
|
|
@ -50,13 +52,13 @@ set_target_properties(
|
|||
|
||||
target_sources(
|
||||
${PROJECT_NAME}
|
||||
PRIVATE json.cpp ${ADVSS_SOURCE_DIR}/plugins/base/utils/json-helpers.cpp)
|
||||
PRIVATE test-json.cpp ${ADVSS_SOURCE_DIR}/plugins/base/utils/json-helpers.cpp)
|
||||
|
||||
# --- math --- #
|
||||
|
||||
target_sources(
|
||||
${PROJECT_NAME}
|
||||
PRIVATE math.cpp ${ADVSS_SOURCE_DIR}/lib/utils/math-helpers.cpp
|
||||
PRIVATE test-math.cpp ${ADVSS_SOURCE_DIR}/lib/utils/math-helpers.cpp
|
||||
${ADVSS_SOURCE_DIR}/lib/utils/obs-module-helper.cpp)
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
PRIVATE ${ADVSS_SOURCE_DIR}/deps/exprtk)
|
||||
|
|
@ -74,9 +76,32 @@ endif()
|
|||
|
||||
target_sources(
|
||||
${PROJECT_NAME}
|
||||
PRIVATE regex.cpp ${ADVSS_SOURCE_DIR}/lib/utils/regex-config.cpp
|
||||
PRIVATE test-regex.cpp ${ADVSS_SOURCE_DIR}/lib/utils/regex-config.cpp
|
||||
${ADVSS_SOURCE_DIR}/plugins/base/utils/text-helpers.cpp)
|
||||
|
||||
# --- utility --- #
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC nlohmann_json::nlohmann_json)
|
||||
|
||||
target_sources(
|
||||
${PROJECT_NAME} PRIVATE test-utility.cpp
|
||||
${ADVSS_SOURCE_DIR}/lib/utils/utility.cpp)
|
||||
|
||||
# --- variable --- #
|
||||
|
||||
if(NOT OS_WINDOWS)
|
||||
target_compile_options(${PROJECT_NAME} PUBLIC -Wno-error=shadow)
|
||||
endif()
|
||||
|
||||
target_sources(
|
||||
${PROJECT_NAME}
|
||||
PRIVATE test-variable.cpp
|
||||
${ADVSS_SOURCE_DIR}/lib/utils/filter-combo-box.cpp
|
||||
${ADVSS_SOURCE_DIR}/lib/utils/item-selection-helpers.cpp
|
||||
${ADVSS_SOURCE_DIR}/lib/utils/name-dialog.cpp
|
||||
${ADVSS_SOURCE_DIR}/lib/utils/resizing-text-edit.cpp
|
||||
${ADVSS_SOURCE_DIR}/lib/variables/variable.cpp)
|
||||
|
||||
# --- #
|
||||
|
||||
enable_testing()
|
||||
|
|
|
|||
15
tests/mocks/path-helpers.cpp
Normal file
15
tests/mocks/path-helpers.cpp
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include "path-helpers.hpp"
|
||||
|
||||
namespace advss {
|
||||
|
||||
std::string GetDataFilePath(const std::string &file)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
QString GetDefaultSettingsSaveLocation()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
} // namespace advss
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
#include "utility.hpp"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
namespace advss {
|
||||
|
||||
std::pair<int, int> GetCursorPos()
|
||||
{
|
||||
return {0, 0};
|
||||
}
|
||||
|
||||
bool ReplaceAll(std::string &str, const std::string &from,
|
||||
const std::string &to)
|
||||
{
|
||||
if (from.empty()) {
|
||||
return false;
|
||||
}
|
||||
size_t start_pos = 0;
|
||||
bool somethingWasReplaced = false;
|
||||
while ((start_pos = str.find(from, start_pos)) != std::string::npos) {
|
||||
str.replace(start_pos, from.length(), to);
|
||||
start_pos += to.length();
|
||||
somethingWasReplaced = true;
|
||||
}
|
||||
return somethingWasReplaced;
|
||||
}
|
||||
|
||||
std::optional<std::string> GetJsonField(const std::string &jsonStr,
|
||||
const std::string &fieldToExtract)
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
bool CompareIgnoringLineEnding(QString &s1, QString &s2)
|
||||
{
|
||||
// Let QT deal with different types of lineendings
|
||||
QTextStream s1stream(&s1);
|
||||
QTextStream s2stream(&s2);
|
||||
|
||||
while (!s1stream.atEnd() || !s2stream.atEnd()) {
|
||||
QString s1s = s1stream.readLine();
|
||||
QString s2s = s2stream.readLine();
|
||||
if (s1s != s2s) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!s1stream.atEnd() && !s2stream.atEnd()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string GetDataFilePath(const std::string &file)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
QString GetDefaultSettingsSaveLocation()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
void listAddClicked(QListWidget *list, QWidget *newWidget,
|
||||
QPushButton *addButton,
|
||||
QMetaObject::Connection *addHighlight)
|
||||
{
|
||||
}
|
||||
|
||||
bool listMoveUp(QListWidget *list)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool listMoveDown(QListWidget *list)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace advss
|
||||
|
|
@ -93,3 +93,52 @@ TEST_CASE("Invalid expressions are not evaluated", "[math-helpers]")
|
|||
|
||||
REQUIRE(doubleValuePtr == nullptr);
|
||||
}
|
||||
|
||||
TEST_CASE("IsValidNumber", "[math-helpers]")
|
||||
{
|
||||
REQUIRE(advss::IsValidNumber("1"));
|
||||
REQUIRE(advss::IsValidNumber("-1"));
|
||||
REQUIRE(advss::IsValidNumber("1.0"));
|
||||
REQUIRE(advss::IsValidNumber("-1.0"));
|
||||
|
||||
REQUIRE_FALSE(advss::IsValidNumber(""));
|
||||
REQUIRE_FALSE(advss::IsValidNumber("abc"));
|
||||
REQUIRE_FALSE(advss::IsValidNumber("abc123def"));
|
||||
}
|
||||
|
||||
TEST_CASE("GetInt", "[math-helpers]")
|
||||
{
|
||||
auto result = advss::GetInt("1");
|
||||
REQUIRE(*result == 1);
|
||||
|
||||
result = advss::GetInt("-1");
|
||||
REQUIRE(*result == -1);
|
||||
|
||||
REQUIRE_FALSE(advss::GetInt("").has_value());
|
||||
REQUIRE_FALSE(advss::GetInt("abc123def").has_value());
|
||||
REQUIRE_FALSE(advss::GetInt("1.0").has_value());
|
||||
}
|
||||
|
||||
TEST_CASE("GetDouble", "[math-helpers]")
|
||||
{
|
||||
auto result = advss::GetDouble("1");
|
||||
REQUIRE(*result == 1.0);
|
||||
|
||||
result = advss::GetDouble("1.0");
|
||||
REQUIRE(*result == 1.0);
|
||||
|
||||
result = advss::GetDouble("-1.0");
|
||||
REQUIRE(*result == -1.0);
|
||||
|
||||
REQUIRE_FALSE(advss::GetDouble(""));
|
||||
REQUIRE_FALSE(advss::GetDouble("abc123def"));
|
||||
}
|
||||
|
||||
TEST_CASE("DoubleEquals", "[math-helpers]")
|
||||
{
|
||||
REQUIRE(advss::DoubleEquals(1.0, 1.0, 0.1));
|
||||
REQUIRE(advss::DoubleEquals(10.0, 11.0, 2.0));
|
||||
REQUIRE_FALSE(advss::DoubleEquals(10.0, 1.0, 0.1));
|
||||
REQUIRE_FALSE(advss::DoubleEquals(1.0, 2.0, 0.5));
|
||||
REQUIRE_FALSE(advss::DoubleEquals(1.0, 1.0, 0.0));
|
||||
}
|
||||
63
tests/test-utility.cpp
Normal file
63
tests/test-utility.cpp
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
#include "catch.hpp"
|
||||
|
||||
#include <utility.hpp>
|
||||
|
||||
TEST_CASE("ReplaceAll", "[utility]")
|
||||
{
|
||||
std::string input;
|
||||
auto result = advss::ReplaceAll(input, "", "");
|
||||
REQUIRE_FALSE(result);
|
||||
REQUIRE(input == "");
|
||||
|
||||
input = "testing";
|
||||
result = advss::ReplaceAll(input, "not there", "sleep");
|
||||
REQUIRE_FALSE(result);
|
||||
REQUIRE(input == "testing");
|
||||
|
||||
input = "testing";
|
||||
result = advss::ReplaceAll(input, "test", "sleep");
|
||||
REQUIRE(result);
|
||||
REQUIRE(input == "sleeping");
|
||||
}
|
||||
|
||||
TEST_CASE("GetJsonField", "[utility]")
|
||||
{
|
||||
auto result = advss::GetJsonField("{}", "");
|
||||
REQUIRE_FALSE(result);
|
||||
|
||||
result = advss::GetJsonField("{}", "not there");
|
||||
REQUIRE_FALSE(result);
|
||||
|
||||
result = advss::GetJsonField("invalid json", "not there");
|
||||
REQUIRE_FALSE(result);
|
||||
|
||||
result = advss::GetJsonField("{ \"test\": 1 }", "test");
|
||||
REQUIRE(*result == "1");
|
||||
}
|
||||
|
||||
TEST_CASE("CompareIgnoringLineEnding", "[utility]")
|
||||
{
|
||||
QString s1;
|
||||
QString s2;
|
||||
REQUIRE(advss::CompareIgnoringLineEnding(s1, s2));
|
||||
|
||||
s1 = "test";
|
||||
s2 = "test";
|
||||
REQUIRE(advss::CompareIgnoringLineEnding(s1, s2));
|
||||
|
||||
s1 = "test";
|
||||
s2 = "something else";
|
||||
REQUIRE_FALSE(advss::CompareIgnoringLineEnding(s1, s2));
|
||||
|
||||
s1 = "test\r\nwith line ending";
|
||||
s2 = "test\nwith line ending";
|
||||
REQUIRE(advss::CompareIgnoringLineEnding(s1, s2));
|
||||
}
|
||||
|
||||
TEST_CASE("ToString", "[utility]")
|
||||
{
|
||||
REQUIRE(advss::ToString(1.0) == "1");
|
||||
REQUIRE(advss::ToString(-1.0) == "-1");
|
||||
REQUIRE(advss::ToString(-1.0) == "-1");
|
||||
REQUIRE(advss::ToString(-1.23) == "-1.23");
|
||||
}
|
||||
38
tests/test-variable.cpp
Normal file
38
tests/test-variable.cpp
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#include "catch.hpp"
|
||||
|
||||
#include <variable.hpp>
|
||||
#include <thread>
|
||||
|
||||
TEST_CASE("Variable", "[variable]")
|
||||
{
|
||||
advss::Variable variable;
|
||||
REQUIRE_FALSE(variable.SecondsSinceLastUse());
|
||||
|
||||
REQUIRE(variable.Value() == "");
|
||||
REQUIRE(variable.GetDefaultValue() == "");
|
||||
REQUIRE(variable.GetSaveAction() ==
|
||||
advss::Variable::SaveAction::DONT_SAVE);
|
||||
|
||||
variable.SetValue("testing");
|
||||
REQUIRE(variable.Value() == "testing");
|
||||
|
||||
variable.SetValue(123);
|
||||
REQUIRE(variable.Value() == "123");
|
||||
|
||||
variable.SetValue(123.0);
|
||||
REQUIRE(variable.Value() == "123");
|
||||
|
||||
variable.SetValue(123.123);
|
||||
REQUIRE(variable.Value() == "123.123");
|
||||
|
||||
REQUIRE(*variable.SecondsSinceLastUse() == 0);
|
||||
|
||||
std::this_thread::sleep_for(std::chrono::seconds(2));
|
||||
REQUIRE(*variable.SecondsSinceLastUse() > 1);
|
||||
|
||||
variable.Value(false);
|
||||
REQUIRE(*variable.SecondsSinceLastUse() > 1);
|
||||
|
||||
variable.UpdateLastUsed();
|
||||
REQUIRE(*variable.SecondsSinceLastUse() == 0);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user