diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2020-08-29 22:03:22 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-02-04 13:03:29 +0100 |
| commit | 2aaebc193c231878133b70e466bd564645db5e4e (patch) | |
| tree | 989052254d5698d4d545f7979fff69363b5b403e /tests/common/test-EventMap.cpp | |
| parent | 24d12b93e5cab844209c5a6709ebd4f27f8263cc (diff) | |
UnitTests: Cleanup + StringConvert/ChatCommand tests (PR #25353)
(cherry picked from commit 8ce3635d39dbdd101ddf180a66c483162df99c04)
Diffstat (limited to 'tests/common/test-EventMap.cpp')
| -rw-r--r-- | tests/common/test-EventMap.cpp | 386 |
1 files changed, 0 insertions, 386 deletions
diff --git a/tests/common/test-EventMap.cpp b/tests/common/test-EventMap.cpp deleted file mode 100644 index 31b27af5daa..00000000000 --- a/tests/common/test-EventMap.cpp +++ /dev/null @@ -1,386 +0,0 @@ -/* - * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information - * - * This program 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 2 of the License, or (at your - * option) any later version. - * - * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER -#include "catch2/catch.hpp" - -#include "EventMap.h" - -enum EVENTS -{ - EVENT_1 = 1, - EVENT_2 = 2, - EVENT_3 = 3 -}; - -enum PHASES -{ - PHASE_1 = 1, - PHASE_2 = 2 -}; - -enum GROUPS -{ - GROUP_1 = 1, - GROUP_2 = 2 -}; - -TEST_CASE("Schedule an event", "[EventMap]") -{ - EventMap eventMap; - - REQUIRE(eventMap.Empty()); - - eventMap.ScheduleEvent(EVENT_1, 1s); - - REQUIRE_FALSE(eventMap.Empty()); - - SECTION("Event has not yet reached its delay") - { - eventMap.Update(100); - uint32 id = eventMap.ExecuteEvent(); - - REQUIRE(id == 0); - REQUIRE_FALSE(eventMap.Empty()); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 900ms); - } - - SECTION("Event has reached its delay") - { - eventMap.Update(1000); - uint32 id = eventMap.ExecuteEvent(); - - REQUIRE(id == EVENT_1); - REQUIRE(eventMap.Empty()); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == Milliseconds::max()); - } - - SECTION("Event is past it's execution time") - { - eventMap.Update(2000); - - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == -1s); - } -} - -TEST_CASE("Schedule existing event", "[EventMap]") -{ - EventMap eventMap; - - SECTION("Same time") - { - eventMap.ScheduleEvent(EVENT_1, 1s); - eventMap.ScheduleEvent(EVENT_1, 1s); - - eventMap.Update(1000); - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - - id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - - REQUIRE(eventMap.Empty()); - } - - SECTION("Different time") - { - eventMap.ScheduleEvent(EVENT_1, 1s); - eventMap.ScheduleEvent(EVENT_1, 2s); - - eventMap.Update(1000); - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - - eventMap.Update(1000); - id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - - REQUIRE(eventMap.Empty()); - } -} - -TEST_CASE("Cancel a scheduled event", "[EventMap]") -{ - EventMap eventMap; - - eventMap.ScheduleEvent(EVENT_1, 1s); - eventMap.ScheduleEvent(EVENT_2, 1s); - - eventMap.CancelEvent(EVENT_1); - REQUIRE_FALSE(eventMap.Empty()); - - eventMap.Update(1000); - uint32 id = eventMap.ExecuteEvent(); - - REQUIRE(id == EVENT_2); - REQUIRE(eventMap.Empty()); -} - -TEST_CASE("Cancel non-existing event", "[EventMap]") -{ - EventMap eventMap; - REQUIRE(eventMap.Empty()); - - eventMap.CancelEvent(EVENT_1); - REQUIRE(eventMap.Empty()); -} - -TEST_CASE("Reschedule an event", "[EventMap]") -{ - EventMap eventMap; - - eventMap.ScheduleEvent(EVENT_1, 1s); - eventMap.RescheduleEvent(EVENT_1, 2s); - - eventMap.Update(1000); - uint32 id = eventMap.ExecuteEvent(); - - REQUIRE(id == 0); - - eventMap.Update(1000); - id = eventMap.ExecuteEvent(); - - REQUIRE(id == EVENT_1); -} - -TEST_CASE("Reschedule a non-scheduled event", "[EventMap]") -{ - EventMap eventMap; - - eventMap.RescheduleEvent(EVENT_1, 2s); - - eventMap.Update(1000); - uint32 id = eventMap.ExecuteEvent(); - - REQUIRE(id == 0); - - eventMap.Update(1000); - id = eventMap.ExecuteEvent(); - - REQUIRE(id == EVENT_1); -} - -TEST_CASE("Repeat an event (empty map)", "[EventMap]") -{ - EventMap eventMap; - - eventMap.Repeat(1s); - eventMap.Update(1s); - - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == 0); -} - -TEST_CASE("Repeat an event (populated map)", "[EventMap]") -{ - EventMap eventMap; - eventMap.ScheduleEvent(EVENT_1, 1s); - - SECTION("Scheduled event with delay not reached") - { - eventMap.Update(500ms); - eventMap.Repeat(1s); - - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == 0); - } - - SECTION("Scheduled event with delay not reached") - { - eventMap.Update(1s); - eventMap.Repeat(1s); - - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - } -} - -TEST_CASE("Schedule event with phase", "[EventMap]") -{ - EventMap eventMap; - REQUIRE(eventMap.Empty()); - - eventMap.ScheduleEvent(EVENT_1, 1s, 0, PHASE_1); - eventMap.ScheduleEvent(EVENT_2, 1s, 0, PHASE_2); - - SECTION("In default phase. Execute all events.") - { - eventMap.Update(1000); - - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - REQUIRE_FALSE(eventMap.Empty()); - - id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_2); - REQUIRE(eventMap.Empty()); - } - - SECTION("Execute only events of specified phase") - { - eventMap.SetPhase(PHASE_1); - eventMap.Update(1000); - - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - REQUIRE_FALSE(eventMap.Empty()); - - id = eventMap.ExecuteEvent(); - REQUIRE(id == 0); - REQUIRE(eventMap.Empty()); - } - - SECTION("Execute events from multiple phases (1)") - { - eventMap.AddPhase(PHASE_1); - eventMap.AddPhase(PHASE_2); - eventMap.Update(1000); - - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - REQUIRE_FALSE(eventMap.Empty()); - - id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_2); - REQUIRE(eventMap.Empty()); - } - - SECTION("Execute events from multiple phases (2)") - { - eventMap.AddPhase(PHASE_1); - eventMap.Update(1000); - - uint32 id = eventMap.ExecuteEvent(); - REQUIRE(id == EVENT_1); - REQUIRE_FALSE(eventMap.Empty()); - - eventMap.RemovePhase(PHASE_2); - id = eventMap.ExecuteEvent(); - REQUIRE(id == 0); - REQUIRE(eventMap.Empty()); - } -} - -TEST_CASE("Phase helper methods", "[EventMap]") -{ - EventMap eventMap; - - eventMap.SetPhase(PHASE_1); - REQUIRE(eventMap.GetPhaseMask() == 0x1); - REQUIRE(eventMap.IsInPhase(PHASE_1)); - REQUIRE_FALSE(eventMap.IsInPhase(PHASE_2)); - - eventMap.AddPhase(PHASE_2); - REQUIRE(eventMap.GetPhaseMask() == 0x3); - REQUIRE(eventMap.IsInPhase(PHASE_1)); - REQUIRE(eventMap.IsInPhase(PHASE_2)); - - eventMap.RemovePhase(PHASE_1); - REQUIRE(eventMap.GetPhaseMask() == 0x2); - REQUIRE_FALSE(eventMap.IsInPhase(PHASE_1)); - REQUIRE(eventMap.IsInPhase(PHASE_2)); -} - -TEST_CASE("Cancel event group", "[EventMap]") -{ - EventMap eventMap; - eventMap.ScheduleEvent(EVENT_2, 1s, GROUP_1); - - SECTION("Only event in group") - { - eventMap.CancelEventGroup(GROUP_1); - REQUIRE(eventMap.Empty()); - } - - SECTION("Group with groupless event") - { - eventMap.ScheduleEvent(EVENT_1, 1s); - - eventMap.CancelEventGroup(GROUP_1); - REQUIRE_FALSE(eventMap.Empty()); - } - - SECTION("Two groups") - { - eventMap.ScheduleEvent(EVENT_1, 1s); - eventMap.ScheduleEvent(EVENT_3, 1s, GROUP_2); - - eventMap.CancelEventGroup(GROUP_1); - REQUIRE_FALSE(eventMap.Empty()); - - eventMap.CancelEventGroup(GROUP_2); - REQUIRE_FALSE(eventMap.Empty()); - } -} - -TEST_CASE("Delay all events", "[EventMap]") -{ - EventMap eventMap; - eventMap.ScheduleEvent(EVENT_1, 1s); - - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1s); - - SECTION("Without timer update") - { - eventMap.DelayEvents(1s); - - // 1s (init) + 1s (delay) = 2s - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 2s); - } - - SECTION("With timer update smaller than delay") - { - eventMap.Update(500); - eventMap.DelayEvents(1s); - - // 1s (init) + 1s (delay) - 500ms (tick) = 1500ms - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1500ms); - } - - SECTION("With timer update larger than delay") - { - eventMap.Update(2000); - eventMap.DelayEvents(1s); - - // 1s (init) + 1s (delay) - 2s (tick) = 0s - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 0s); - } -} - -TEST_CASE("Delay grouped events", "[EventMap]") -{ - EventMap eventMap; - eventMap.ScheduleEvent(EVENT_1, 1s, GROUP_1); - eventMap.ScheduleEvent(EVENT_2, 2s, GROUP_2); - eventMap.ScheduleEvent(EVENT_3, 6s); - - eventMap.Update(2000); - eventMap.DelayEvents(3s, GROUP_1); - - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 2s); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_2) == 0s); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_3) == 4s); -} - -TEST_CASE("Reset map", "[EventMap]") -{ - EventMap eventMap; - eventMap.ScheduleEvent(EVENT_1, 1s); - eventMap.Reset(); - - REQUIRE(eventMap.Empty()); -} |
