2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2026-07-02 22:08:11 +00:00
Files
OpenAssetTools/test/ObjCommonTests/InfoString/InfoStringTests.cpp
T

64 lines
1.7 KiB
C++

#include "InfoString/InfoString.h"
#include <catch2/catch_test_macros.hpp>
#include <catch2/generators/catch_generators.hpp>
#include <sstream>
namespace
{
TEST_CASE("InfoString: Can parse from stream")
{
InfoString info;
SECTION("without prefix")
{
std::istringstream ss(R"(foo\bar\test\value)");
info.FromStream(ss);
}
SECTION("with prefix")
{
std::istringstream ss(R"(FOOFILE\foo\bar\test\value)");
info.FromStream("FOOFILE", ss);
}
SECTION("from gdt")
{
GdtEntry entry;
entry.m_properties.emplace("foo", "bar");
entry.m_properties.emplace("test", "value");
info.FromGdtProperties(entry);
}
REQUIRE(info.HasKey("foo"));
REQUIRE(info.HasKey("test"));
REQUIRE(info.GetValueForKey("foo") == "bar");
REQUIRE(info.GetValueForKey("test") == "value");
}
TEST_CASE("InfoString: Can create string")
{
InfoString info;
std::istringstream ss(R"(foo\bar\test\value)");
info.FromStream(ss);
SECTION("without prefix")
{
REQUIRE(info.ToString() == R"(foo\bar\test\value)");
}
SECTION("with prefix")
{
REQUIRE(info.ToString("FOOFILE") == R"(FOOFILE\foo\bar\test\value)");
}
}
TEST_CASE("InfoString: Is case insensitive")
{
InfoString info;
std::istringstream ss(R"(foo\bar\test\value)");
info.FromStream(ss);
REQUIRE(info.GetValueForKey("FOO") == "bar");
REQUIRE(info.GetValueForKey("TEST") == "value");
}
} // namespace