This commit is contained in:
Kecskeméti László 2024-10-02 14:49:49 +02:00
parent b49da1e0de
commit 0d41087391
3 changed files with 85 additions and 0 deletions

1
tests/GlobalUsings.cs Normal file
View File

@ -0,0 +1 @@
global using Xunit;

View File

@ -0,0 +1,54 @@
using Snake.Model;
using Snake.Persistance;
namespace Snake.Tests.Persistance;
public class LevelLoaderTests
{
[Fact]
public void LoadLevelTest()
{
// Preparre
string SaveFile =
"""
[
{
"level_name": "Test level",
"size": 10,
"snake_start_length": 5,
"obstacles": [
[1,1],
[4,2],
[6,9]
]
},
{
"level_name": "Cool snake map",
"size": 12,
"snake_start_length": 3,
"obstacles": [
[2,3],
[1,2]
]
}
]
""";
string tempfile = Path.GetTempFileName();
File.WriteAllText(tempfile, SaveFile);
var loader = new SnakeLevelLoader(tempfile);
Assert.Equal(2, loader.StoredLevels.Count);
var current_level = loader.StoredLevels[0];
Assert.Equal("Test level", current_level.LevelName);
Assert.Equal(10, current_level.Size);
Assert.Equal(5, current_level.SnakeStartLength);
Assert.Equal(current_level.Obstacles, [[1,1], [4,2], [6,9]]);
current_level = loader.StoredLevels[1];
Assert.Equal("Cool snake map", current_level.LevelName);
Assert.Equal(12, current_level.Size);
Assert.Equal(3, current_level.SnakeStartLength);
Assert.Equal(current_level.Obstacles, [[2,3], [1,2]]);
}
}

30
tests/tests.csproj Normal file
View File

@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\persistance\persistance.csproj" />
<ProjectReference Include="..\model\model.csproj" />
</ItemGroup>
</Project>