From bc3e06a5d9f229d5bb9287ed5a6ab768f1923716 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sat, 26 Mar 2016 10:45:50 +0000 Subject: [PATCH] Improve MessageContent tests --- CMakeLists.txt | 2 +- .../backend/metadata/message_content_test.h | 116 ++++++++++++++++++ .../backend/metadata/test_message_content.h | 112 ----------------- src/tests/main.cpp | 2 +- 4 files changed, 118 insertions(+), 114 deletions(-) create mode 100644 src/tests/backend/metadata/message_content_test.h delete mode 100644 src/tests/backend/metadata/test_message_content.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 88dacfde..25cc7666 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -249,7 +249,7 @@ set (LOOT_TESTS_HEADERS "${CMAKE_SOURCE_DIR}/src/tests/base_game_test.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/file_test.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/location_test.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/message_test.h" - "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_message_content.h" + "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/message_content_test.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_plugin_dirty_info.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_plugin_metadata.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_tag.h" diff --git a/src/tests/backend/metadata/message_content_test.h b/src/tests/backend/metadata/message_content_test.h new file mode 100644 index 00000000..3b6bc4fc --- /dev/null +++ b/src/tests/backend/metadata/message_content_test.h @@ -0,0 +1,116 @@ +/* LOOT + +A load order optimisation tool for Oblivion, Skyrim, Fallout 3 and +Fallout: New Vegas. + +Copyright (C) 2014-2016 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_METADATA_MESSAGE_CONTENT +#define LOOT_TEST_BACKEND_METADATA_MESSAGE_CONTENT + +#include "backend/metadata/message_content.h" + +#include + +namespace loot { + namespace test { + TEST(MessageContent, defaultConstructorShouldSetEmptyEnglishLanguageString) { + MessageContent content; + + EXPECT_TRUE(content.Str().empty()); + EXPECT_EQ(Language::english, content.Language()); + } + + TEST(MessageContent, contentConstructorShouldStoreGivenStringAndLanguage) { + MessageContent content("content", Language::french); + + EXPECT_EQ("content", content.Str()); + EXPECT_EQ(Language::french, content.Language()); + } + + TEST(MessageContent, contentShouldBeEqualIfStringsAreCaseInsensitivelyEqual) { + MessageContent content1("content", Language::english); + MessageContent content2("Content", Language::french); + + EXPECT_TRUE(content1 == content2); + } + + TEST(MessageContent, contentShouldBeUnequalIfStringsAreNotCaseInsensitivelyEqual) { + MessageContent content1("content1", Language::french); + MessageContent content2("content2", Language::french); + + EXPECT_FALSE(content1 == content2); + } + + TEST(MessageContent, LessThanOperatorShouldUseCaseInsensitiveLexicographicalComparison) { + MessageContent content1("content", Language::english); + MessageContent content2("Content", Language::french); + + EXPECT_FALSE(content1 < content2); + EXPECT_FALSE(content2 < content1); + + content1 = MessageContent("content1", Language::french); + content2 = MessageContent("content2", Language::english); + + EXPECT_TRUE(content1 < content2); + EXPECT_FALSE(content2 < content1); + } + + TEST(MessageContent, emittingAsYamlShouldOutputDataCorrectly) { + MessageContent content("content", Language::french); + YAML::Emitter emitter; + emitter << content; + + EXPECT_EQ("lang: " + Language(content.Language()).Locale() + + "\nstr: '" + content.Str() + "'", emitter.c_str()); + } + + TEST(MessageContent, encodingAsYamlShouldOutputDataCorrectly) { + MessageContent content("content", Language::french); + YAML::Node node; + node = content; + + EXPECT_EQ(content.Str(), node["str"].as()); + EXPECT_EQ(Language(Language::french).Locale(), node["lang"].as()); + } + + TEST(MessageContent, decodingFromYamlShouldSetDataCorrectly) { + YAML::Node node = YAML::Load("{str: content, lang: de}"); + MessageContent content = node.as(); + + EXPECT_EQ("content", content.Str()); + EXPECT_EQ(Language::german, content.Language()); + } + + TEST(MessageContent, decodingFromYamlScalarShouldThrow) { + YAML::Node node = YAML::Load("scalar"); + + EXPECT_ANY_THROW(node.as()); + } + + TEST(MessageContent, decodingFromYamlListShouldThrow) { + YAML::Node node = YAML::Load("[0, 1, 2]"); + + EXPECT_ANY_THROW(node.as()); + } + } +} + +#endif diff --git a/src/tests/backend/metadata/test_message_content.h b/src/tests/backend/metadata/test_message_content.h deleted file mode 100644 index daa7251c..00000000 --- a/src/tests/backend/metadata/test_message_content.h +++ /dev/null @@ -1,112 +0,0 @@ -/* LOOT - -A load order optimisation tool for Oblivion, Skyrim, Fallout 3 and -Fallout: New Vegas. - -Copyright (C) 2014-2016 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_METADATA_MESSAGE_CONTENT -#define LOOT_TEST_BACKEND_METADATA_MESSAGE_CONTENT - -#include "backend/metadata/message_content.h" -#include "tests/fixtures.h" - -namespace loot { - namespace test { - TEST(MessageContent, ConstructorsAndDataAccess) { - MessageContent mc; - EXPECT_EQ("", mc.Str()); - EXPECT_EQ(Language::english, mc.Language()); - - mc = MessageContent("content", Language::french); - EXPECT_EQ("content", mc.Str()); - EXPECT_EQ(Language::french, mc.Language()); - } - - TEST(MessageContent, EqualityOperator) { - MessageContent mc1, mc2; - EXPECT_TRUE(mc1 == mc2); - - mc1 = MessageContent("content", Language::french); - mc2 = MessageContent("Content", Language::french); - EXPECT_TRUE(mc1 == mc2); - - mc1 = MessageContent("content1", Language::french); - mc2 = MessageContent("content2", Language::french); - EXPECT_FALSE(mc1 == mc2); - - mc1 = MessageContent("content", Language::english); - mc2 = MessageContent("Content", Language::french); - EXPECT_TRUE(mc1 == mc2); - } - - TEST(MessageContent, LessThanOperator) { - MessageContent mc1, mc2; - EXPECT_FALSE(mc1 < mc2); - EXPECT_FALSE(mc2 < mc1); - - mc1 = MessageContent("content", Language::french); - mc2 = MessageContent("Content", Language::french); - EXPECT_FALSE(mc1 < mc2); - EXPECT_FALSE(mc2 < mc1); - - mc1 = MessageContent("content", Language::english); - mc2 = MessageContent("content", Language::french); - EXPECT_FALSE(mc1 < mc2); - EXPECT_FALSE(mc2 < mc1); - - mc1 = MessageContent("content1", Language::english); - mc2 = MessageContent("content2", Language::english); - EXPECT_TRUE(mc1 < mc2); - EXPECT_FALSE(mc2 < mc1); - } - - TEST(MessageContent, YamlEmitter) { - MessageContent mc("content", Language::french); - YAML::Emitter e1; - e1 << mc; - EXPECT_STREQ("lang: fr\nstr: 'content'", e1.c_str()); - } - - TEST(MessageContent, YamlEncode) { - YAML::Node node; - - MessageContent mc("content", Language::french); - node = mc; - EXPECT_EQ("content", node["str"].as()); - EXPECT_EQ("fr", node["lang"].as()); - } - - TEST(MessageContent, YamlDecode) { - YAML::Node node = YAML::Load("{str: content, lang: de}"); - MessageContent mc = node.as(); - EXPECT_EQ("content", mc.Str()); - EXPECT_EQ(Language::german, mc.Language()); - - node = YAML::Load("scalar"); - EXPECT_ANY_THROW(node.as()); - - node = YAML::Load("[0, 1, 2]"); - EXPECT_ANY_THROW(node.as()); - } - } -} - -#endif diff --git a/src/tests/main.cpp b/src/tests/main.cpp index a3ef1ed5..390067f7 100644 --- a/src/tests/main.cpp +++ b/src/tests/main.cpp @@ -55,7 +55,7 @@ #include "backend/metadata/file_test.h" #include "backend/metadata/location_test.h" #include "backend/metadata/message_test.h" -#include "backend/metadata/test_message_content.h" +#include "backend/metadata/message_content_test.h" #include "backend/metadata/test_plugin_dirty_info.h" #include "backend/metadata/test_plugin_metadata.h" #include "backend/metadata/test_tag.h"