Add utility api for Tags usage

This commit is contained in:
Wojtek Figat
2022-12-20 22:39:11 +01:00
parent 0dd79fe10a
commit 2f6e793df4
4 changed files with 285 additions and 0 deletions

View File

@@ -1,7 +1,10 @@
// Copyright (c) 2012-2022 Wojciech Figat. All rights reserved.
#include "Engine/Core/Math/Vector3.h"
#include "Engine/Core/Types/String.h"
#include "Engine/Core/Types/StringView.h"
#include "Engine/Level/LargeWorlds.h"
#include "Engine/Level/Tags.h"
#include <ThirdParty/catch2/catch.hpp>
TEST_CASE("LargeWorlds")
@@ -16,3 +19,52 @@ TEST_CASE("LargeWorlds")
CHECK(origin == Vector3(0, 0, LargeWorlds::ChunkSize * 1));
}
}
TEST_CASE("Tags")
{
SECTION("Tag")
{
auto prevTags = Tags::List;
Tags::List = Array<String>({ TEXT("A"), TEXT("A.1"), TEXT("B"), TEXT("B.1"), });
auto a = Tags::Get(TEXT("A"));
auto a1 = Tags::Get(TEXT("A.1"));
auto b = Tags::Get(TEXT("B"));
auto b1 = Tags::Get(TEXT("B.1"));
auto c = Tags::Get(TEXT("C"));
CHECK(a.Index == 0);
CHECK(a1.Index == 1);
CHECK(b.Index == 2);
CHECK(b1.Index == 3);
CHECK(c.Index == 4);
Tags::List = prevTags;
}
SECTION("Tags")
{
auto prevTags = Tags::List;
Tags::List = Array<String>({ TEXT("A"), TEXT("A.1"), TEXT("B"), TEXT("B.1"), });
auto a = Tags::Get(TEXT("A"));
auto a1 = Tags::Get(TEXT("A.1"));
auto b = Tags::Get(TEXT("B"));
auto b1 = Tags::Get(TEXT("B.1"));
auto c = Tags::Get(TEXT("C"));
Array<Tag> list = { a1, b1 };
CHECK(Tags::HasTag(list, Tag()) == false);
CHECK(Tags::HasTag(list, a1) == true);
CHECK(Tags::HasTag(list, a) == true);
CHECK(Tags::HasTag(list, c) == false);
CHECK(Tags::HasTagExact(list, a1) == true);
CHECK(Tags::HasTagExact(list, a) == false);
CHECK(Tags::HasTagExact(list, c) == false);
Tags::List = prevTags;
}
}