mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-21 17:45:25 -04:00
17443587b9
* This is not finished yet: - Documentation needs to be written. - Menu item (and shortcut?) to quickly toggle between a standard event and a else event must be added so it's easy to switch from one to the other. - Design must be adapted to make it clearer that the else event is "linked" to the previous one and is not run if the previous event is run.
104 lines
3.4 KiB
C++
104 lines
3.4 KiB
C++
/*
|
|
* GDevelop Core
|
|
* Copyright 2008-2016 Florian Rival (Florian.Rival@gmail.com). All rights
|
|
* reserved. This project is released under the MIT License.
|
|
*/
|
|
/**
|
|
* @file Tests covering events of GDevelop Core.
|
|
*/
|
|
#include <memory>
|
|
#include "GDCore/CommonTools.h"
|
|
#include "GDCore/Events/Builtin/ElseEvent.h"
|
|
#include "GDCore/Events/Builtin/ForEachEvent.h"
|
|
#include "GDCore/Events/Builtin/GroupEvent.h"
|
|
#include "GDCore/Events/Builtin/StandardEvent.h"
|
|
#include "GDCore/Events/Event.h"
|
|
#include "GDCore/Events/EventsList.h"
|
|
#include "GDCore/Events/InstructionsList.h"
|
|
#include "GDCore/Project/Layout.h"
|
|
#include "GDCore/Project/Project.h"
|
|
#include "GDCore/Project/Variable.h"
|
|
#include "GDCore/Tools/VersionWrapper.h"
|
|
#include "catch.hpp"
|
|
|
|
TEST_CASE("Events", "[common][events]") {
|
|
SECTION("InstructionsList") {
|
|
gd::InstructionsList list;
|
|
gd::Instruction instr("InstructionType");
|
|
list.Insert(instr);
|
|
list.Insert(instr);
|
|
list.Insert(instr);
|
|
|
|
REQUIRE(list.size() == 3);
|
|
list[1].SetType("ChangedInstructionType");
|
|
|
|
REQUIRE(list[0].GetType() == "InstructionType");
|
|
REQUIRE(list[1].GetType() == "ChangedInstructionType");
|
|
|
|
gd::InstructionsList list2 = list;
|
|
REQUIRE(list2.size() == 3);
|
|
list2[0].SetType("YetAnotherInstructionType");
|
|
|
|
REQUIRE(list2[0].GetType() == "YetAnotherInstructionType");
|
|
REQUIRE(list2[1].GetType() == "ChangedInstructionType");
|
|
REQUIRE(list[0].GetType() == "InstructionType");
|
|
REQUIRE(list[1].GetType() == "ChangedInstructionType");
|
|
}
|
|
|
|
SECTION("StandardEvent") {
|
|
gd::Instruction instr("InstructionType");
|
|
gd::StandardEvent event;
|
|
event.GetActions().Insert(instr);
|
|
|
|
// Ensuring cloning is working
|
|
std::shared_ptr<gd::StandardEvent> cloned(event.Clone());
|
|
REQUIRE(cloned->GetActions().size() == 1);
|
|
REQUIRE(cloned->GetActions()[0].GetType() == "InstructionType");
|
|
|
|
cloned->GetActions()[0].SetType("ChangedInstructionType");
|
|
REQUIRE(cloned->GetActions()[0].GetType() == "ChangedInstructionType");
|
|
REQUIRE(event.GetActions()[0].GetType() == "InstructionType");
|
|
}
|
|
|
|
|
|
SECTION("ElseEvent") {
|
|
gd::Instruction instr("InstructionType");
|
|
gd::ElseEvent event;
|
|
event.GetActions().Insert(instr);
|
|
|
|
std::shared_ptr<gd::ElseEvent> cloned(event.Clone());
|
|
REQUIRE(cloned->GetActions().size() == 1);
|
|
REQUIRE(cloned->GetActions()[0].GetType() == "InstructionType");
|
|
|
|
cloned->GetActions()[0].SetType("ChangedInstructionType");
|
|
REQUIRE(cloned->GetActions()[0].GetType() == "ChangedInstructionType");
|
|
REQUIRE(event.GetActions()[0].GetType() == "InstructionType");
|
|
}
|
|
|
|
SECTION("ForEachEvent") {
|
|
gd::Instruction instr("InstructionType");
|
|
gd::ForEachEvent event;
|
|
event.GetActions().Insert(instr);
|
|
event.SetObjectToPick("Object");
|
|
|
|
// Ensuring cloning is working
|
|
std::shared_ptr<gd::ForEachEvent> cloned(event.Clone());
|
|
REQUIRE(cloned->GetActions().size() == 1);
|
|
REQUIRE(cloned->GetActions()[0].GetType() == "InstructionType");
|
|
REQUIRE(event.GetObjectToPick() == "Object");
|
|
}
|
|
|
|
SECTION("GroupEvent") {
|
|
gd::GroupEvent event;
|
|
event.SetName("EventName");
|
|
event.SetBackgroundColor(1, 2, 3);
|
|
|
|
// Ensuring cloning is working
|
|
std::shared_ptr<gd::GroupEvent> cloned(event.Clone());
|
|
REQUIRE(cloned->GetName() == "EventName");
|
|
REQUIRE(cloned->GetBackgroundColorR() == 1);
|
|
REQUIRE(cloned->GetBackgroundColorG() == 2);
|
|
REQUIRE(cloned->GetBackgroundColorB() == 3);
|
|
}
|
|
}
|