CreatureLib/tests/BattleTests/ScriptTests/ScriptSetTests.cpp

101 lines
2.7 KiB
C++
Raw Normal View History

2019-11-17 09:27:18 +00:00
#ifdef TESTS_BUILD
2022-02-05 12:59:15 +00:00
#include <doctest.h>
2019-11-17 09:27:18 +00:00
#include "../../../src/Battling/ScriptHandling/ScriptSet.hpp"
using namespace CreatureLib;
using namespace CreatureLib::Battling;
class TestScript : public BattleScript {
private:
2020-06-26 15:08:23 +00:00
ArbUt::StringView _name;
public:
explicit TestScript(const ArbUt::StringView& name) : BattleScript(nullptr), _name(name){};
2020-06-26 15:08:23 +00:00
const ArbUt::StringView& GetName() const noexcept override { return _name; }
BattleScript* Clone(const ArbUt::OptionalBorrowedPtr<void>&) override { return new TestScript(_name); }
};
TEST_CASE("Empty script set count == 0") {
2019-11-17 09:27:18 +00:00
auto set = ScriptSet();
REQUIRE(set.Count() == 0);
}
TEST_CASE("Add script to script set") {
2019-11-17 09:27:18 +00:00
auto set = ScriptSet();
auto s = new TestScript("foobar");
2019-11-17 09:27:18 +00:00
set.Add(s);
REQUIRE(set.Count() == 1);
}
TEST_CASE("Add script to script set, then retrieve it") {
2019-11-17 09:27:18 +00:00
auto set = ScriptSet();
auto s = new TestScript("foobar");
2019-11-17 09:27:18 +00:00
set.Add(s);
REQUIRE(set.Count() == 1);
2020-06-02 13:03:31 +00:00
auto get = set.GetIterator().At(0);
2019-11-17 09:27:18 +00:00
REQUIRE(get->GetName() == "foobar");
}
TEST_CASE("Add two scripts to script set") {
2019-11-17 09:27:18 +00:00
auto set = ScriptSet();
auto s = new TestScript("foobar");
auto s2 = new TestScript("foobar2");
2019-11-17 09:27:18 +00:00
set.Add(s);
set.Add(s2);
REQUIRE(set.Count() == 2);
}
TEST_CASE("Add two scripts to script set, then retrieve them") {
2019-11-17 09:27:18 +00:00
auto set = ScriptSet();
auto s = new TestScript("foobar");
auto s2 = new TestScript("foobar2");
2019-11-17 09:27:18 +00:00
set.Add(s);
set.Add(s2);
REQUIRE(set.Count() == 2);
2020-06-02 13:03:31 +00:00
auto get1 = set.GetIterator().At(0);
auto get2 = set.GetIterator().At(1);
2019-11-17 09:27:18 +00:00
REQUIRE(get1->GetName() == "foobar");
REQUIRE(get2->GetName() == "foobar2");
}
TEST_CASE("Add script to script set, then remove it") {
2019-11-17 09:27:18 +00:00
auto set = ScriptSet();
auto s = new TestScript("foobar");
2019-11-17 09:27:18 +00:00
set.Add(s);
REQUIRE(set.Count() == 1);
2020-04-09 16:19:21 +00:00
set.Remove("foobar"_cnc.GetHash());
2019-11-17 09:27:18 +00:00
REQUIRE(set.Count() == 0);
2020-06-02 13:03:31 +00:00
auto& it = set.GetIterator();
REQUIRE(it.Count() == 0);
2019-11-17 09:27:18 +00:00
}
TEST_CASE("Add two scripts to script set, then remove them") {
2019-11-17 09:27:18 +00:00
auto set = ScriptSet();
auto s = new TestScript("foobar");
auto s2 = new TestScript("foobar2");
2019-11-17 09:27:18 +00:00
set.Add(s);
set.Add(s2);
REQUIRE(set.Count() == 2);
2020-04-09 16:19:21 +00:00
set.Remove("foobar"_cnc.GetHash());
2019-11-17 09:27:18 +00:00
REQUIRE(set.Count() == 1);
2020-06-02 13:03:31 +00:00
auto& it = set.GetIterator();
REQUIRE(it.At(0)->GetName() == "foobar2");
2019-11-17 09:27:18 +00:00
}
TEST_CASE("Add two scripts to script set, remove the first, get second by name") {
auto set = ScriptSet();
auto s = new TestScript("foobar");
auto s2 = new TestScript("foobar2");
set.Add(s);
set.Add(s2);
REQUIRE(set.Count() == 2);
set.Remove("foobar"_cnc.GetHash());
REQUIRE(set.Count() == 1);
auto retrieved = set.Get("foobar2"_cnc);
REQUIRE(retrieved == s2);
}
2019-11-17 09:27:18 +00:00
#endif