mirror of
				https://github.com/flame-engine/flame.git
				synced 2025-11-01 01:18:38 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'dart:math';
 | |
| 
 | |
| import 'package:flame/components/position_component.dart';
 | |
| import 'package:flame/effects/effects.dart';
 | |
| import 'package:flame/extensions/vector2.dart';
 | |
| import 'package:flutter_test/flutter_test.dart';
 | |
| 
 | |
| import 'effect_test_utils.dart';
 | |
| 
 | |
| void main() {
 | |
|   final Random random = Random();
 | |
|   Vector2 randomVector2() => (Vector2.random(random) * 100)..round();
 | |
|   final Vector2 argumentSize = randomVector2();
 | |
|   Square component() => Square(size: randomVector2());
 | |
| 
 | |
|   ScaleEffect effect(bool isInfinite, bool isAlternating) {
 | |
|     return ScaleEffect(
 | |
|       size: argumentSize,
 | |
|       duration: random.nextInt(100).toDouble(),
 | |
|       isInfinite: isInfinite,
 | |
|       isAlternating: isAlternating,
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   testWidgets('ScaleEffect can scale', (WidgetTester tester) async {
 | |
|     final ScaleEffect scaleEffect = effect(false, false);
 | |
|     effectTest(
 | |
|       tester,
 | |
|       component(),
 | |
|       scaleEffect,
 | |
|       expectedSize: argumentSize,
 | |
|     );
 | |
|   });
 | |
| 
 | |
|   testWidgets(
 | |
|     'ScaleEffect will stop scaling after it is done',
 | |
|     (WidgetTester tester) async {
 | |
|       final ScaleEffect scaleEffect = effect(false, false);
 | |
|       effectTest(
 | |
|         tester,
 | |
|         component(),
 | |
|         scaleEffect,
 | |
|         expectedSize: argumentSize,
 | |
|         iterations: 1.5,
 | |
|       );
 | |
|     },
 | |
|   );
 | |
| 
 | |
|   testWidgets('ScaleEffect can alternate', (WidgetTester tester) async {
 | |
|     final ScaleEffect scaleEffect = effect(false, true);
 | |
|     final PositionComponent positionComponent = component();
 | |
|     effectTest(
 | |
|       tester,
 | |
|       positionComponent,
 | |
|       scaleEffect,
 | |
|       expectedSize: positionComponent.size.clone(),
 | |
|     );
 | |
|   });
 | |
| 
 | |
|   testWidgets(
 | |
|     'ScaleEffect can alternate and be infinite',
 | |
|     (WidgetTester tester) async {
 | |
|       final ScaleEffect scaleEffect = effect(true, true);
 | |
|       final PositionComponent positionComponent = component();
 | |
|       effectTest(
 | |
|         tester,
 | |
|         positionComponent,
 | |
|         scaleEffect,
 | |
|         expectedSize: positionComponent.size.clone(),
 | |
|         iterations: 1.0,
 | |
|         shouldFinish: false,
 | |
|       );
 | |
|     },
 | |
|   );
 | |
| 
 | |
|   testWidgets('ScaleEffect alternation can peak', (WidgetTester tester) async {
 | |
|     final ScaleEffect scaleEffect = effect(false, true);
 | |
|     final PositionComponent positionComponent = component();
 | |
|     effectTest(
 | |
|       tester,
 | |
|       positionComponent,
 | |
|       scaleEffect,
 | |
|       expectedSize: argumentSize,
 | |
|       shouldFinish: false,
 | |
|       iterations: 0.5,
 | |
|     );
 | |
|   });
 | |
| 
 | |
|   testWidgets('ScaleEffect can be infinite', (WidgetTester tester) async {
 | |
|     final ScaleEffect scaleEffect = effect(true, false);
 | |
|     final PositionComponent positionComponent = component();
 | |
|     effectTest(
 | |
|       tester,
 | |
|       positionComponent,
 | |
|       scaleEffect,
 | |
|       expectedSize: argumentSize,
 | |
|       iterations: 3.0,
 | |
|       shouldFinish: false,
 | |
|     );
 | |
|   });
 | |
| }
 | 
