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); }); }