From 64299989813fc1aa152aa9b2da2d775819b51582 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sat, 27 Jun 2015 09:29:18 +0100 Subject: [PATCH] Added tests for MessageContent class. --- CMakeLists.txt | 1 + .../backend/metadata/test_message_content.h | 111 ++++++++++++++++++ src/tests/main.cpp | 1 + 3 files changed, 113 insertions(+) create mode 100644 src/tests/backend/metadata/test_message_content.h diff --git a/CMakeLists.txt b/CMakeLists.txt index a8d37277..adb7af14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -160,6 +160,7 @@ set (LOOT_TESTS_HEADERS "${CMAKE_SOURCE_DIR}/src/tests/fixtures.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/helpers/test_language.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_file.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_formid.h" + "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_message_content.h" "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_tag.h") source_group("Header Files" FILES ${LOOT_HEADERS} ${LOOT_GUI_HEADERS} ${LOOT_API_HEADERS} ${LOOT_TESTS_HEADERS}) diff --git a/src/tests/backend/metadata/test_message_content.h b/src/tests/backend/metadata/test_message_content.h new file mode 100644 index 00000000..a88e775c --- /dev/null +++ b/src/tests/backend/metadata/test_message_content.h @@ -0,0 +1,111 @@ +/* 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_METADATA_MESSAGE_CONTENT +#define LOOT_TEST_BACKEND_METADATA_MESSAGE_CONTENT + +#include "backend/metadata/message_content.h" +#include "tests/fixtures.h" + +using loot::Language; +using loot::MessageContent; + +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_FALSE(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 6f02526b..ecff5b9d 100644 --- a/src/tests/main.cpp +++ b/src/tests/main.cpp @@ -25,6 +25,7 @@ #include "api/test_api.h" #include "backend/metadata/test_file.h" #include "backend/metadata/test_formid.h" +#include "backend/metadata/test_message_content.h" #include "backend/metadata/test_tag.h" #include "backend/helpers/test_language.h"