diff --git a/.github/workflows/geometry.yaml b/.github/workflows/geometry.yaml new file mode 100644 index 00000000..8bf55107 --- /dev/null +++ b/.github/workflows/geometry.yaml @@ -0,0 +1,18 @@ +name: geometry + +on: + push: + paths: + - "packages/geometry/**" + - ".github/workflows/geometry.yaml" + + pull_request: + paths: + - "packages/geometry/**" + - ".github/workflows/geometry.yaml" + +jobs: + build: + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1 + with: + working_directory: packages/geometry diff --git a/lib/game/components/score_points.dart b/lib/game/components/score_points.dart index c6474b16..b4ad1bdf 100644 --- a/lib/game/components/score_points.dart +++ b/lib/game/components/score_points.dart @@ -22,9 +22,4 @@ class BallScorePointsCallback extends ContactCallback { ) { ball.gameRef.read().add(Scored(points: scorePoints.points)); } - - // TODO(alestiago): remove once this issue is closed. - // https://github.com/flame-engine/flame/issues/1414 - @override - void end(Ball _, ScorePoints __, Contact ___) {} } diff --git a/lib/game/components/wall.dart b/lib/game/components/wall.dart index 762d404e..c433365c 100644 --- a/lib/game/components/wall.dart +++ b/lib/game/components/wall.dart @@ -77,7 +77,4 @@ class BottomWallBallContactCallback extends ContactCallback { void begin(Ball ball, BottomWall wall, Contact contact) { ball.lost(); } - - @override - void end(_, __, ___) {} } diff --git a/packages/geometry/lib/src/geometry.dart b/packages/geometry/lib/src/geometry.dart index dceb4e9e..6ada92e0 100644 --- a/packages/geometry/lib/src/geometry.dart +++ b/packages/geometry/lib/src/geometry.dart @@ -1,5 +1,6 @@ import 'dart:math' as math; -import 'package:flame/extensions.dart'; + +import 'package:vector_math/vector_math_64.dart'; /// Calculates all [Vector2]s of a circumference. /// diff --git a/packages/geometry/pubspec.yaml b/packages/geometry/pubspec.yaml index 2678cdef..8fffb8b3 100644 --- a/packages/geometry/pubspec.yaml +++ b/packages/geometry/pubspec.yaml @@ -7,13 +7,9 @@ environment: sdk: ">=2.16.0 <3.0.0" dependencies: - flame: ^1.0.0 - flutter: - sdk: flutter + vector_math: ^2.1.1 dev_dependencies: - flutter_test: - sdk: flutter mocktail: ^0.2.0 test: ^1.19.2 very_good_analysis: ^2.4.0 diff --git a/packages/geometry/test/src/geometry_test.dart b/packages/geometry/test/src/geometry_test.dart index a3040a9c..2a5f9169 100644 --- a/packages/geometry/test/src/geometry_test.dart +++ b/packages/geometry/test/src/geometry_test.dart @@ -1,7 +1,8 @@ // ignore_for_file: prefer_const_constructors, cascade_invocations -import 'package:flame/extensions.dart'; -import 'package:flutter_test/flutter_test.dart'; + import 'package:geometry/geometry.dart'; +import 'package:test/test.dart'; +import 'package:vector_math/vector_math_64.dart'; class Binomial { Binomial({required this.n, required this.k}); @@ -42,18 +43,18 @@ void main() { ], step: 2, ), - throwsAssertionError, + throwsA(isA()), ); }); test('fails if not enough control points', () { expect( () => calculateBezierCurve(controlPoints: [Vector2.zero()]), - throwsAssertionError, + throwsA(isA()), ); expect( () => calculateBezierCurve(controlPoints: []), - throwsAssertionError, + throwsA(isA()), ); }); @@ -81,15 +82,24 @@ void main() { group('binomial', () { test('fails if k is negative', () { - expect(() => binomial(1, -1), throwsAssertionError); + expect( + () => binomial(1, -1), + throwsA(isA()), + ); }); test('fails if n is negative', () { - expect(() => binomial(-1, 1), throwsAssertionError); + expect( + () => binomial(-1, 1), + throwsA(isA()), + ); }); test('fails if n < k', () { - expect(() => binomial(1, 2), throwsAssertionError); + expect( + () => binomial(1, 2), + throwsA(isA()), + ); }); test('for a specific input gives a correct value', () { @@ -131,7 +141,7 @@ void main() { group('factorial', () { test('fails if negative number', () { - expect(() => factorial(-1), throwsAssertionError); + expect(() => factorial(-1), throwsA(isA())); }); test('for a specific input gives a correct value', () { diff --git a/test/game/components/anchor_test.dart b/test/game/components/anchor_test.dart index e0cfd645..49721947 100644 --- a/test/game/components/anchor_test.dart +++ b/test/game/components/anchor_test.dart @@ -11,7 +11,7 @@ void main() { TestWidgetsFlutterBinding.ensureInitialized(); group('Anchor', () { - final flameTester = FlameTester(PinballGameX.initial); + final flameTester = FlameTester(PinballGameTest.create); flameTester.test( 'loads correctly', diff --git a/test/game/components/ball_test.dart b/test/game/components/ball_test.dart index fca6b24a..2fb80605 100644 --- a/test/game/components/ball_test.dart +++ b/test/game/components/ball_test.dart @@ -13,7 +13,7 @@ void main() { TestWidgetsFlutterBinding.ensureInitialized(); group('Ball', () { - final flameTester = FlameTester(PinballGameX.initial); + final flameTester = FlameTester(PinballGameTest.create); flameTester.test( 'loads correctly', diff --git a/test/game/components/flipper_test.dart b/test/game/components/flipper_test.dart index ad608447..2a92f082 100644 --- a/test/game/components/flipper_test.dart +++ b/test/game/components/flipper_test.dart @@ -12,7 +12,7 @@ import '../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(PinballGameX.initial); + final flameTester = FlameTester(PinballGameTest.create); group( 'Flipper', () { diff --git a/test/game/components/pathway_test.dart b/test/game/components/pathway_test.dart index 482f6d57..43af9b77 100644 --- a/test/game/components/pathway_test.dart +++ b/test/game/components/pathway_test.dart @@ -10,7 +10,7 @@ import '../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(PinballGameX.initial); + final flameTester = FlameTester(PinballGameTest.create); group('Pathway', () { const width = 50.0; diff --git a/test/game/components/plunger_test.dart b/test/game/components/plunger_test.dart index 0ed550b2..02330b31 100644 --- a/test/game/components/plunger_test.dart +++ b/test/game/components/plunger_test.dart @@ -13,7 +13,7 @@ import '../../helpers/helpers.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(PinballGameX.initial); + final flameTester = FlameTester(PinballGameTest.create); group('Plunger', () { const compressionDistance = 0.0; diff --git a/test/game/components/wall_test.dart b/test/game/components/wall_test.dart index a45d0057..e60046ad 100644 --- a/test/game/components/wall_test.dart +++ b/test/game/components/wall_test.dart @@ -32,7 +32,7 @@ void main() { }, ); }); - final flameTester = FlameTester(PinballGameX.initial); + final flameTester = FlameTester(PinballGameTest.create); flameTester.test( 'loads correctly', diff --git a/test/game/pinball_game_test.dart b/test/game/pinball_game_test.dart index 3e3002cb..ef1a188e 100644 --- a/test/game/pinball_game_test.dart +++ b/test/game/pinball_game_test.dart @@ -10,7 +10,7 @@ import '../helpers/helpers.dart'; void main() { group('PinballGame', () { TestWidgetsFlutterBinding.ensureInitialized(); - final flameTester = FlameTester(PinballGameX.initial); + final flameTester = FlameTester(PinballGameTest.create); // TODO(alestiago): test if [PinballGame] registers // [BallScorePointsCallback] once the following issue is resolved: diff --git a/test/helpers/builders.dart b/test/helpers/builders.dart index 8ae3c546..c77e55c5 100644 --- a/test/helpers/builders.dart +++ b/test/helpers/builders.dart @@ -1,13 +1,14 @@ import 'package:flame_test/flame_test.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:pinball/game/game.dart'; -import 'package:pinball_theme/pinball_theme.dart'; + +import 'helpers.dart'; FlameTester flameBlocTester({ required GameBloc gameBloc, }) { return FlameTester( - PinballGameX.initial, + PinballGameTest.create, pumpWidget: (gameWidget, tester) async { await tester.pumpWidget( BlocProvider.value( @@ -18,11 +19,3 @@ FlameTester flameBlocTester({ }, ); } - -extension PinballGameX on PinballGame { - static PinballGame initial() => PinballGame( - theme: const PinballTheme( - characterTheme: DashTheme(), - ), - ); -} diff --git a/test/helpers/extensions.dart b/test/helpers/extensions.dart new file mode 100644 index 00000000..a976abd9 --- /dev/null +++ b/test/helpers/extensions.dart @@ -0,0 +1,12 @@ +import 'package:pinball/game/game.dart'; +import 'package:pinball_theme/pinball_theme.dart'; + +/// [PinballGame] extension to reduce boilerplate in tests. +extension PinballGameTest on PinballGame { + /// Create [PinballGame] with default [PinballTheme]. + static PinballGame create() => PinballGame( + theme: const PinballTheme( + characterTheme: DashTheme(), + ), + ); +} diff --git a/test/helpers/helpers.dart b/test/helpers/helpers.dart index c2c1cd36..88b9c04d 100644 --- a/test/helpers/helpers.dart +++ b/test/helpers/helpers.dart @@ -1,11 +1,11 @@ -// Copyright (c) 2021, Very Good Ventures -// https://verygood.ventures // +// Copyright (c) 2021, Very Good Ventures // Use of this source code is governed by an MIT-style -// license that can be found in the LICENSE file or at // https://opensource.org/licenses/MIT. - +// https://verygood.ventures +// license that can be found in the LICENSE file or at export 'builders.dart'; +export 'extensions.dart'; export 'key_testers.dart'; export 'mocks.dart'; export 'pump_app.dart';