main
Benjamin Löffler 2024-01-10 22:59:41 +01:00
parent e850a61cda
commit 8306c01d1d
6 changed files with 62 additions and 11 deletions

View File

@ -23,6 +23,5 @@ linter:
rules: rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule # avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at # Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options # https://dart.dev/guides/language/analysis-options

View File

@ -8,7 +8,7 @@ import 'package:flutter/scheduler.dart';
import 'package:pong/pong_menu.dart'; import 'package:pong/pong_menu.dart';
void main() { void main() {
// Run the PongGame // Run the PongGame app
runApp(const PongGame()); runApp(const PongGame());
} }

View File

@ -66,10 +66,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: flutter_lints name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.3" version: "3.0.1"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -79,10 +79,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: lints name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.1" version: "3.0.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:

View File

@ -44,7 +44,7 @@ dev_dependencies:
# activated in the `analysis_options.yaml` file located at the root of your # activated in the `analysis_options.yaml` file located at the root of your
# package. See that file for information about deactivating specific lint # package. See that file for information about deactivating specific lint
# rules and activating additional ones. # rules and activating additional ones.
flutter_lints: ^2.0.0 flutter_lints: ^3.0.1
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec # following page: https://dart.dev/tools/pub/pubspec

View File

@ -1,7 +1,35 @@
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pong/main.dart'; import 'package:pong/main.dart';
import 'package:mockito/mockito.dart'
class MockGameScreen extends Mock implements GameScreen {}
void main() { void main() {
test('moveRacket', () {}); test('moveRacket', () {});
test('moveBall updates ball position and handles collisions', () {
final gameScreenState = GameScreenState();
// Setze den Ball in eine Ausgangsposition
gameScreenState.ballPositionX = 50;
gameScreenState.ballPositionY = 50;
// Bewege den Ball nach rechts und überprüfe die Position
gameScreenState.moveBall(1.0);
expect(gameScreenState.ballPositionX, greaterThan(50));
// Bewege den Ball nach unten und überprüfe die Position
gameScreenState.moveBall(1.0);
expect(gameScreenState.ballPositionY, greaterThan(50));
// Teste die Kollision mit den Wänden
gameScreenState.ballPositionX = 0;
gameScreenState.ballSpeedX = -1.0;
gameScreenState.moveBall(1.0);
expect(gameScreenState.ballSpeedX,
greaterThan(0)); // Die Richtung des Balls sollte sich ändern
// Füge weitere Tests für Kollisionen hinzu
});
} }

View File

@ -1,16 +1,40 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:pong/main.dart'; import 'package:pong/main.dart';
void main() { void main() {
testWidgets('Tests "Berühren um zu beginnen!"', (WidgetTester tester) async { testWidgets('Tests "Berühren um zu beginnen!"', (WidgetTester tester) async {
final tapToStart = find.byKey(const ValueKey("tapToStart")); final tapToStart = find.text("Berühren um zu beginnen!");
await tester.pumpWidget(const MaterialApp(home: StartScreen())); await tester.pumpWidget(const MaterialApp(home: StartScreen()));
await tester.tap(tapToStart);
expect(tapToStart, findsOneWidget);
});
testWidgets('Tests "Punkte:"', (WidgetTester tester) async {
final points = find.text("Punkte: 0");
await tester.pumpWidget(const MaterialApp(home: GameScreen()));
expect(points, findsOneWidget);
});
testWidgets('StartScreen UI Test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(const MaterialApp(
home: StartScreen(),
));
// Verify that the "Berühren um zu beginnen!" Text angezeigt wird.
expect(find.text('Berühren um zu beginnen!'), findsOneWidget);
// Tap auf das GestureDetector, um zur GameScreen zu wechseln.
await tester.tap(find.byType(GestureDetector));
await tester.pump(); await tester.pump();
expect(find.text("Berühren um zu beginnen!"), findsOneWidget); // Verify, dass der Übergang zur GameScreen erfolgt ist.
expect(find.byType(GameScreen), findsOneWidget);
}); });
} }