Files
flame/test/effects/move_effect_test.dart
Renan ccee9a466b Move files to src and comply with the dart package layout convention (#621)
* 👌 Use `Offset` type directly in `JoystickAction.update` calculations (#631)

* Move files to src and comply with the dart package layout convention

* Fixing widgets example

Co-authored-by: Serge Matveenko <lig@countzero.co>
Co-authored-by: Erick Zanardo <erickzanardoo@gmail.com>
2021-01-20 09:05:43 -03:00

94 lines
2.4 KiB
Dart

import 'dart:math';
import 'package:flame/components.dart';
import 'package:flame/effects.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 List<Vector2> path = List.generate(3, (i) => randomVector2());
TestComponent component() => TestComponent(position: randomVector2());
MoveEffect effect({bool isInfinite = false, bool isAlternating = false}) {
return MoveEffect(
path: path,
duration: 1 + random.nextInt(100).toDouble(),
isInfinite: isInfinite,
isAlternating: isAlternating,
);
}
testWidgets('MoveEffect can move', (WidgetTester tester) async {
effectTest(
tester,
component(),
effect(),
expectedPosition: path.last,
);
});
testWidgets(
'MoveEffect will stop moving after it is done',
(WidgetTester tester) async {
effectTest(
tester,
component(),
effect(),
expectedPosition: path.last,
iterations: 1.5,
);
},
);
testWidgets('MoveEffect can alternate', (WidgetTester tester) async {
final PositionComponent positionComponent = component();
effectTest(
tester,
positionComponent,
effect(isAlternating: true),
expectedPosition: positionComponent.position.clone(),
);
});
testWidgets(
'MoveEffect can alternate and be infinite',
(WidgetTester tester) async {
final PositionComponent positionComponent = component();
effectTest(
tester,
positionComponent,
effect(isInfinite: true, isAlternating: true),
expectedPosition: positionComponent.position.clone(),
shouldComplete: false,
);
},
);
testWidgets('MoveEffect alternation can peak', (WidgetTester tester) async {
final PositionComponent positionComponent = component();
effectTest(
tester,
positionComponent,
effect(isAlternating: true),
expectedPosition: path.last,
shouldComplete: false,
iterations: 0.5,
);
});
testWidgets('MoveEffect can be infinite', (WidgetTester tester) async {
final PositionComponent positionComponent = component();
effectTest(
tester,
positionComponent,
effect(isInfinite: true),
expectedPosition: path.last,
iterations: 3.0,
shouldComplete: false,
);
});
}