66 lines
1.8 KiB
C#
66 lines
1.8 KiB
C#
using Snake.Model;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using FluentAssertions;
|
|
using Microsoft.Extensions.Time.Testing;
|
|
|
|
namespace tests.Model
|
|
{
|
|
public class SnakeLevelTest
|
|
{
|
|
FakeTimeProvider timeProvider = new FakeTimeProvider();
|
|
SnakeLevel level;
|
|
Point[] obstacles = [(3, 3), (4, 4)];
|
|
public SnakeLevelTest()
|
|
{
|
|
level = new SnakeLevel(
|
|
10, obstacles,
|
|
5, 3, 2, timeProvider
|
|
);
|
|
}
|
|
|
|
[Fact]
|
|
public void SnakeInitialValuesTests()
|
|
{
|
|
level.SnakeHeadDirection.Should().Be(SnakeLevel.SnakeDirection.Down);
|
|
level.SnakeLength.Should().Be(5);
|
|
level.EggLimit.Should().Be(2);
|
|
level.NewEggRound.Should().Be(3);
|
|
level.Size.Should().Be(10);
|
|
level.State.Should().Be(SnakeLevel.GameState.Paused);
|
|
foreach(Point p in obstacles)
|
|
{
|
|
level[p].Should().Be(SnakeLevel.LevelBlock.Obstacle);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void SnakeOutOfBoundsTest()
|
|
{
|
|
bool game_state_changed_raised = false;
|
|
level.GameStateUpdate += (s, e) =>
|
|
{
|
|
game_state_changed_raised = true;
|
|
};
|
|
|
|
level.Start();
|
|
|
|
game_state_changed_raised.Should().Be(true);
|
|
game_state_changed_raised = false;
|
|
for(int i=0; i<5; i++)
|
|
{
|
|
timeProvider.Advance(SnakeLevel.TickTimeSpan);
|
|
}
|
|
|
|
game_state_changed_raised.Should().Be(false);
|
|
|
|
timeProvider.Advance(SnakeLevel.TickTimeSpan);
|
|
game_state_changed_raised.Should().Be(true);
|
|
level.State.Should().Be(SnakeLevel.GameState.Dead);
|
|
}
|
|
}
|
|
}
|