58 lines
1.6 KiB
Dart
58 lines
1.6 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:labirynt/maze.dart';
|
|
import 'package:labirynt/player.dart';
|
|
import 'package:labirynt/main.dart';
|
|
|
|
void main() {
|
|
group('Maze', () {
|
|
test('generates maze with open start and end', () {
|
|
final maze = Maze(15, 15);
|
|
expect(maze.grid[1][1], 0);
|
|
expect(maze.grid[13][13], 0);
|
|
});
|
|
|
|
test('borders are walls', () {
|
|
final maze = Maze(15, 15);
|
|
expect(maze.isWall(0, 0), true);
|
|
expect(maze.isWall(14, 0), true);
|
|
expect(maze.isWall(0, 14), true);
|
|
});
|
|
|
|
test('isGoal detects goal position', () {
|
|
final maze = Maze(15, 15);
|
|
expect(maze.isGoal(13, 13), true);
|
|
expect(maze.isGoal(1, 1), false);
|
|
});
|
|
});
|
|
|
|
group('Player', () {
|
|
test('starts at given position', () {
|
|
final player = Player(x: 1.5, y: 1.5);
|
|
expect(player.x, 1.5);
|
|
expect(player.y, 1.5);
|
|
});
|
|
|
|
test('rotates left and right', () {
|
|
final player = Player(x: 1.5, y: 1.5, angle: 0);
|
|
player.rotateRight();
|
|
expect(player.angle, greaterThan(0));
|
|
player.rotateLeft();
|
|
player.rotateLeft();
|
|
expect(player.angle, lessThan(0));
|
|
});
|
|
|
|
test('moves forward in open space', () {
|
|
final maze = Maze(15, 15);
|
|
final player = Player(x: 1.5, y: 1.5, angle: 0);
|
|
final oldX = player.x;
|
|
player.moveForward(maze);
|
|
expect(player.x, greaterThan(oldX));
|
|
});
|
|
});
|
|
|
|
testWidgets('app renders without errors', (tester) async {
|
|
await tester.pumpWidget(const LabiryntApp());
|
|
expect(find.byType(LabiryntApp), findsOneWidget);
|
|
});
|
|
}
|