From 449c438104b18cde2df2401ae0613ce3b17a09b2 Mon Sep 17 00:00:00 2001 From: Lukas Klingsbo Date: Thu, 8 Aug 2024 23:47:57 +0200 Subject: [PATCH 1/3] fix: Add assertion when trying to set "current" that doesn't exist --- .../src/components/sprite_animation_group_component.dart | 6 ++++++ .../flame/lib/src/components/sprite_group_component.dart | 3 +++ 2 files changed, 9 insertions(+) diff --git a/packages/flame/lib/src/components/sprite_animation_group_component.dart b/packages/flame/lib/src/components/sprite_animation_group_component.dart index c1fa78be37b..e7ff15989d7 100644 --- a/packages/flame/lib/src/components/sprite_animation_group_component.dart +++ b/packages/flame/lib/src/components/sprite_animation_group_component.dart @@ -140,6 +140,12 @@ class SpriteAnimationGroupComponent extends PositionComponent /// /// Will update [size] if [autoResize] is true. set current(T? value) { + assert(_animations != null, 'Animations not set'); + assert( + _animations!.keys.contains(value), + 'Animation not found for key: $value', + ); + final changed = value != current; _current = value; _resizeToSprite(); diff --git a/packages/flame/lib/src/components/sprite_group_component.dart b/packages/flame/lib/src/components/sprite_group_component.dart index aab4d3a07fc..8b77efb2d1a 100644 --- a/packages/flame/lib/src/components/sprite_group_component.dart +++ b/packages/flame/lib/src/components/sprite_group_component.dart @@ -68,6 +68,9 @@ class SpriteGroupComponent extends PositionComponent /// /// Will update [size] if [autoResize] is true. set current(T? value) { + assert(_sprites != null, 'Sprites not set'); + assert(_sprites!.keys.contains(value), 'Sprite not found for key: $value'); + final changed = _current != value; _current = value; _resizeToSprite(); From 36389fb5dcb17a418194e8b01730315ee5a9e2bd Mon Sep 17 00:00:00 2001 From: Lukas Klingsbo Date: Fri, 9 Aug 2024 18:38:42 +0200 Subject: [PATCH 2/3] test: Add assertion tests for current in group components --- .../sprite_animation_group_component_test.dart | 9 +++++++++ .../test/components/sprite_group_component_test.dart | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/packages/flame/test/components/sprite_animation_group_component_test.dart b/packages/flame/test/components/sprite_animation_group_component_test.dart index 187a1df3c70..18948dc041d 100644 --- a/packages/flame/test/components/sprite_animation_group_component_test.dart +++ b/packages/flame/test/components/sprite_animation_group_component_test.dart @@ -45,6 +45,15 @@ Future main() async { component.current = _AnimationState.running; expect(component.animation, animation2); }); + + test('Asserts that map contains key', () { + expect( + () { + SpriteAnimationGroupComponent().current = 'non-existent-key'; + }, + failsAssert('Animation not found for key: non-existent-key'), + ); + }); }); group('SpriteAnimationGroupComponent.shouldRemove', () { diff --git a/packages/flame/test/components/sprite_group_component_test.dart b/packages/flame/test/components/sprite_group_component_test.dart index 73f5117994f..0f566368766 100644 --- a/packages/flame/test/components/sprite_group_component_test.dart +++ b/packages/flame/test/components/sprite_group_component_test.dart @@ -34,6 +34,15 @@ Future main() async { component.current = _SpriteState.running; expect(component.sprite, sprite2); }); + + test('Asserts that map contains key', () { + expect( + () { + SpriteGroupComponent().current = 'non-existent-key'; + }, + failsAssert('Sprite not found for key: non-existent-key'), + ); + }); }); group('SpriteComponent.autoResize', () { From fbc5f8a09811452ff89588a9771efed2e5cd78ae Mon Sep 17 00:00:00 2001 From: Lukas Klingsbo Date: Fri, 9 Aug 2024 19:11:13 +0200 Subject: [PATCH 3/3] test: Add empty map to group component tests --- .../test/components/sprite_animation_group_component_test.dart | 3 ++- .../flame/test/components/sprite_group_component_test.dart | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/flame/test/components/sprite_animation_group_component_test.dart b/packages/flame/test/components/sprite_animation_group_component_test.dart index 18948dc041d..3e2f58040ee 100644 --- a/packages/flame/test/components/sprite_animation_group_component_test.dart +++ b/packages/flame/test/components/sprite_animation_group_component_test.dart @@ -49,7 +49,8 @@ Future main() async { test('Asserts that map contains key', () { expect( () { - SpriteAnimationGroupComponent().current = 'non-existent-key'; + SpriteAnimationGroupComponent(animations: {}).current = + 'non-existent-key'; }, failsAssert('Animation not found for key: non-existent-key'), ); diff --git a/packages/flame/test/components/sprite_group_component_test.dart b/packages/flame/test/components/sprite_group_component_test.dart index 0f566368766..7a9ce07152c 100644 --- a/packages/flame/test/components/sprite_group_component_test.dart +++ b/packages/flame/test/components/sprite_group_component_test.dart @@ -38,7 +38,8 @@ Future main() async { test('Asserts that map contains key', () { expect( () { - SpriteGroupComponent().current = 'non-existent-key'; + SpriteGroupComponent(sprites: {}).current = + 'non-existent-key'; }, failsAssert('Sprite not found for key: non-existent-key'), );