Initial commit: labirynt 3D pseudo-raycasting game
This commit is contained in:
57
test/widget_test.dart
Normal file
57
test/widget_test.dart
Normal file
@@ -0,0 +1,57 @@
|
||||
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);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user