diff --git a/packages/flame/test/game/game_widget/game_widget_pause_test.dart b/packages/flame/test/game/game_widget/game_widget_pause_test.dart index 06e4e44d2a5..f802a40ad89 100644 --- a/packages/flame/test/game/game_widget/game_widget_pause_test.dart +++ b/packages/flame/test/game/game_widget/game_widget_pause_test.dart @@ -53,10 +53,12 @@ class _WrapperState extends State<_Wrapper> { class _MyGame extends FlameGame { int callCount = 0; + double timePassed = 0; @override void update(double dt) { super.update(dt); + timePassed += dt; callCount++; } @@ -150,4 +152,29 @@ void main() { expect(game.callCount, equals(2)); }, ); + + myGame().testGameWidget( + 'will not add time to dt when paused', + verify: (game, tester) async { + const frameLength = Duration(seconds: 1); + // Run two frames. + await tester.pump(frameLength); + await tester.pump(frameLength); + + game.pauseEngine(); + + // Run two frames when the engine is paused. + await tester.pump(frameLength); + await tester.pump(frameLength); + + game.resumeEngine(); + // This time will be thrown away since the ticker hasn't received its + // first timestamp yet. + await tester.pump(const Duration(seconds: 100)); + await tester.pump(frameLength); + + expect(game.callCount, equals(4)); + expect(game.timePassed, equals(3)); + }, + ); }