diff --git a/.gitignore b/.gitignore
index e6bef490..1de7caf2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,4 +13,6 @@
/communication
# Imported translations (automatically generated from CSV files)
-*.translation
\ No newline at end of file
+*.translation
+
+.output.txt
\ No newline at end of file
diff --git a/Movement tests.csproj b/Movement tests.csproj
index 7ade55c3..b0cf964c 100644
--- a/Movement tests.csproj
+++ b/Movement tests.csproj
@@ -5,140 +5,153 @@
Movementtests
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
none
runtime; build; native; contentfiles; analyzers; buildtransitive
-
\ No newline at end of file
diff --git a/Movement tests.sln.DotSettings.user b/Movement tests.sln.DotSettings.user
index ec0e0613..8a1bb742 100644
--- a/Movement tests.sln.DotSettings.user
+++ b/Movement tests.sln.DotSettings.user
@@ -5,7 +5,12 @@
ForceIncluded
ForceIncluded
ForceIncluded
- <SessionState ContinuousTestingMode="0" IsActive="True" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
+ <SessionState ContinuousTestingMode="0" IsActive="True" Name="Junie Session" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
+ <TestAncestor>
+ <TestId>VsTest::22FEBE6E-769C-4716-A687-A0AC8F3EF84A::net9.0::executor://gdunit4.testadapter/#Movementtests.tests.PlayerControllerUnitTest</TestId>
+ </TestAncestor>
+</SessionState>
+ <SessionState ContinuousTestingMode="0" Name="All tests from Solution" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
<Solution />
</SessionState>
D:\Godot\Projects\movement-tests\.runsettings
diff --git a/agents.md b/agents.md
new file mode 100644
index 00000000..c1b1cea7
--- /dev/null
+++ b/agents.md
@@ -0,0 +1,28 @@
+### Project Overview: Godot C# Movement Tests
+This project is a high-performance 3D character controller for Godot 4.x using C# 13 and .NET 9. It focuses on modular movement systems (Dash, Mantle, Stairs) and robust combat mechanics (Damage, Health, Knockback) decoupled through interfaces.
+
+### Core Architecture
+- **Modular Systems**: The `PlayerController.cs` acts as a central hub for multiple specialized "Systems" (e.g., `DashSystem`, `MantleSystem`, `HeadSystem`, `StairsSystem`).
+- **State Management**: Uses `GodotStateCharts` for complex movement and action states. Look for state transitions and triggers within the system scripts.
+- **Interface-Driven Design**: Located in `/interfaces/`, these define how objects interact (e.g., `IDamageable`, `IHealthable`, `IKnockbackable`). Always implement these interfaces for new interactable entities.
+- **Node Composition**: Most systems are attached to the `PlayerController` scene as child nodes and initialized via their respective `Init()` methods or exported fields.
+
+### Key Directories
+- `/scenes/player_controller/`: Contains the main player scene, the central `PlayerController.cs`, and its sub-systems.
+- `/scenes/player_controller/components/`: Modular logic for specific features like Dash, Mantle, and Weapons.
+- `/interfaces/`: Core C# interfaces and shared records (e.g., `DamageRecord`, `HealthChangedRecord`).
+- `/tests/`: Automated unit and integration tests using `GdUnit4` and `xUnit`.
+
+### Coding Standards & Idioms
+- **C# 13 & .NET 9**: Use modern C# features (records, primary constructors, collection expressions).
+- **Godot Partial Classes**: All Godot scripts must be `partial` and use `[GlobalClass]` where appropriate for editor visibility.
+- **RustyOptions**: The project uses `RustyOptions` for safer null handling and result types (`Option`, `Result`).
+- **Signals**: Use `[Signal]` and the `EventHandler` pattern for Godot signals.
+- **Dependency Injection**: Systems are typically assigned to fields in `PlayerController` via the editor or `GetNode()` in `_Ready()`.
+
+### LLM Interaction Tips
+1. **Partial Classes**: When suggesting changes to `PlayerController.cs` or systems, remember they are `partial`. Large files like `PlayerController.cs` (2500+ lines) are often split or contain many regions.
+2. **Node Hierarchy**: Always check `PlayerController.tscn` or system scenes (`head_system.tscn`) when dealing with node references (`GetNode`).
+3. **GdUnit4**: For testing, follow the pattern in `tests/PlayerMovementTest.cs`. Use `ISceneRunner` to simulate inputs and await frames/milliseconds.
+4. **Vector Operations**: Use Godot's built-in `Vector3` methods for movement logic. The project often uses `GlobalPosition` and `DirectionTo`.
+5. **Boilerplate**: When creating new systems, mirror the `Init()` and `_PhysicsProcess` patterns found in existing systems like `DashSystem.cs` or `MantleSystem.cs`.
diff --git a/global.json b/global.json
new file mode 100644
index 00000000..802ab217
--- /dev/null
+++ b/global.json
@@ -0,0 +1,5 @@
+{
+ "test": {
+ "runner": "Microsoft.Testing.Platform"
+ }
+}
\ No newline at end of file
diff --git a/obj/movement-tests.csproj.nuget.dgspec.json b/obj/movement-tests.csproj.nuget.dgspec.json
new file mode 100644
index 00000000..93dfe1db
--- /dev/null
+++ b/obj/movement-tests.csproj.nuget.dgspec.json
@@ -0,0 +1,79 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\Godot\\Projects\\movement-tests\\movement-tests.csproj": {}
+ },
+ "projects": {
+ "D:\\Godot\\Projects\\movement-tests\\movement-tests.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\Godot\\Projects\\movement-tests\\movement-tests.csproj",
+ "projectName": "movement-tests",
+ "projectPath": "D:\\Godot\\Projects\\movement-tests\\movement-tests.csproj",
+ "packagesPath": "C:\\Users\\Minimata\\.nuget\\packages\\",
+ "outputPath": "D:\\Godot\\Projects\\movement-tests\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\Minimata\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.300"
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "dependencies": {
+ "xunit.v3.mtp-v2": {
+ "target": "Package",
+ "version": "[3.2.2, )"
+ }
+ },
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.301/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/obj/movement-tests.csproj.nuget.g.props b/obj/movement-tests.csproj.nuget.g.props
new file mode 100644
index 00000000..54458485
--- /dev/null
+++ b/obj/movement-tests.csproj.nuget.g.props
@@ -0,0 +1,25 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ $(UserProfile)\.nuget\packages\
+ C:\Users\Minimata\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages
+ PackageReference
+ 6.14.0
+
+
+
+
+
+
+
+
+
+
+
+
+ C:\Users\Minimata\.nuget\packages\xunit.analyzers\1.27.0
+
+
\ No newline at end of file
diff --git a/obj/movement-tests.csproj.nuget.g.targets b/obj/movement-tests.csproj.nuget.g.targets
new file mode 100644
index 00000000..821ce7c2
--- /dev/null
+++ b/obj/movement-tests.csproj.nuget.g.targets
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/obj/project.assets.json b/obj/project.assets.json
new file mode 100644
index 00000000..23a25f01
--- /dev/null
+++ b/obj/project.assets.json
@@ -0,0 +1,1160 @@
+{
+ "version": 3,
+ "targets": {
+ "net8.0": {
+ "Microsoft.ApplicationInsights/2.23.0": {
+ "type": "package",
+ "dependencies": {
+ "System.Diagnostics.DiagnosticSource": "5.0.0"
+ },
+ "compile": {
+ "lib/netstandard2.0/Microsoft.ApplicationInsights.dll": {
+ "related": ".pdb;.xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/Microsoft.ApplicationInsights.dll": {
+ "related": ".pdb;.xml"
+ }
+ }
+ },
+ "Microsoft.Bcl.AsyncInterfaces/6.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard1.0/_._": {}
+ },
+ "runtime": {
+ "lib/netstandard1.0/_._": {}
+ }
+ },
+ "Microsoft.Testing.Extensions.Telemetry/2.0.2": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.ApplicationInsights": "2.23.0",
+ "Microsoft.Testing.Platform": "2.0.2"
+ },
+ "compile": {
+ "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.dll": {
+ "related": ".xml"
+ }
+ },
+ "resource": {
+ "lib/net8.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "cs"
+ },
+ "lib/net8.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "de"
+ },
+ "lib/net8.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "es"
+ },
+ "lib/net8.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "fr"
+ },
+ "lib/net8.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "it"
+ },
+ "lib/net8.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "ja"
+ },
+ "lib/net8.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "ko"
+ },
+ "lib/net8.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "pl"
+ },
+ "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "pt-BR"
+ },
+ "lib/net8.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "ru"
+ },
+ "lib/net8.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "tr"
+ },
+ "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "zh-Hans"
+ },
+ "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll": {
+ "locale": "zh-Hant"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/Microsoft.Testing.Extensions.Telemetry.props": {}
+ },
+ "buildMultiTargeting": {
+ "buildMultiTargeting/Microsoft.Testing.Extensions.Telemetry.props": {}
+ }
+ },
+ "Microsoft.Testing.Extensions.TrxReport.Abstractions/2.0.2": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Testing.Platform": "2.0.2"
+ },
+ "compile": {
+ "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.Testing.Platform/2.0.2": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/Microsoft.Testing.Platform.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Testing.Platform.dll": {
+ "related": ".xml"
+ }
+ },
+ "resource": {
+ "lib/net8.0/cs/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "cs"
+ },
+ "lib/net8.0/de/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "de"
+ },
+ "lib/net8.0/es/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "es"
+ },
+ "lib/net8.0/fr/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "fr"
+ },
+ "lib/net8.0/it/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "it"
+ },
+ "lib/net8.0/ja/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "ja"
+ },
+ "lib/net8.0/ko/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "ko"
+ },
+ "lib/net8.0/pl/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "pl"
+ },
+ "lib/net8.0/pt-BR/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "pt-BR"
+ },
+ "lib/net8.0/ru/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "ru"
+ },
+ "lib/net8.0/tr/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "tr"
+ },
+ "lib/net8.0/zh-Hans/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "zh-Hans"
+ },
+ "lib/net8.0/zh-Hant/Microsoft.Testing.Platform.resources.dll": {
+ "locale": "zh-Hant"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/Microsoft.Testing.Platform.props": {},
+ "buildTransitive/net8.0/Microsoft.Testing.Platform.targets": {}
+ },
+ "buildMultiTargeting": {
+ "buildMultiTargeting/Microsoft.Testing.Platform.props": {},
+ "buildMultiTargeting/Microsoft.Testing.Platform.targets": {}
+ }
+ },
+ "Microsoft.Testing.Platform.MSBuild/2.0.2": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Testing.Platform": "2.0.2"
+ },
+ "compile": {
+ "lib/net8.0/Microsoft.Testing.Extensions.MSBuild.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Microsoft.Testing.Extensions.MSBuild.dll": {
+ "related": ".xml"
+ }
+ },
+ "resource": {
+ "lib/net8.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "cs"
+ },
+ "lib/net8.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "de"
+ },
+ "lib/net8.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "es"
+ },
+ "lib/net8.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "fr"
+ },
+ "lib/net8.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "it"
+ },
+ "lib/net8.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "ja"
+ },
+ "lib/net8.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "ko"
+ },
+ "lib/net8.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "pl"
+ },
+ "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "pt-BR"
+ },
+ "lib/net8.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "ru"
+ },
+ "lib/net8.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "tr"
+ },
+ "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "zh-Hans"
+ },
+ "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll": {
+ "locale": "zh-Hant"
+ }
+ },
+ "build": {
+ "buildTransitive/Microsoft.Testing.Platform.MSBuild.props": {},
+ "buildTransitive/Microsoft.Testing.Platform.MSBuild.targets": {}
+ },
+ "buildMultiTargeting": {
+ "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.props": {},
+ "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.targets": {}
+ }
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "type": "package",
+ "dependencies": {
+ "System.Security.AccessControl": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ },
+ "compile": {
+ "ref/netstandard2.0/Microsoft.Win32.Registry.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/Microsoft.Win32.Registry.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll": {
+ "assetType": "runtime",
+ "rid": "win"
+ }
+ }
+ },
+ "System.Diagnostics.DiagnosticSource/5.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/net5.0/System.Diagnostics.DiagnosticSource.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net5.0/System.Diagnostics.DiagnosticSource.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.NETCore.Platforms": "5.0.0",
+ "System.Security.Principal.Windows": "5.0.0"
+ },
+ "compile": {
+ "ref/netstandard2.0/System.Security.AccessControl.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/System.Security.AccessControl.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": {
+ "assetType": "runtime",
+ "rid": "win"
+ }
+ }
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "type": "package",
+ "compile": {
+ "ref/netcoreapp3.0/System.Security.Principal.Windows.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/System.Security.Principal.Windows.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtimeTargets": {
+ "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": {
+ "assetType": "runtime",
+ "rid": "unix"
+ },
+ "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": {
+ "assetType": "runtime",
+ "rid": "win"
+ }
+ }
+ },
+ "xunit.analyzers/1.27.0": {
+ "type": "package"
+ },
+ "xunit.v3.assert/3.2.2": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/xunit.v3.assert.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/xunit.v3.assert.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "xunit.v3.common/3.2.2": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Bcl.AsyncInterfaces": "6.0.0"
+ },
+ "compile": {
+ "lib/netstandard2.0/xunit.v3.common.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/xunit.v3.common.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "xunit.v3.core.mtp-v2/3.2.2": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Testing.Extensions.Telemetry": "2.0.2",
+ "Microsoft.Testing.Extensions.TrxReport.Abstractions": "2.0.2",
+ "Microsoft.Testing.Platform": "2.0.2",
+ "Microsoft.Testing.Platform.MSBuild": "2.0.2",
+ "xunit.v3.extensibility.core": "[3.2.2]",
+ "xunit.v3.runner.inproc.console": "[3.2.2]"
+ },
+ "compile": {
+ "lib/net8.0/xunit.v3.mtp-v2.dll": {}
+ },
+ "runtime": {
+ "lib/net8.0/xunit.v3.mtp-v2.dll": {}
+ },
+ "build": {
+ "buildTransitive/xunit.v3.core.mtp-v2.props": {},
+ "buildTransitive/xunit.v3.core.mtp-v2.targets": {}
+ }
+ },
+ "xunit.v3.extensibility.core/3.2.2": {
+ "type": "package",
+ "dependencies": {
+ "xunit.v3.common": "[3.2.2]"
+ },
+ "compile": {
+ "lib/netstandard2.0/xunit.v3.core.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/xunit.v3.core.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "xunit.v3.mtp-v2/3.2.2": {
+ "type": "package",
+ "dependencies": {
+ "xunit.analyzers": "1.27.0",
+ "xunit.v3.assert": "[3.2.2]",
+ "xunit.v3.core.mtp-v2": "[3.2.2]"
+ },
+ "compile": {
+ "lib/net8.0/_._": {}
+ },
+ "runtime": {
+ "lib/net8.0/_._": {}
+ }
+ },
+ "xunit.v3.runner.common/3.2.2": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Win32.Registry": "[5.0.0]",
+ "xunit.v3.common": "[3.2.2]"
+ },
+ "compile": {
+ "lib/netstandard2.0/xunit.v3.runner.common.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/xunit.v3.runner.common.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "xunit.v3.runner.inproc.console/3.2.2": {
+ "type": "package",
+ "dependencies": {
+ "xunit.v3.extensibility.core": "[3.2.2]",
+ "xunit.v3.runner.common": "[3.2.2]"
+ },
+ "compile": {
+ "lib/net8.0/xunit.v3.runner.inproc.console.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/xunit.v3.runner.inproc.console.dll": {
+ "related": ".xml"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "Microsoft.ApplicationInsights/2.23.0": {
+ "sha512": "nWArUZTdU7iqZLycLKWe0TDms48KKGE6pONH2terYNa8REXiqixrMOkf1sk5DHGMaUTqONU2YkS4SAXBhLStgw==",
+ "type": "package",
+ "path": "microsoft.applicationinsights/2.23.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "icon.png",
+ "lib/net452/Microsoft.ApplicationInsights.dll",
+ "lib/net452/Microsoft.ApplicationInsights.pdb",
+ "lib/net452/Microsoft.ApplicationInsights.xml",
+ "lib/net46/Microsoft.ApplicationInsights.dll",
+ "lib/net46/Microsoft.ApplicationInsights.pdb",
+ "lib/net46/Microsoft.ApplicationInsights.xml",
+ "lib/netstandard2.0/Microsoft.ApplicationInsights.dll",
+ "lib/netstandard2.0/Microsoft.ApplicationInsights.pdb",
+ "lib/netstandard2.0/Microsoft.ApplicationInsights.xml",
+ "microsoft.applicationinsights.2.23.0.nupkg.sha512",
+ "microsoft.applicationinsights.nuspec"
+ ]
+ },
+ "Microsoft.Bcl.AsyncInterfaces/6.0.0": {
+ "sha512": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==",
+ "type": "package",
+ "path": "microsoft.bcl.asyncinterfaces/6.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll",
+ "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml",
+ "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll",
+ "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml",
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll",
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml",
+ "microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
+ "microsoft.bcl.asyncinterfaces.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.NETCore.Platforms/5.0.0": {
+ "sha512": "VyPlqzH2wavqquTcYpkIIAQ6WdenuKoFN0BdYBbCWsclXacSOHNQn66Gt4z5NBqEYW0FAPm5rlvki9ZiCij5xQ==",
+ "type": "package",
+ "path": "microsoft.netcore.platforms/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/netstandard1.0/_._",
+ "microsoft.netcore.platforms.5.0.0.nupkg.sha512",
+ "microsoft.netcore.platforms.nuspec",
+ "runtime.json",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "Microsoft.Testing.Extensions.Telemetry/2.0.2": {
+ "sha512": "H580BvHyuADoWzlH9zRk5fqVyGucm6mhph+k40CQc9O4ie+Buxa4Pk9Q92BEClqIICqi25J7fuMII9qFYYgKtw==",
+ "type": "package",
+ "path": "microsoft.testing.extensions.telemetry/2.0.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "PACKAGE.md",
+ "build/net8.0/Microsoft.Testing.Extensions.Telemetry.props",
+ "build/net9.0/Microsoft.Testing.Extensions.Telemetry.props",
+ "build/netstandard2.0/Microsoft.Testing.Extensions.Telemetry.props",
+ "buildMultiTargeting/Microsoft.Testing.Extensions.Telemetry.props",
+ "buildTransitive/net8.0/Microsoft.Testing.Extensions.Telemetry.props",
+ "buildTransitive/net9.0/Microsoft.Testing.Extensions.Telemetry.props",
+ "buildTransitive/netstandard2.0/Microsoft.Testing.Extensions.Telemetry.props",
+ "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.dll",
+ "lib/net8.0/Microsoft.Testing.Extensions.Telemetry.xml",
+ "lib/net8.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/Microsoft.Testing.Extensions.Telemetry.dll",
+ "lib/net9.0/Microsoft.Testing.Extensions.Telemetry.xml",
+ "lib/net9.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/net9.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/Microsoft.Testing.Extensions.Telemetry.dll",
+ "lib/netstandard2.0/Microsoft.Testing.Extensions.Telemetry.xml",
+ "lib/netstandard2.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "lib/netstandard2.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll",
+ "microsoft.testing.extensions.telemetry.2.0.2.nupkg.sha512",
+ "microsoft.testing.extensions.telemetry.nuspec"
+ ]
+ },
+ "Microsoft.Testing.Extensions.TrxReport.Abstractions/2.0.2": {
+ "sha512": "MrHYdPZ1CiyYp5bfjzNSghfVwl/I9osMazcZMAbwZY0BhR32i70YLf4zSXECvU2qt2PvDdrjYpGRgBscFbjDpw==",
+ "type": "package",
+ "path": "microsoft.testing.extensions.trxreport.abstractions/2.0.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "PACKAGE.md",
+ "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll",
+ "lib/net8.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.xml",
+ "lib/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll",
+ "lib/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.xml",
+ "microsoft.testing.extensions.trxreport.abstractions.2.0.2.nupkg.sha512",
+ "microsoft.testing.extensions.trxreport.abstractions.nuspec"
+ ]
+ },
+ "Microsoft.Testing.Platform/2.0.2": {
+ "sha512": "43NCOTEENtdc9fmlzX9KHQR14AZEYek5r4jOJlWPhTyV1+aYAQYl4x773nYXU5TKxV6+rMuniJ7wcj9C9qrP1A==",
+ "type": "package",
+ "path": "microsoft.testing.platform/2.0.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "PACKAGE.md",
+ "build/net8.0/Microsoft.Testing.Platform.props",
+ "build/net8.0/Microsoft.Testing.Platform.targets",
+ "build/net9.0/Microsoft.Testing.Platform.props",
+ "build/net9.0/Microsoft.Testing.Platform.targets",
+ "build/netstandard2.0/Microsoft.Testing.Platform.props",
+ "build/netstandard2.0/Microsoft.Testing.Platform.targets",
+ "buildMultiTargeting/Microsoft.Testing.Platform.props",
+ "buildMultiTargeting/Microsoft.Testing.Platform.targets",
+ "buildTransitive/net8.0/Microsoft.Testing.Platform.props",
+ "buildTransitive/net8.0/Microsoft.Testing.Platform.targets",
+ "buildTransitive/net9.0/Microsoft.Testing.Platform.props",
+ "buildTransitive/net9.0/Microsoft.Testing.Platform.targets",
+ "buildTransitive/netstandard2.0/Microsoft.Testing.Platform.props",
+ "buildTransitive/netstandard2.0/Microsoft.Testing.Platform.targets",
+ "lib/net8.0/Microsoft.Testing.Platform.dll",
+ "lib/net8.0/Microsoft.Testing.Platform.xml",
+ "lib/net8.0/cs/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/de/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/es/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/fr/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/it/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/ja/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/ko/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/pl/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/pt-BR/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/ru/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/tr/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/zh-Hans/Microsoft.Testing.Platform.resources.dll",
+ "lib/net8.0/zh-Hant/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/Microsoft.Testing.Platform.dll",
+ "lib/net9.0/Microsoft.Testing.Platform.xml",
+ "lib/net9.0/cs/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/de/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/es/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/fr/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/it/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/ja/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/ko/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/pl/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/pt-BR/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/ru/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/tr/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/zh-Hans/Microsoft.Testing.Platform.resources.dll",
+ "lib/net9.0/zh-Hant/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/Microsoft.Testing.Platform.dll",
+ "lib/netstandard2.0/Microsoft.Testing.Platform.xml",
+ "lib/netstandard2.0/cs/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/de/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/es/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/fr/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/it/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/ja/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/ko/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/pl/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/pt-BR/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/ru/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/tr/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/zh-Hans/Microsoft.Testing.Platform.resources.dll",
+ "lib/netstandard2.0/zh-Hant/Microsoft.Testing.Platform.resources.dll",
+ "microsoft.testing.platform.2.0.2.nupkg.sha512",
+ "microsoft.testing.platform.nuspec"
+ ]
+ },
+ "Microsoft.Testing.Platform.MSBuild/2.0.2": {
+ "sha512": "2zKkQKaUoaKgb/3AekboWOdLMh4upCo1nLWQnjGzp8r9YjiNOZRrzTsJQ3A4U03AcbH0evlIvFDKYSUqmTVuug==",
+ "type": "package",
+ "path": "microsoft.testing.platform.msbuild/2.0.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "PACKAGE.md",
+ "_MSBuildTasks/netstandard2.0/Microsoft.Testing.Platform.MSBuild.dll",
+ "_MSBuildTasks/netstandard2.0/Microsoft.Testing.Platform.MSBuild.xml",
+ "_MSBuildTasks/netstandard2.0/Microsoft.Testing.Platform.dll",
+ "_MSBuildTasks/netstandard2.0/Microsoft.Testing.Platform.xml",
+ "_MSBuildTasks/netstandard2.0/Microsoft.Win32.Registry.dll",
+ "_MSBuildTasks/netstandard2.0/System.Security.AccessControl.dll",
+ "_MSBuildTasks/netstandard2.0/System.Security.Principal.Windows.dll",
+ "_MSBuildTasks/netstandard2.0/cs/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/cs/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/de/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/de/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/es/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/es/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/fr/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/fr/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/it/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/it/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/ja/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/ja/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/ko/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/ko/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/pl/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/pl/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/pt-BR/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/pt-BR/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/ru/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/ru/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/tr/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/tr/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/zh-Hans/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/zh-Hans/Microsoft.Testing.Platform.resources.dll",
+ "_MSBuildTasks/netstandard2.0/zh-Hant/Microsoft.Testing.Platform.MSBuild.resources.dll",
+ "_MSBuildTasks/netstandard2.0/zh-Hant/Microsoft.Testing.Platform.resources.dll",
+ "build/Microsoft.Testing.Platform.MSBuild.props",
+ "build/Microsoft.Testing.Platform.MSBuild.targets",
+ "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.CustomTestTarget.targets",
+ "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.VSTest.targets",
+ "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.props",
+ "buildMultiTargeting/Microsoft.Testing.Platform.MSBuild.targets",
+ "buildTransitive/Microsoft.Testing.Platform.MSBuild.props",
+ "buildTransitive/Microsoft.Testing.Platform.MSBuild.targets",
+ "lib/net8.0/Microsoft.Testing.Extensions.MSBuild.dll",
+ "lib/net8.0/Microsoft.Testing.Extensions.MSBuild.xml",
+ "lib/net8.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net8.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/Microsoft.Testing.Extensions.MSBuild.dll",
+ "lib/net9.0/Microsoft.Testing.Extensions.MSBuild.xml",
+ "lib/net9.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/net9.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/Microsoft.Testing.Extensions.MSBuild.dll",
+ "lib/netstandard2.0/Microsoft.Testing.Extensions.MSBuild.xml",
+ "lib/netstandard2.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "lib/netstandard2.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll",
+ "microsoft.testing.platform.msbuild.2.0.2.nupkg.sha512",
+ "microsoft.testing.platform.msbuild.nuspec"
+ ]
+ },
+ "Microsoft.Win32.Registry/5.0.0": {
+ "sha512": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==",
+ "type": "package",
+ "path": "microsoft.win32.registry/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net46/Microsoft.Win32.Registry.dll",
+ "lib/net461/Microsoft.Win32.Registry.dll",
+ "lib/net461/Microsoft.Win32.Registry.xml",
+ "lib/netstandard1.3/Microsoft.Win32.Registry.dll",
+ "lib/netstandard2.0/Microsoft.Win32.Registry.dll",
+ "lib/netstandard2.0/Microsoft.Win32.Registry.xml",
+ "microsoft.win32.registry.5.0.0.nupkg.sha512",
+ "microsoft.win32.registry.nuspec",
+ "ref/net46/Microsoft.Win32.Registry.dll",
+ "ref/net461/Microsoft.Win32.Registry.dll",
+ "ref/net461/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/Microsoft.Win32.Registry.dll",
+ "ref/netstandard1.3/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml",
+ "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml",
+ "ref/netstandard2.0/Microsoft.Win32.Registry.dll",
+ "ref/netstandard2.0/Microsoft.Win32.Registry.xml",
+ "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll",
+ "runtimes/win/lib/net461/Microsoft.Win32.Registry.dll",
+ "runtimes/win/lib/net461/Microsoft.Win32.Registry.xml",
+ "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll",
+ "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll",
+ "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.xml",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "System.Diagnostics.DiagnosticSource/5.0.0": {
+ "sha512": "tCQTzPsGZh/A9LhhA6zrqCRV4hOHsK90/G7q3Khxmn6tnB1PuNU0cRaKANP2AWcF9bn0zsuOoZOSrHuJk6oNBA==",
+ "type": "package",
+ "path": "system.diagnostics.diagnosticsource/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net45/System.Diagnostics.DiagnosticSource.dll",
+ "lib/net45/System.Diagnostics.DiagnosticSource.xml",
+ "lib/net46/System.Diagnostics.DiagnosticSource.dll",
+ "lib/net46/System.Diagnostics.DiagnosticSource.xml",
+ "lib/net5.0/System.Diagnostics.DiagnosticSource.dll",
+ "lib/net5.0/System.Diagnostics.DiagnosticSource.xml",
+ "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll",
+ "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml",
+ "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll",
+ "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml",
+ "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll",
+ "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml",
+ "system.diagnostics.diagnosticsource.5.0.0.nupkg.sha512",
+ "system.diagnostics.diagnosticsource.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "System.Security.AccessControl/5.0.0": {
+ "sha512": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==",
+ "type": "package",
+ "path": "system.security.accesscontrol/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net46/System.Security.AccessControl.dll",
+ "lib/net461/System.Security.AccessControl.dll",
+ "lib/net461/System.Security.AccessControl.xml",
+ "lib/netstandard1.3/System.Security.AccessControl.dll",
+ "lib/netstandard2.0/System.Security.AccessControl.dll",
+ "lib/netstandard2.0/System.Security.AccessControl.xml",
+ "lib/uap10.0.16299/_._",
+ "ref/net46/System.Security.AccessControl.dll",
+ "ref/net461/System.Security.AccessControl.dll",
+ "ref/net461/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/System.Security.AccessControl.dll",
+ "ref/netstandard1.3/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/de/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/es/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/fr/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/it/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ja/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ko/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/ru/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml",
+ "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml",
+ "ref/netstandard2.0/System.Security.AccessControl.dll",
+ "ref/netstandard2.0/System.Security.AccessControl.xml",
+ "ref/uap10.0.16299/_._",
+ "runtimes/win/lib/net46/System.Security.AccessControl.dll",
+ "runtimes/win/lib/net461/System.Security.AccessControl.dll",
+ "runtimes/win/lib/net461/System.Security.AccessControl.xml",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml",
+ "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll",
+ "runtimes/win/lib/uap10.0.16299/_._",
+ "system.security.accesscontrol.5.0.0.nupkg.sha512",
+ "system.security.accesscontrol.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "System.Security.Principal.Windows/5.0.0": {
+ "sha512": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==",
+ "type": "package",
+ "path": "system.security.principal.windows/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net46/System.Security.Principal.Windows.dll",
+ "lib/net461/System.Security.Principal.Windows.dll",
+ "lib/net461/System.Security.Principal.Windows.xml",
+ "lib/netstandard1.3/System.Security.Principal.Windows.dll",
+ "lib/netstandard2.0/System.Security.Principal.Windows.dll",
+ "lib/netstandard2.0/System.Security.Principal.Windows.xml",
+ "lib/uap10.0.16299/_._",
+ "ref/net46/System.Security.Principal.Windows.dll",
+ "ref/net461/System.Security.Principal.Windows.dll",
+ "ref/net461/System.Security.Principal.Windows.xml",
+ "ref/netcoreapp3.0/System.Security.Principal.Windows.dll",
+ "ref/netcoreapp3.0/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/System.Security.Principal.Windows.dll",
+ "ref/netstandard1.3/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/de/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/es/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/it/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml",
+ "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml",
+ "ref/netstandard2.0/System.Security.Principal.Windows.dll",
+ "ref/netstandard2.0/System.Security.Principal.Windows.xml",
+ "ref/uap10.0.16299/_._",
+ "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+ "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+ "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+ "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+ "runtimes/win/lib/net46/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/net461/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/net461/System.Security.Principal.Windows.xml",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml",
+ "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml",
+ "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll",
+ "runtimes/win/lib/uap10.0.16299/_._",
+ "system.security.principal.windows.5.0.0.nupkg.sha512",
+ "system.security.principal.windows.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "xunit.analyzers/1.27.0": {
+ "sha512": "y/pxIQaLvk/kxAoDkZW9GnHLCEqzwl5TW0vtX3pweyQpjizB9y3DXhb9pkw2dGeUqhLjsxvvJM1k89JowU6z3g==",
+ "type": "package",
+ "path": "xunit.analyzers/1.27.0",
+ "hasTools": true,
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "_content/README.md",
+ "_content/logo-128-transparent.png",
+ "analyzers/dotnet/cs/xunit.analyzers.dll",
+ "analyzers/dotnet/cs/xunit.analyzers.fixes.dll",
+ "tools/install.ps1",
+ "tools/uninstall.ps1",
+ "xunit.analyzers.1.27.0.nupkg.sha512",
+ "xunit.analyzers.nuspec"
+ ]
+ },
+ "xunit.v3.assert/3.2.2": {
+ "sha512": "BPciBghgEEaJN/JG00QfCYDfEfnLgQhfnYEy+j1izoeHVNYd5+3Wm8GJ6JgYysOhpBPYGE+sbf75JtrRc7jrdA==",
+ "type": "package",
+ "path": "xunit.v3.assert/3.2.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "_content/README.md",
+ "_content/logo-128-transparent.png",
+ "lib/net8.0/xunit.v3.assert.dll",
+ "lib/net8.0/xunit.v3.assert.xml",
+ "lib/netstandard2.0/xunit.v3.assert.dll",
+ "lib/netstandard2.0/xunit.v3.assert.xml",
+ "xunit.v3.assert.3.2.2.nupkg.sha512",
+ "xunit.v3.assert.nuspec"
+ ]
+ },
+ "xunit.v3.common/3.2.2": {
+ "sha512": "Hj775PEH6GTbbg0wfKRvG2hNspDCvTH9irXhH4qIWgdrOSV1sQlqPie+DOvFeigsFg2fxSM3ZAaaCDQs+KreFA==",
+ "type": "package",
+ "path": "xunit.v3.common/3.2.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "_content/README.md",
+ "_content/logo-128-transparent.png",
+ "lib/netstandard2.0/xunit.v3.common.dll",
+ "lib/netstandard2.0/xunit.v3.common.xml",
+ "xunit.v3.common.3.2.2.nupkg.sha512",
+ "xunit.v3.common.nuspec"
+ ]
+ },
+ "xunit.v3.core.mtp-v2/3.2.2": {
+ "sha512": "zW82tdCm+T1uUD1JKE+SmhgMq8nCAvcFPRLIVEiRgaxBSjcyJEKopLU3bHGOa416q+N3Dz7m1zLoPR5VJ5OQ+Q==",
+ "type": "package",
+ "path": "xunit.v3.core.mtp-v2/3.2.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "_content/DefaultRunnerReporters.cs",
+ "_content/DefaultRunnerReporters.fs",
+ "_content/DefaultRunnerReporters.vb",
+ "_content/README.md",
+ "_content/logo-128-transparent.png",
+ "_content/runners/netcore/xunit.abstractions.dll",
+ "_content/runners/netcore/xunit.v3.runner.utility.netcore.dll",
+ "_content/runners/netfx/xunit.abstractions.dll",
+ "_content/runners/netfx/xunit.v3.runner.utility.netfx.dll",
+ "_content/tasks/netcore/xunit.v3.msbuildtasks.dll",
+ "_content/tasks/netfx/xunit.v3.msbuildtasks.dll",
+ "buildTransitive/xunit.v3.core.mtp-v2.props",
+ "buildTransitive/xunit.v3.core.mtp-v2.targets",
+ "lib/net472/xunit.v3.mtp-v2.dll",
+ "lib/net8.0/xunit.v3.mtp-v2.dll",
+ "xunit.v3.core.mtp-v2.3.2.2.nupkg.sha512",
+ "xunit.v3.core.mtp-v2.nuspec"
+ ]
+ },
+ "xunit.v3.extensibility.core/3.2.2": {
+ "sha512": "srY8z/oMPvh/t8axtO2DwrHajhFMH7tnqKildvYrVQIfICi8fOn3yIBWkVPAcrKmHMwvXRJ/XsQM3VMR6DOYfQ==",
+ "type": "package",
+ "path": "xunit.v3.extensibility.core/3.2.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "_content/README.md",
+ "_content/logo-128-transparent.png",
+ "lib/netstandard2.0/xunit.v3.core.dll",
+ "lib/netstandard2.0/xunit.v3.core.xml",
+ "xunit.v3.extensibility.core.3.2.2.nupkg.sha512",
+ "xunit.v3.extensibility.core.nuspec"
+ ]
+ },
+ "xunit.v3.mtp-v2/3.2.2": {
+ "sha512": "S0LJpeMIMrmbVLXDCvPVX47OLk28qBYfGU+5SNCbarOEdw8oKLfiVqaACwuYRvLiOqDEB/+VJ8gTSB1ZwheoOQ==",
+ "type": "package",
+ "path": "xunit.v3.mtp-v2/3.2.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "_content/README.md",
+ "_content/logo-128-transparent.png",
+ "lib/net472/_._",
+ "lib/net8.0/_._",
+ "xunit.v3.mtp-v2.3.2.2.nupkg.sha512",
+ "xunit.v3.mtp-v2.nuspec"
+ ]
+ },
+ "xunit.v3.runner.common/3.2.2": {
+ "sha512": "/hkHkQCzGrugelOAehprm7RIWdsUFVmIVaD6jDH/8DNGCymTlKKPTbGokD5czbAfqfex47mBP0sb0zbHYwrO/g==",
+ "type": "package",
+ "path": "xunit.v3.runner.common/3.2.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "_content/README.md",
+ "_content/logo-128-transparent.png",
+ "lib/netstandard2.0/xunit.v3.runner.common.dll",
+ "lib/netstandard2.0/xunit.v3.runner.common.xml",
+ "xunit.v3.runner.common.3.2.2.nupkg.sha512",
+ "xunit.v3.runner.common.nuspec"
+ ]
+ },
+ "xunit.v3.runner.inproc.console/3.2.2": {
+ "sha512": "ulWOdSvCk+bPXijJZ73bth9NyoOHsAs1ZOvamYbCkD4DNLX/Bd29Ve2ZNUwBbK0MqfIYWXHZViy/HKrdEC/izw==",
+ "type": "package",
+ "path": "xunit.v3.runner.inproc.console/3.2.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "_content/README.md",
+ "_content/logo-128-transparent.png",
+ "lib/net472/xunit.v3.runner.inproc.console.dll",
+ "lib/net472/xunit.v3.runner.inproc.console.xml",
+ "lib/net8.0/xunit.v3.runner.inproc.console.dll",
+ "lib/net8.0/xunit.v3.runner.inproc.console.xml",
+ "xunit.v3.runner.inproc.console.3.2.2.nupkg.sha512",
+ "xunit.v3.runner.inproc.console.nuspec"
+ ]
+ }
+ },
+ "projectFileDependencyGroups": {
+ "net8.0": [
+ "xunit.v3.mtp-v2 >= 3.2.2"
+ ]
+ },
+ "packageFolders": {
+ "C:\\Users\\Minimata\\.nuget\\packages\\": {},
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\Godot\\Projects\\movement-tests\\movement-tests.csproj",
+ "projectName": "movement-tests",
+ "projectPath": "D:\\Godot\\Projects\\movement-tests\\movement-tests.csproj",
+ "packagesPath": "C:\\Users\\Minimata\\.nuget\\packages\\",
+ "outputPath": "D:\\Godot\\Projects\\movement-tests\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\Minimata\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net8.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.300"
+ },
+ "frameworks": {
+ "net8.0": {
+ "targetAlias": "net8.0",
+ "dependencies": {
+ "xunit.v3.mtp-v2": {
+ "target": "Package",
+ "version": "[3.2.2, )"
+ }
+ },
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.301/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache
new file mode 100644
index 00000000..0d7f6f20
--- /dev/null
+++ b/obj/project.nuget.cache
@@ -0,0 +1,28 @@
+{
+ "version": 2,
+ "dgSpecHash": "C+vE0OBbgVo=",
+ "success": true,
+ "projectFilePath": "D:\\Godot\\Projects\\movement-tests\\movement-tests.csproj",
+ "expectedPackageFiles": [
+ "C:\\Users\\Minimata\\.nuget\\packages\\microsoft.applicationinsights\\2.23.0\\microsoft.applicationinsights.2.23.0.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\microsoft.netcore.platforms\\5.0.0\\microsoft.netcore.platforms.5.0.0.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\microsoft.testing.extensions.telemetry\\2.0.2\\microsoft.testing.extensions.telemetry.2.0.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\microsoft.testing.extensions.trxreport.abstractions\\2.0.2\\microsoft.testing.extensions.trxreport.abstractions.2.0.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\microsoft.testing.platform\\2.0.2\\microsoft.testing.platform.2.0.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\microsoft.testing.platform.msbuild\\2.0.2\\microsoft.testing.platform.msbuild.2.0.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\microsoft.win32.registry\\5.0.0\\microsoft.win32.registry.5.0.0.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\system.diagnostics.diagnosticsource\\5.0.0\\system.diagnostics.diagnosticsource.5.0.0.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\xunit.analyzers\\1.27.0\\xunit.analyzers.1.27.0.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\xunit.v3.assert\\3.2.2\\xunit.v3.assert.3.2.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\xunit.v3.common\\3.2.2\\xunit.v3.common.3.2.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\xunit.v3.core.mtp-v2\\3.2.2\\xunit.v3.core.mtp-v2.3.2.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\xunit.v3.extensibility.core\\3.2.2\\xunit.v3.extensibility.core.3.2.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\xunit.v3.mtp-v2\\3.2.2\\xunit.v3.mtp-v2.3.2.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\xunit.v3.runner.common\\3.2.2\\xunit.v3.runner.common.3.2.2.nupkg.sha512",
+ "C:\\Users\\Minimata\\.nuget\\packages\\xunit.v3.runner.inproc.console\\3.2.2\\xunit.v3.runner.inproc.console.3.2.2.nupkg.sha512"
+ ],
+ "logs": []
+}
\ No newline at end of file
diff --git a/tests/player/PlayerControllerUnitTest.cs b/tests/player/PlayerControllerUnitTest.cs
new file mode 100644
index 00000000..947ecf14
--- /dev/null
+++ b/tests/player/PlayerControllerUnitTest.cs
@@ -0,0 +1,187 @@
+using System.Reflection;
+using Godot;
+using GdUnit4;
+using static GdUnit4.Assertions;
+using Movementtests.interfaces;
+using Movementtests.systems.damage;
+
+namespace Movementtests.tests;
+
+[TestSuite, RequireGodotRuntime]
+public class PlayerControllerUnitTest
+{
+ private PlayerController _player;
+
+ [BeforeTest]
+ public void SetupTest()
+ {
+ _player = new PlayerController();
+ // We don't call _Ready() to avoid node dependency issues,
+ // but we need to initialize some private fields for unit testing.
+ SetPrivateField(_player, "_targetSpeed", 7.0f);
+ SetPrivateField(_player, "_gravity", 9.8f);
+
+ // Setup Combat/Health dependencies
+ var rHealth = new RHealth(100.0f);
+ _player.RHealth = rHealth;
+ _player.CHealth = new CHealth { RHealth = rHealth, CurrentHealth = 100.0f };
+ }
+
+ [AfterTest]
+ public void CleanupTest()
+ {
+ _player?.Free();
+ }
+
+ private void SetPrivateField(object obj, string fieldName, object value)
+ {
+ var field = typeof(PlayerController).GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
+ field?.SetValue(obj, value);
+ }
+
+ [TestCase]
+ public void TestCalculateGravityForce()
+ {
+ _player.Weight = 3.0f;
+ // _gravity is 9.8f
+ AssertFloat(_player.CalculateGravityForce()).IsEqualApprox(29.4f, 0.001f);
+ }
+
+ [TestCase]
+ public void TestIsPlayerInputtingForward()
+ {
+ // Test Keyboard Input
+ _player.InputDeviceChanged(false); // isUsingGamepad = false
+ _player.OnInputMoveKeyboard(new Vector3(0, 0, -1)); // Forward is -Z in Godot
+ AssertBool(_player.IsPlayerInputtingForward()).IsTrue();
+
+ _player.OnInputMoveKeyboard(new Vector3(0, 0, 1)); // Backward
+ AssertBool(_player.IsPlayerInputtingForward()).IsFalse();
+
+ // Test Gamepad Input
+ _player.InputDeviceChanged(true); // isUsingGamepad = true
+ _player.OnInputMove(new Vector3(0, 0, -1));
+ AssertBool(_player.IsPlayerInputtingForward()).IsTrue();
+ }
+
+ [TestCase]
+ public void TestSetVerticalVelocity()
+ {
+ _player.Velocity = new Vector3(1, 0, 2);
+ _player.SetVerticalVelocity(5.0f);
+ AssertVector(_player.Velocity).IsEqual(new Vector3(1, 5, 2));
+ }
+
+ [TestCase]
+ public void TestComputeHVelocityGround()
+ {
+ _player.Velocity = Vector3.Zero;
+ _player.AccelerationFloor = 10.0f;
+
+ // Moving forward
+ Vector3 direction = Vector3.Forward; // (0, 0, -1)
+ float delta = 0.1f;
+
+ // _targetSpeed is 7.0f
+ // Expected velocity change: Lerp(0, -7.0, 0.1 * 10.0) -> Lerp(0, -7.0, 1.0) -> -7.0
+ Vector3 newVelocity = _player.ComputeHVelocity(delta, _player.AccelerationFloor, _player.DecelerationFloor, direction);
+
+ AssertVector(newVelocity).IsEqual(new Vector3(0, 0, -7.0f));
+ }
+
+ [TestCase]
+ public void TestComputeHVelocityAir()
+ {
+ _player.Velocity = new Vector3(5, 0, 0);
+ _player.AccelerationAir = 2.0f;
+ _player.DecelerationAir = 2.0f;
+
+ // No input direction (deceleration)
+ Vector3 direction = Vector3.Zero;
+ float delta = 0.5f;
+
+ // Expected velocity change: Lerp(5, 0, 0.5 * 2.0) -> Lerp(5, 0, 1.0) -> 0
+ Vector3 newVelocity = _player.ComputeHVelocity(delta, _player.AccelerationAir, _player.DecelerationAir, direction);
+
+ AssertVector(newVelocity).IsEqual(Vector3.Zero);
+ }
+
+ [TestCase]
+ public void TestReduceHealth()
+ {
+ // Initial health is 100
+ var damageRecord = new DamageRecord(Vector3.Zero, new RDamage(25.0f, EDamageTypes.Normal));
+ _player.ReduceHealth(_player, damageRecord);
+
+ AssertFloat(_player.CHealth.CurrentHealth).IsEqual(75.0f);
+ }
+
+ [TestCase]
+ public void TestEmpoweredActionsLeft()
+ {
+ // EmpoweredActionsLeft setter calls PlayerUi.SetNumberOfDashesLeft
+ // PlayerUi.SetNumberOfDashesLeft accesses _dashIcons array, which is null if _Ready() isn't called.
+ // We can initialize _dashIcons via reflection to allow the setter to work.
+ var mockUi = new PlayerUi();
+ var dashIcons = new TextureRect[3] { new TextureRect(), new TextureRect(), new TextureRect() };
+ var field = typeof(PlayerUi).GetField("_dashIcons", BindingFlags.NonPublic | BindingFlags.Instance);
+ field?.SetValue(mockUi, dashIcons);
+
+ _player.PlayerUi = mockUi;
+
+ _player.EmpoweredActionsLeft = 2;
+ AssertInt(_player.EmpoweredActionsLeft).IsEqual(2);
+ AssertBool(dashIcons[0].Visible).IsTrue();
+ AssertBool(dashIcons[1].Visible).IsTrue();
+ AssertBool(dashIcons[2].Visible).IsFalse();
+ }
+
+ [TestCase]
+ public void TestDashCooldownTimeout()
+ {
+ SetPrivateField(_player, "_canDash", false);
+ _player.DashCooldownTimeout();
+ bool canDash = (bool)GetPrivateField(_player, "_canDash");
+ AssertBool(canDash).IsTrue();
+ }
+
+ private object GetPrivateField(object obj, string fieldName)
+ {
+ var field = typeof(PlayerController).GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
+ return field?.GetValue(obj);
+ }
+
+ [TestCase]
+ public void TestGetInputLocalHDirection()
+ {
+ _player.InputDeviceChanged(false); // Keyboard
+ _player.OnInputMoveKeyboard(new Vector3(1, 0, 1)); // Diagonal
+
+ Vector3 expected = new Vector3(1, 0, 1).Normalized();
+ AssertVector(_player.GetInputLocalHDirection()).IsEqualApprox(expected, new Vector3(0.001f, 0.001f, 0.001f));
+ }
+
+ [TestCase]
+ public void TestComputeKnockback()
+ {
+ var cKnockback = new CKnockback();
+ cKnockback.RKnockback = new RKnockback(10.0f);
+ _player.CKnockback = cKnockback;
+
+ // Setup knockback record
+ var damageRecord = new DamageRecord(new Vector3(10, 0, 0), new RDamage(0, EDamageTypes.Normal));
+ var knockbackRecord = new KnockbackRecord(damageRecord, 1.0f);
+
+ _player.GlobalPosition = Vector3.Zero;
+ cKnockback.GlobalPosition = Vector3.Zero;
+
+ _player.RegisterKnockback(knockbackRecord);
+
+ // Expected direction: GlobalPosition (0,0,0) - SourceLocation (10,0,0) = (-10,0,0)
+ // Normalized: (-1, 0, 0)
+ // finalKnockback: (-1, 0, 0) * 10.0 (Modifier) * 1.0 (ForceMultiplier) = (-10, 0, 0)
+
+ Vector3 knockback = cKnockback.ComputeKnockback();
+ AssertVector(knockback).IsEqual(new Vector3(-10, 0, 0));
+ }
+}
diff --git a/tests/player/PlayerControllerUnitTest.cs.uid b/tests/player/PlayerControllerUnitTest.cs.uid
new file mode 100644
index 00000000..16a906a1
--- /dev/null
+++ b/tests/player/PlayerControllerUnitTest.cs.uid
@@ -0,0 +1 @@
+uid://kmphtu0ovixi
diff --git a/tests/PlayerMovementTest.cs b/tests/player/movement/PlayerMovementTest.cs
similarity index 94%
rename from tests/PlayerMovementTest.cs
rename to tests/player/movement/PlayerMovementTest.cs
index 166552da..e404cc44 100644
--- a/tests/PlayerMovementTest.cs
+++ b/tests/player/movement/PlayerMovementTest.cs
@@ -24,7 +24,7 @@ public class PlayerMovementTest
[BeforeTest]
public void SetupTest()
{
- _runner = ISceneRunner.Load("res://tests/player_movement/player_movement_scene.tscn");
+ _runner = ISceneRunner.Load("res://tests/player/movement/player_movement_scene.tscn");
_scene = _runner.Scene()!;
var player = _scene.FindChild("Player") as PlayerController;
@@ -89,10 +89,10 @@ public class PlayerMovementTest
_runner.SimulateKeyPress(Key.Space);
await _runner.AwaitMillis(100);
_runner.SimulateKeyRelease(Key.Space);
- await _runner.AwaitMillis(300);
+ await _runner.AwaitMillis(500);
var endPos = _player.GlobalPosition;
- AssertFloat((endPos - startPos).Length()).IsGreater(0.0f);
+ AssertFloat((endPos - startPos).Length()).IsGreater(_tolerance);
AssertFloat(endPos.Y).IsEqualApprox(1.0f, _tolerance);
}
}
\ No newline at end of file
diff --git a/tests/PlayerMovementTest.cs.uid b/tests/player/movement/PlayerMovementTest.cs.uid
similarity index 100%
rename from tests/PlayerMovementTest.cs.uid
rename to tests/player/movement/PlayerMovementTest.cs.uid
diff --git a/tests/player_movement/player_movement_scene.tscn b/tests/player/movement/player_movement_scene.tscn
similarity index 100%
rename from tests/player_movement/player_movement_scene.tscn
rename to tests/player/movement/player_movement_scene.tscn
diff --git a/xunit.runner.json b/xunit.runner.json
new file mode 100644
index 00000000..86c7ea05
--- /dev/null
+++ b/xunit.runner.json
@@ -0,0 +1,3 @@
+{
+ "$schema": "https://xunit.net/schema/current/xunit.runner.schema.json"
+}