From de65d4fcf9d57a6d559cae35c6d194b2feb42142 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Thu, 2 Jul 2015 18:54:35 +0100 Subject: [PATCH] Add tests for Version class. --- CMakeLists.txt | 1 + src/tests/backend/helpers/test_version.h | 149 +++++++++++++++++++++++ src/tests/main.cpp | 1 + 3 files changed, 151 insertions(+) create mode 100644 src/tests/backend/helpers/test_version.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 3cd6d7b9..c7429a29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -163,6 +163,7 @@ set (LOOT_TESTS_HEADERS "${CMAKE_SOURCE_DIR}/src/tests/fixtures.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/helpers/test_git_helper.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/helpers/test_helpers.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/helpers/test_language.h" + "${CMAKE_SOURCE_DIR}/src/tests/backend/helpers/test_version.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/helpers/test_yaml_set_helpers.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_condition_grammar.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_conditional_metadata.h" diff --git a/src/tests/backend/helpers/test_version.h b/src/tests/backend/helpers/test_version.h new file mode 100644 index 00000000..8615fe37 --- /dev/null +++ b/src/tests/backend/helpers/test_version.h @@ -0,0 +1,149 @@ +/* LOOT + +A load order optimisation tool for Oblivion, Skyrim, Fallout 3 and +Fallout: New Vegas. + +Copyright (C) 2014-2015 WrinklyNinja + +This file is part of LOOT. + +LOOT is free software: you can redistribute +it and/or modify it under the terms of the GNU General Public License +as published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +LOOT 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 LOOT. If not, see +. +*/ + +#ifndef LOOT_TEST_BACKEND_HELPERS_VERSION +#define LOOT_TEST_BACKEND_HELPERS_VERSION + +#include "backend/globals.h" +#include "backend/helpers/version.h" +#include "tests/fixtures.h" + +class Version : public SkyrimTest {}; + +TEST_F(Version, ConstructorsAndDataAccess) { + loot::Version version; + EXPECT_EQ("", version.AsString()); + + version = loot::Version(std::string("5")); + EXPECT_EQ("5", version.AsString()); + +#ifdef _WIN32 + // Use the API DLL built. + version = loot::Version(boost::filesystem::path("loot32.dll")); + std::string expected( + std::to_string(loot::g_version_major) + "." + + std::to_string(loot::g_version_minor) + "." + + std::to_string(loot::g_version_patch) + ".0" + ); + EXPECT_EQ(expected, version.AsString()); +#endif +} + +TEST_F(Version, GreaterThan) { + loot::Version version1, version2; + EXPECT_FALSE(version1 > version2); + EXPECT_FALSE(version2 > version1); + + version1 = loot::Version(std::string("5")); + version2 = loot::Version(std::string("5")); + EXPECT_FALSE(version1 > version2); + EXPECT_FALSE(version2 > version1); + + version1 = loot::Version(std::string("4")); + version2 = loot::Version(std::string("5")); + EXPECT_FALSE(version1 > version2); + EXPECT_TRUE(version2 > version1); +} + +TEST_F(Version, LessThan) { + loot::Version version1, version2; + EXPECT_FALSE(version1 < version2); + EXPECT_FALSE(version2 < version1); + + version1 = loot::Version(std::string("5")); + version2 = loot::Version(std::string("5")); + EXPECT_FALSE(version1 < version2); + EXPECT_FALSE(version2 < version1); + + version1 = loot::Version(std::string("4")); + version2 = loot::Version(std::string("5")); + EXPECT_TRUE(version1 < version2); + EXPECT_FALSE(version2 < version1); +} + +TEST_F(Version, GreaterThanEqual) { + loot::Version version1, version2; + EXPECT_TRUE(version1 >= version2); + EXPECT_TRUE(version2 >= version1); + + version1 = loot::Version(std::string("5")); + version2 = loot::Version(std::string("5")); + EXPECT_TRUE(version1 >= version2); + EXPECT_TRUE(version2 >= version1); + + version1 = loot::Version(std::string("4")); + version2 = loot::Version(std::string("5")); + EXPECT_FALSE(version1 >= version2); + EXPECT_TRUE(version2 >= version1); +} + +TEST_F(Version, LessThanEqual) { + loot::Version version1, version2; + EXPECT_TRUE(version1 <= version2); + EXPECT_TRUE(version2 <= version1); + + version1 = loot::Version(std::string("5")); + version2 = loot::Version(std::string("5")); + EXPECT_TRUE(version1 <= version2); + EXPECT_TRUE(version2 <= version1); + + version1 = loot::Version(std::string("4")); + version2 = loot::Version(std::string("5")); + EXPECT_TRUE(version1 <= version2); + EXPECT_FALSE(version2 <= version1); +} + +TEST_F(Version, Equal) { + loot::Version version1, version2; + EXPECT_TRUE(version1 == version2); + EXPECT_TRUE(version2 == version1); + + version1 = loot::Version(std::string("5")); + version2 = loot::Version(std::string("5")); + EXPECT_TRUE(version1 == version2); + EXPECT_TRUE(version2 == version1); + + version1 = loot::Version(std::string("4")); + version2 = loot::Version(std::string("5")); + EXPECT_FALSE(version1 == version2); + EXPECT_FALSE(version2 == version1); +} + +TEST_F(Version, NotEqual) { + loot::Version version1, version2; + EXPECT_FALSE(version1 != version2); + EXPECT_FALSE(version2 != version1); + + version1 = loot::Version(std::string("5")); + version2 = loot::Version(std::string("5")); + EXPECT_FALSE(version1 != version2); + EXPECT_FALSE(version2 != version1); + + version1 = loot::Version(std::string("4")); + version2 = loot::Version(std::string("5")); + EXPECT_TRUE(version1 != version2); + EXPECT_TRUE(version2 != version1); +} + +#endif diff --git a/src/tests/main.cpp b/src/tests/main.cpp index 434d54b3..cfbcdd11 100644 --- a/src/tests/main.cpp +++ b/src/tests/main.cpp @@ -42,6 +42,7 @@ #include "backend/helpers/test_git_helper.h" #include "backend/helpers/test_helpers.h" #include "backend/helpers/test_language.h" +#include "backend/helpers/test_version.h" #include "backend/helpers/test_yaml_set_helpers.h" #include