Add more tests

This commit is contained in:
WarmUpTill 2024-02-23 23:13:29 +01:00 committed by WarmUpTill
parent 01cf000cbe
commit fb7bcd57cd
10 changed files with 198 additions and 88 deletions

View File

@ -1,6 +1,7 @@
#include "utility.hpp"
#include <nlohmann/json.hpp>
#include <QTextStream>
#include <sstream>
namespace advss {

View File

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

View File

@ -0,0 +1,15 @@
#include "path-helpers.hpp"
namespace advss {
std::string GetDataFilePath(const std::string &file)
{
return "";
}
QString GetDefaultSettingsSaveLocation()
{
return "";
}
} // namespace advss

View File

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

View File

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