feat: updating flame versions (#112)

pull/114/head
Erick 4 years ago committed by GitHub
parent f44c2bc25e
commit 84d7ab8564
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -85,7 +85,7 @@ class Plunger extends BodyComponent with KeyboardHandler, InitialPosition {
plunger: this, plunger: this,
anchor: anchor, anchor: anchor,
); );
world.createJoint(jointDef); world.createJoint(PrismaticJoint(jointDef));
} }
@override @override

@ -7,8 +7,8 @@ environment:
sdk: ">=2.16.0 <3.0.0" sdk: ">=2.16.0 <3.0.0"
dependencies: dependencies:
flame: ^1.1.0-releasecandidate.6 flame: ^1.1.0
flame_forge2d: ^0.9.0-releasecandidate.6 flame_forge2d: ^0.10.0
flutter: flutter:
sdk: flutter sdk: flutter
geometry: geometry:
@ -16,7 +16,7 @@ dependencies:
dev_dependencies: dev_dependencies:
flame_test: ^1.1.0 flame_test: ^1.3.0
flutter_test: flutter_test:
sdk: flutter sdk: flutter
mocktail: ^0.2.0 mocktail: ^0.2.0

@ -91,14 +91,14 @@ packages:
name: flame name: flame
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0-releasecandidate.6" version: "1.1.0"
flame_forge2d: flame_forge2d:
dependency: "direct main" dependency: "direct main"
description: description:
name: flame_forge2d name: flame_forge2d
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.9.0-releasecandidate.6" version: "0.10.0"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
@ -134,7 +134,7 @@ packages:
name: forge2d name: forge2d
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.9.0" version: "0.10.0"
freezed_annotation: freezed_annotation:
dependency: transitive dependency: transitive
description: description:

@ -8,8 +8,8 @@ environment:
dependencies: dependencies:
dashbook: ^0.1.7 dashbook: ^0.1.7
flame: ^1.1.0-releasecandidate.6 flame: ^1.1.0
flame_forge2d: ^0.9.0-releasecandidate.6 flame_forge2d: ^0.10.0
flutter: flutter:
sdk: flutter sdk: flutter
pinball_components: pinball_components:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 78 KiB

@ -1,6 +1,5 @@
// ignore_for_file: cascade_invocations // ignore_for_file: cascade_invocations
import 'package:flame/game.dart';
import 'package:flame_forge2d/flame_forge2d.dart'; import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flame_test/flame_test.dart'; import 'package:flame_test/flame_test.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
@ -39,24 +38,22 @@ void main() {
}); });
group('Spaceship', () { group('Spaceship', () {
testWidgets('renders correctly', (tester) async { final tester = FlameTester(TestGame.new);
final game = TestGame();
// TODO(erickzanardo): This should be handled by flame test. tester.testGameWidget(
// refctor it when https://github.com/flame-engine/flame/pull/1501 is merged 'renders correctly',
await tester.runAsync(() async { setUp: (game, tester) async {
await tester.pumpWidget(GameWidget(game: game));
await game.ready();
await game.addFromBlueprint(Spaceship(position: Vector2(30, -30))); await game.addFromBlueprint(Spaceship(position: Vector2(30, -30)));
await game.ready(); await game.ready();
await tester.pump(); await tester.pump();
}); },
verify: (game, tester) async {
await expectLater( await expectLater(
find.byGame<Forge2DGame>(), find.byGame<Forge2DGame>(),
matchesGoldenFile('golden/spaceship.png'), matchesGoldenFile('golden/spaceship.png'),
); );
}); },
);
}); });
group('SpaceshipEntranceBallContactCallback', () { group('SpaceshipEntranceBallContactCallback', () {

@ -182,28 +182,28 @@ packages:
name: flame name: flame
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0-releasecandidate.6" version: "1.1.0"
flame_bloc: flame_bloc:
dependency: "direct main" dependency: "direct main"
description: description:
name: flame_bloc name: flame_bloc
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.0-releasecandidate.6" version: "1.2.0"
flame_forge2d: flame_forge2d:
dependency: "direct main" dependency: "direct main"
description: description:
name: flame_forge2d name: flame_forge2d
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.9.0-releasecandidate.6" version: "0.10.0"
flame_test: flame_test:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: flame_test name: flame_test
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0" version: "1.3.0"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter
@ -237,7 +237,7 @@ packages:
name: forge2d name: forge2d
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.9.0" version: "0.10.0"
frontend_server_client: frontend_server_client:
dependency: transitive dependency: transitive
description: description:

@ -10,9 +10,9 @@ dependencies:
bloc: ^8.0.2 bloc: ^8.0.2
cloud_firestore: ^3.1.10 cloud_firestore: ^3.1.10
equatable: ^2.0.3 equatable: ^2.0.3
flame: ^1.1.0-releasecandidate.6 flame: ^1.1.0
flame_bloc: ^1.2.0-releasecandidate.6 flame_bloc: ^1.2.0
flame_forge2d: ^0.9.0-releasecandidate.6 flame_forge2d: ^0.10.0
flutter: flutter:
sdk: flutter sdk: flutter
flutter_bloc: ^8.0.1 flutter_bloc: ^8.0.1
@ -30,7 +30,7 @@ dependencies:
dev_dependencies: dev_dependencies:
bloc_test: ^9.0.2 bloc_test: ^9.0.2
flame_test: ^1.1.0 flame_test: ^1.3.0
flutter_test: flutter_test:
sdk: flutter sdk: flutter
mockingjay: ^0.2.0 mockingjay: ^0.2.0

@ -27,11 +27,12 @@ void main() {
final tester = flameBlocTester(gameBloc: () => gameBloc); final tester = flameBlocTester(gameBloc: () => gameBloc);
tester.widgetTest( tester.testGameWidget(
'adds BallLost to GameBloc', 'adds BallLost to GameBloc',
(game, tester) async { setUp: (game, tester) async {
await game.ready(); await game.ready();
},
verify: (game, tester) async {
game.children.whereType<Ball>().first.controller.lost(); game.children.whereType<Ball>().first.controller.lost();
await tester.pump(); await tester.pump();
@ -39,14 +40,15 @@ void main() {
}, },
); );
tester.widgetTest( tester.testGameWidget(
'resets the ball if the game is not over', 'resets the ball if the game is not over',
(game, tester) async { setUp: (game, tester) async {
await game.ready(); await game.ready();
game.children.whereType<Ball>().first.controller.lost(); game.children.whereType<Ball>().first.controller.lost();
await game.ready(); // Making sure that all additions are done await game.ready(); // Making sure that all additions are done
},
verify: (game, tester) async {
expect( expect(
game.children.whereType<Ball>().length, game.children.whereType<Ball>().length,
equals(1), equals(1),
@ -54,9 +56,9 @@ void main() {
}, },
); );
tester.widgetTest( tester.testGameWidget(
'no ball is added on game over', 'no ball is added on game over',
(game, tester) async { setUp: (game, tester) async {
whenListen( whenListen(
gameBloc, gameBloc,
const Stream<GameState>.empty(), const Stream<GameState>.empty(),
@ -72,7 +74,8 @@ void main() {
game.children.whereType<Ball>().first.controller.lost(); game.children.whereType<Ball>().first.controller.lost();
await tester.pump(); await tester.pump();
},
verify: (game, tester) async {
expect( expect(
game.children.whereType<Ball>().length, game.children.whereType<Ball>().length,
equals(0), equals(0),

@ -205,22 +205,24 @@ void main() {
); );
}); });
tester.widgetTest( tester.testGameWidget(
'adds BonusLetterActivated to GameBloc when not activated', 'adds BonusLetterActivated to GameBloc when not activated',
(game, tester) async { setUp: (game, tester) async {
await game.ready(); await game.ready();
final bonusLetter = game.descendants().whereType<BonusLetter>().first; final bonusLetter = game.descendants().whereType<BonusLetter>().first;
bonusLetter.activate(); bonusLetter.activate();
await game.ready(); await game.ready();
await tester.pump(); await tester.pump();
},
verify: (game, tester) async {
verify(() => gameBloc.add(const BonusLetterActivated(0))).called(1); verify(() => gameBloc.add(const BonusLetterActivated(0))).called(1);
}, },
); );
tester.widgetTest( tester.testGameWidget(
"doesn't add BonusLetterActivated to GameBloc when already activated", "doesn't add BonusLetterActivated to GameBloc when already activated",
(game, tester) async { setUp: (game, tester) async {
const state = GameState( const state = GameState(
score: 0, score: 0,
balls: 2, balls: 2,
@ -238,14 +240,15 @@ void main() {
final bonusLetter = game.descendants().whereType<BonusLetter>().first; final bonusLetter = game.descendants().whereType<BonusLetter>().first;
bonusLetter.activate(); bonusLetter.activate();
await game.ready(); await game.ready();
},
verify: (game, tester) async {
verifyNever(() => gameBloc.add(const BonusLetterActivated(0))); verifyNever(() => gameBloc.add(const BonusLetterActivated(0)));
}, },
); );
tester.widgetTest( tester.testGameWidget(
'adds a ColorEffect', 'adds a ColorEffect',
(game, tester) async { setUp: (game, tester) async {
const state = GameState( const state = GameState(
score: 0, score: 0,
balls: 2, balls: 2,
@ -260,7 +263,9 @@ void main() {
bonusLetter.onNewState(state); bonusLetter.onNewState(state);
await tester.pump(); await tester.pump();
},
verify: (game, tester) async {
final bonusLetter = game.descendants().whereType<BonusLetter>().first;
expect( expect(
bonusLetter.children.whereType<ColorEffect>().length, bonusLetter.children.whereType<ColorEffect>().length,
equals(1), equals(1),
@ -268,9 +273,14 @@ void main() {
}, },
); );
tester.widgetTest( tester.testGameWidget(
'only listens when there is a change on the letter status', 'only listens when there is a change on the letter status',
(game, tester) async { setUp: (game, tester) async {
await game.ready();
final bonusLetter = game.descendants().whereType<BonusLetter>().first;
bonusLetter.activate();
},
verify: (game, tester) async {
const state = GameState( const state = GameState(
score: 0, score: 0,
balls: 2, balls: 2,
@ -278,11 +288,7 @@ void main() {
activatedDashNests: {}, activatedDashNests: {},
bonusHistory: [], bonusHistory: [],
); );
await game.ready();
final bonusLetter = game.descendants().whereType<BonusLetter>().first; final bonusLetter = game.descendants().whereType<BonusLetter>().first;
bonusLetter.activate();
expect( expect(
bonusLetter.listenWhen(const GameState.initial(), state), bonusLetter.listenWhen(const GameState.initial(), state),
isTrue, isTrue,

@ -30,8 +30,6 @@ void main() {
'a FlutterSignPost', 'a FlutterSignPost',
(game) async { (game) async {
await game.ready(); await game.ready();
final flutterForest = FlutterForest();
await game.ensureAdd(flutterForest);
expect( expect(
game.descendants().whereType<FlutterSignPost>().length, game.descendants().whereType<FlutterSignPost>().length,
@ -71,10 +69,12 @@ void main() {
); );
}); });
tester.widgetTest( tester.testGameWidget(
'listens when a Bonus.dashNest is added', 'listens when a Bonus.dashNest is added',
(game, tester) async { setUp: (game, tester) async {
await game.ready(); await game.ready();
},
verify: (game, tester) async {
final flutterForest = final flutterForest =
game.descendants().whereType<FlutterForest>().first; game.descendants().whereType<FlutterForest>().first;
@ -85,7 +85,6 @@ void main() {
activatedDashNests: {}, activatedDashNests: {},
bonusHistory: [GameBonus.dashNest], bonusHistory: [GameBonus.dashNest],
); );
expect( expect(
flutterForest.listenWhen(const GameState.initial(), state), flutterForest.listenWhen(const GameState.initial(), state),
isTrue, isTrue,
@ -107,15 +106,16 @@ void main() {
); );
}); });
tester.widgetTest( final dashNestBumper = MockDashNestBumper();
tester.testGameWidget(
'adds a DashNestActivated event with DashNestBumper.id', 'adds a DashNestActivated event with DashNestBumper.id',
(game, tester) async { setUp: (game, tester) async {
final contactCallback = DashNestBumperBallContactCallback();
const id = '0'; const id = '0';
final dashNestBumper = MockDashNestBumper();
when(() => dashNestBumper.id).thenReturn(id); when(() => dashNestBumper.id).thenReturn(id);
when(() => dashNestBumper.gameRef).thenReturn(game); when(() => dashNestBumper.gameRef).thenReturn(game);
},
verify: (game, tester) async {
final contactCallback = DashNestBumperBallContactCallback();
contactCallback.begin(dashNestBumper, MockBall(), MockContact()); contactCallback.begin(dashNestBumper, MockBall(), MockContact());
verify(() => gameBloc.add(DashNestActivated(dashNestBumper.id))) verify(() => gameBloc.add(DashNestActivated(dashNestBumper.id)))

@ -233,7 +233,7 @@ void main() {
plunger: plunger, plunger: plunger,
anchor: anchor, anchor: anchor,
); );
game.world.createJoint(jointDef); game.world.createJoint(PrismaticJoint(jointDef));
expect(jointDef.bodyB, equals(anchor.body)); expect(jointDef.bodyB, equals(anchor.body));
}, },
@ -250,7 +250,7 @@ void main() {
plunger: plunger, plunger: plunger,
anchor: anchor, anchor: anchor,
); );
game.world.createJoint(jointDef); game.world.createJoint(PrismaticJoint(jointDef));
expect(jointDef.enableLimit, isTrue); expect(jointDef.enableLimit, isTrue);
}, },
@ -267,7 +267,7 @@ void main() {
plunger: plunger, plunger: plunger,
anchor: anchor, anchor: anchor,
); );
game.world.createJoint(jointDef); game.world.createJoint(PrismaticJoint(jointDef));
expect(jointDef.lowerTranslation, equals(double.negativeInfinity)); expect(jointDef.lowerTranslation, equals(double.negativeInfinity));
}, },
@ -284,7 +284,7 @@ void main() {
plunger: plunger, plunger: plunger,
anchor: anchor, anchor: anchor,
); );
game.world.createJoint(jointDef); game.world.createJoint(PrismaticJoint(jointDef));
expect(jointDef.collideConnected, isTrue); expect(jointDef.collideConnected, isTrue);
}, },
@ -292,11 +292,11 @@ void main() {
}); });
testRawKeyUpEvents([LogicalKeyboardKey.space], (event) { testRawKeyUpEvents([LogicalKeyboardKey.space], (event) {
flameTester.widgetTest( late final anchor = PlungerAnchor(plunger: plunger);
flameTester.testGameWidget(
'plunger cannot go below anchor', 'plunger cannot go below anchor',
(game, tester) async { setUp: (game, tester) async {
await game.ensureAdd(plunger); await game.ensureAdd(plunger);
final anchor = PlungerAnchor(plunger: plunger);
await game.ensureAdd(anchor); await game.ensureAdd(anchor);
// Giving anchor a shape for the plunger to collide with. // Giving anchor a shape for the plunger to collide with.
@ -306,19 +306,20 @@ void main() {
plunger: plunger, plunger: plunger,
anchor: anchor, anchor: anchor,
); );
game.world.createJoint(jointDef); game.world.createJoint(PrismaticJoint(jointDef));
await tester.pump(const Duration(seconds: 1)); await tester.pump(const Duration(seconds: 1));
},
verify: (game, tester) async {
expect(plunger.body.position.y > anchor.body.position.y, isTrue); expect(plunger.body.position.y > anchor.body.position.y, isTrue);
}, },
); );
}); });
testRawKeyUpEvents([LogicalKeyboardKey.space], (event) { testRawKeyUpEvents([LogicalKeyboardKey.space], (event) {
flameTester.widgetTest( flameTester.testGameWidget(
'plunger cannot excessively exceed starting position', 'plunger cannot excessively exceed starting position',
(game, tester) async { setUp: (game, tester) async {
await game.ensureAdd(plunger); await game.ensureAdd(plunger);
final anchor = PlungerAnchor(plunger: plunger); final anchor = PlungerAnchor(plunger: plunger);
await game.ensureAdd(anchor); await game.ensureAdd(anchor);
@ -327,12 +328,13 @@ void main() {
plunger: plunger, plunger: plunger,
anchor: anchor, anchor: anchor,
); );
game.world.createJoint(jointDef); game.world.createJoint(PrismaticJoint(jointDef));
plunger.body.setTransform(Vector2(0, -1), 0); plunger.body.setTransform(Vector2(0, -1), 0);
await tester.pump(const Duration(seconds: 1)); await tester.pump(const Duration(seconds: 1));
},
verify: (game, tester) async {
expect(plunger.body.position.y < 1, isTrue); expect(plunger.body.position.y < 1, isTrue);
}, },
); );

Loading…
Cancel
Save