From b54c3e7e5e0e21befc135a533bf38ea71445f3ab Mon Sep 17 00:00:00 2001 From: Pawel Lampe Date: Tue, 21 Feb 2023 20:10:27 +0100 Subject: [PATCH] Add initial 'NavigationObstacle' and 'NavigationRegion' tests --- tests/scene/test_navigation_obstacle_2d.h | 69 +++++++++++++++++++++++ tests/scene/test_navigation_obstacle_3d.h | 69 +++++++++++++++++++++++ tests/scene/test_navigation_region_2d.h | 51 +++++++++++++++++ tests/scene/test_navigation_region_3d.h | 51 +++++++++++++++++ tests/test_main.cpp | 4 ++ 5 files changed, 244 insertions(+) create mode 100644 tests/scene/test_navigation_obstacle_2d.h create mode 100644 tests/scene/test_navigation_obstacle_3d.h create mode 100644 tests/scene/test_navigation_region_2d.h create mode 100644 tests/scene/test_navigation_region_3d.h diff --git a/tests/scene/test_navigation_obstacle_2d.h b/tests/scene/test_navigation_obstacle_2d.h new file mode 100644 index 00000000000..97d28e0a485 --- /dev/null +++ b/tests/scene/test_navigation_obstacle_2d.h @@ -0,0 +1,69 @@ +/**************************************************************************/ +/* test_navigation_obstacle_2d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef TEST_NAVIGATION_OBSTACLE_2D_H +#define TEST_NAVIGATION_OBSTACLE_2D_H + +#include "scene/2d/navigation_obstacle_2d.h" +#include "scene/main/window.h" + +#include "tests/test_macros.h" + +namespace TestNavigationObstacle2D { + +TEST_SUITE("[Navigation]") { + TEST_CASE("[SceneTree][NavigationObstacle2D] New obstacle should have valid RID") { + NavigationObstacle2D *obstacle_node = memnew(NavigationObstacle2D); + CHECK(obstacle_node->get_rid().is_valid()); + memdelete(obstacle_node); + } + + TEST_CASE("[SceneTree][NavigationObstacle2D] New obstacle should attach to default map") { + Node2D *node_2d = memnew(Node2D); + SceneTree::get_singleton()->get_root()->add_child(node_2d); + + NavigationObstacle2D *obstacle_node = memnew(NavigationObstacle2D); + // obstacle should not be attached to any map when outside of tree + CHECK_FALSE(obstacle_node->get_navigation_map().is_valid()); + + SUBCASE("Obstacle should attach to default map when it enters the tree") { + node_2d->add_child(obstacle_node); + CHECK(obstacle_node->get_navigation_map().is_valid()); + CHECK(obstacle_node->get_navigation_map() == node_2d->get_world_2d()->get_navigation_map()); + } + + memdelete(obstacle_node); + memdelete(node_2d); + } +} + +} //namespace TestNavigationObstacle2D + +#endif // TEST_NAVIGATION_OBSTACLE_2D_H diff --git a/tests/scene/test_navigation_obstacle_3d.h b/tests/scene/test_navigation_obstacle_3d.h new file mode 100644 index 00000000000..8769f4fb647 --- /dev/null +++ b/tests/scene/test_navigation_obstacle_3d.h @@ -0,0 +1,69 @@ +/**************************************************************************/ +/* test_navigation_obstacle_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef TEST_NAVIGATION_OBSTACLE_3D_H +#define TEST_NAVIGATION_OBSTACLE_3D_H + +#include "scene/3d/navigation_obstacle_3d.h" +#include "scene/main/window.h" + +#include "tests/test_macros.h" + +namespace TestNavigationObstacle3D { + +TEST_SUITE("[Navigation]") { + TEST_CASE("[SceneTree][NavigationObstacle3D] New obstacle should have valid RID") { + NavigationObstacle3D *obstacle_node = memnew(NavigationObstacle3D); + CHECK(obstacle_node->get_rid().is_valid()); + memdelete(obstacle_node); + } + + TEST_CASE("[SceneTree][NavigationObstacle3D] New obstacle should attach to default map") { + Node3D *node_3d = memnew(Node3D); + SceneTree::get_singleton()->get_root()->add_child(node_3d); + + NavigationObstacle3D *obstacle_node = memnew(NavigationObstacle3D); + // obstacle should not be attached to any map when outside of tree + CHECK_FALSE(obstacle_node->get_navigation_map().is_valid()); + + SUBCASE("Obstacle should attach to default map when it enters the tree") { + node_3d->add_child(obstacle_node); + CHECK(obstacle_node->get_navigation_map().is_valid()); + CHECK(obstacle_node->get_navigation_map() == node_3d->get_world_3d()->get_navigation_map()); + } + + memdelete(obstacle_node); + memdelete(node_3d); + } +} + +} //namespace TestNavigationObstacle3D + +#endif // TEST_NAVIGATION_OBSTACLE_3D_H diff --git a/tests/scene/test_navigation_region_2d.h b/tests/scene/test_navigation_region_2d.h new file mode 100644 index 00000000000..4574893c8d3 --- /dev/null +++ b/tests/scene/test_navigation_region_2d.h @@ -0,0 +1,51 @@ +/**************************************************************************/ +/* test_navigation_region_2d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef TEST_NAVIGATION_REGION_2D_H +#define TEST_NAVIGATION_REGION_2D_H + +#include "scene/2d/navigation_region_2d.h" +#include "scene/main/window.h" + +#include "tests/test_macros.h" + +namespace TestNavigationRegion2D { + +TEST_SUITE("[Navigation]") { + TEST_CASE("[SceneTree][NavigationRegion2D] New region should have valid RID") { + NavigationRegion2D *region_node = memnew(NavigationRegion2D); + CHECK(region_node->get_region_rid().is_valid()); + memdelete(region_node); + } +} + +} //namespace TestNavigationRegion2D + +#endif // TEST_NAVIGATION_REGION_2D_H diff --git a/tests/scene/test_navigation_region_3d.h b/tests/scene/test_navigation_region_3d.h new file mode 100644 index 00000000000..4c5ae346150 --- /dev/null +++ b/tests/scene/test_navigation_region_3d.h @@ -0,0 +1,51 @@ +/**************************************************************************/ +/* test_navigation_region_3d.h */ +/**************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/**************************************************************************/ +/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ +/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/**************************************************************************/ + +#ifndef TEST_NAVIGATION_REGION_3D_H +#define TEST_NAVIGATION_REGION_3D_H + +#include "scene/3d/navigation_region_3d.h" +#include "scene/main/window.h" + +#include "tests/test_macros.h" + +namespace TestNavigationRegion3D { + +TEST_SUITE("[Navigation]") { + TEST_CASE("[SceneTree][NavigationRegion3D] New region should have valid RID") { + NavigationRegion3D *region_node = memnew(NavigationRegion3D); + CHECK(region_node->get_region_rid().is_valid()); + memdelete(region_node); + } +} + +} //namespace TestNavigationRegion3D + +#endif // TEST_NAVIGATION_REGION_3D_H diff --git a/tests/test_main.cpp b/tests/test_main.cpp index ef071f41159..d0f124bd052 100644 --- a/tests/test_main.cpp +++ b/tests/test_main.cpp @@ -98,6 +98,10 @@ #include "tests/scene/test_gradient.h" #include "tests/scene/test_navigation_agent_2d.h" #include "tests/scene/test_navigation_agent_3d.h" +#include "tests/scene/test_navigation_obstacle_2d.h" +#include "tests/scene/test_navigation_obstacle_3d.h" +#include "tests/scene/test_navigation_region_2d.h" +#include "tests/scene/test_navigation_region_3d.h" #include "tests/scene/test_node.h" #include "tests/scene/test_path_2d.h" #include "tests/scene/test_path_3d.h"