Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 74876a9a5d |
@@ -7,7 +7,7 @@
|
|||||||
<TestSessionTimeout>180000</TestSessionTimeout>
|
<TestSessionTimeout>180000</TestSessionTimeout>
|
||||||
<TreatNoTestsAsError>true</TreatNoTestsAsError>
|
<TreatNoTestsAsError>true</TreatNoTestsAsError>
|
||||||
<EnvironmentVariables>
|
<EnvironmentVariables>
|
||||||
<GODOT_BIN>d:\development\Godot_v4.5-stable_mono_win64\Godot_v4.5-stable_mono_win64.exe</GODOT_BIN>
|
<GODOT_BIN>D:\Godot\Godot_v4.6-stable_mono_win64\Godot_v4.6-stable_mono_win64\Godot_v4.6-stable_mono_win64.exe</GODOT_BIN>
|
||||||
</EnvironmentVariables>
|
</EnvironmentVariables>
|
||||||
</RunConfiguration>
|
</RunConfiguration>
|
||||||
|
|
||||||
|
|||||||
14
gdunit4_testadapter_v5/GdUnit4TestRunnerScene.cs
Normal file
14
gdunit4_testadapter_v5/GdUnit4TestRunnerScene.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2025 Mike Schulze
|
||||||
|
// MIT License - See LICENSE file in the repository root for full license text
|
||||||
|
|
||||||
|
// ReSharper disable once CheckNamespace
|
||||||
|
namespace GdUnit4.TestRunner;
|
||||||
|
|
||||||
|
using Core.Runners;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The GdUnit4Net test runner scene.
|
||||||
|
/// </summary>
|
||||||
|
public partial class GdUnit4TestRunnerScene : GdUnit4TestRunnerSceneCore
|
||||||
|
{
|
||||||
|
}
|
||||||
1
gdunit4_testadapter_v5/GdUnit4TestRunnerScene.cs.uid
Normal file
1
gdunit4_testadapter_v5/GdUnit4TestRunnerScene.cs.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://40hk5xnli78u
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
namespace Movementtests.tests;
|
|
||||||
|
|
||||||
using GdUnit4;
|
|
||||||
using static GdUnit4.Assertions;
|
|
||||||
|
|
||||||
[TestSuite]
|
|
||||||
public class ExampleTest
|
|
||||||
{
|
|
||||||
[Before]
|
|
||||||
public void Setup() {
|
|
||||||
// Setup suite-level shared resources, expensive setup
|
|
||||||
}
|
|
||||||
|
|
||||||
[After]
|
|
||||||
public void Cleanup() {
|
|
||||||
// Cleanup suite-level shared resources, expensive setup
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase]
|
|
||||||
public void StringToLower() {
|
|
||||||
AssertString("AbcD".ToLower()).IsEqual("abcd");
|
|
||||||
}
|
|
||||||
|
|
||||||
[TestCase]
|
|
||||||
public void StringToUpper() {
|
|
||||||
AssertString("AbcD".ToUpper()).IsEqual("ABCD");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://cs8i2bp4wr00u
|
|
||||||
98
tests/player_movement/PlayerMovementTest.cs
Normal file
98
tests/player_movement/PlayerMovementTest.cs
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace Movementtests.tests;
|
||||||
|
|
||||||
|
using GdUnit4;
|
||||||
|
using static GdUnit4.Assertions;
|
||||||
|
|
||||||
|
[TestSuite, RequireGodotRuntime]
|
||||||
|
public class PlayerMovementTest
|
||||||
|
{
|
||||||
|
private ISceneRunner _runner;
|
||||||
|
private Node _scene;
|
||||||
|
private PlayerController _player;
|
||||||
|
|
||||||
|
private readonly float _tolerance = 0.01f;
|
||||||
|
private readonly Vector3 _vectorTolerance = new Vector3(0.01f, 0.01f, 0.01f);
|
||||||
|
|
||||||
|
[Before]
|
||||||
|
public void Setup() {}
|
||||||
|
[After]
|
||||||
|
public void Cleanup() {}
|
||||||
|
|
||||||
|
[BeforeTest]
|
||||||
|
public void SetupTest()
|
||||||
|
{
|
||||||
|
_runner = ISceneRunner.Load("res://tests/player_movement/player_movement_scene.tscn");
|
||||||
|
|
||||||
|
_scene = _runner.Scene()!;
|
||||||
|
var player = _scene.FindChild("Player") as PlayerController;
|
||||||
|
_player = player!;
|
||||||
|
}
|
||||||
|
[AfterTest]
|
||||||
|
public void CleanupTest() {}
|
||||||
|
|
||||||
|
[TestCase("BaseLocation")]
|
||||||
|
public async Task PlayerMoveForward(string markerName)
|
||||||
|
{
|
||||||
|
var marker = _scene.FindChild(markerName) as Marker3D;
|
||||||
|
AssertObject(marker).IsNotNull();
|
||||||
|
_player.GlobalPosition = marker!.GlobalPosition;
|
||||||
|
await _runner.AwaitIdleFrame();
|
||||||
|
|
||||||
|
var startPos = _player.GlobalPosition;
|
||||||
|
|
||||||
|
_runner.SimulateKeyPress(Key.W);
|
||||||
|
await _runner.AwaitMillis(300);
|
||||||
|
_runner.SimulateKeyRelease(Key.W);
|
||||||
|
|
||||||
|
var endPos = _player.GlobalPosition;
|
||||||
|
var direction = startPos.DirectionTo(endPos);
|
||||||
|
AssertVector(direction).IsEqualApprox(Vector3.Forward, _vectorTolerance);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase("BaseLocation")]
|
||||||
|
public async Task PlayerJump(string markerName)
|
||||||
|
{
|
||||||
|
var marker = _scene.FindChild(markerName) as Marker3D;
|
||||||
|
AssertObject(marker).IsNotNull();
|
||||||
|
_player.GlobalPosition = marker!.GlobalPosition;
|
||||||
|
await _runner.AwaitIdleFrame();
|
||||||
|
|
||||||
|
var startPos = _player.GlobalPosition;
|
||||||
|
|
||||||
|
_runner.SimulateKeyPress(Key.Space);
|
||||||
|
await _runner.AwaitMillis(100);
|
||||||
|
_runner.SimulateKeyRelease(Key.Space);
|
||||||
|
|
||||||
|
var endPos = _player.GlobalPosition;
|
||||||
|
var direction = startPos.DirectionTo(endPos);
|
||||||
|
AssertVector(direction).IsEqualApprox(Vector3.Up, _vectorTolerance);
|
||||||
|
AssertVector(_player.Velocity.Normalized()).IsEqualApprox(Vector3.Up, _vectorTolerance);
|
||||||
|
|
||||||
|
await _runner.AwaitMillis(500);
|
||||||
|
endPos = _player.GlobalPosition;
|
||||||
|
AssertVector(endPos - startPos).IsEqualApprox(Vector3.Zero, _vectorTolerance);
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase("MantleLocation1")]
|
||||||
|
public async Task PlayerMantle(string markerName)
|
||||||
|
{
|
||||||
|
var marker = _scene.FindChild(markerName) as Marker3D;
|
||||||
|
AssertObject(marker).IsNotNull();
|
||||||
|
_player.GlobalPosition = marker!.GlobalPosition;
|
||||||
|
await _runner.AwaitIdleFrame();
|
||||||
|
|
||||||
|
var startPos = _player.GlobalPosition;
|
||||||
|
|
||||||
|
_runner.SimulateKeyPress(Key.Space);
|
||||||
|
await _runner.AwaitMillis(100);
|
||||||
|
_runner.SimulateKeyRelease(Key.Space);
|
||||||
|
await _runner.AwaitMillis(300);
|
||||||
|
|
||||||
|
var endPos = _player.GlobalPosition;
|
||||||
|
AssertFloat((endPos - startPos).Length()).IsGreater(0.0f);
|
||||||
|
AssertFloat(endPos.Y).IsEqualApprox(1.0f, _tolerance);
|
||||||
|
}
|
||||||
|
}
|
||||||
1
tests/player_movement/PlayerMovementTest.cs.uid
Normal file
1
tests/player_movement/PlayerMovementTest.cs.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://x5pj2ymam2gg
|
||||||
35
tests/player_movement/player_movement_scene.tscn
Normal file
35
tests/player_movement/player_movement_scene.tscn
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
[gd_scene format=3 uid="uid://i8kb38q7bdfk"]
|
||||||
|
|
||||||
|
[ext_resource type="Material" uid="uid://31aulub2nqov" path="res://assets/materials/greybox/m_greybox.tres" id="1_bdfhg"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bei4nhkf8lwdo" path="res://scenes/player_controller/PlayerController.tscn" id="1_hg1sy"]
|
||||||
|
|
||||||
|
[node name="PlayerMovementScene" type="Node3D" unique_id=231040688]
|
||||||
|
|
||||||
|
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="." unique_id=241909240]
|
||||||
|
use_collision = true
|
||||||
|
collision_layer = 256
|
||||||
|
collision_mask = 65553
|
||||||
|
|
||||||
|
[node name="Ground" type="CSGBox3D" parent="CSGCombiner3D" unique_id=432200143]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, -0.5, -3.25)
|
||||||
|
use_collision = true
|
||||||
|
collision_layer = 256
|
||||||
|
collision_mask = 65553
|
||||||
|
size = Vector3(1000, 1, 1000)
|
||||||
|
material = ExtResource("1_bdfhg")
|
||||||
|
|
||||||
|
[node name="Ground2" type="CSGBox3D" parent="CSGCombiner3D" unique_id=854660236]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.75, 0.5, -1.75)
|
||||||
|
use_collision = true
|
||||||
|
collision_layer = 256
|
||||||
|
collision_mask = 65553
|
||||||
|
size = Vector3(1.5, 1, 1.5)
|
||||||
|
material = ExtResource("1_bdfhg")
|
||||||
|
|
||||||
|
[node name="Player" parent="." unique_id=709076448 instance=ExtResource("1_hg1sy")]
|
||||||
|
TutorialDone = true
|
||||||
|
|
||||||
|
[node name="BaseLocation" type="Marker3D" parent="." unique_id=1793710692]
|
||||||
|
|
||||||
|
[node name="MantleLocation1" type="Marker3D" parent="." unique_id=550080845]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.75, 0, 0)
|
||||||
Reference in New Issue
Block a user