refactor: coverage for multiplier

pull/231/head
RuiAlonso 3 years ago
parent 07583cd5fb
commit 5ab63fd906

@ -11,7 +11,11 @@ class Multiplier extends Component {
required int value,
required Vector2 position,
double rotation = 0,
}) : _value = value,
}) : assert(
2 <= value && value <= 6,
'multiplier value must be in range 2 <= value <= 6',
),
_value = value,
_position = position,
_rotation = rotation,
super();
@ -35,8 +39,8 @@ class Multiplier extends Component {
Future<void> onLoad() async {
await super.onLoad();
String onAssetPath;
String offAssetPath;
String? onAssetPath;
String? offAssetPath;
switch (_value) {
case 2:
@ -59,16 +63,12 @@ class Multiplier extends Component {
onAssetPath = Assets.images.multiplier.x6.active.keyName;
offAssetPath = Assets.images.multiplier.x6.inactive.keyName;
break;
default:
onAssetPath = Assets.images.multiplier.x2.active.keyName;
offAssetPath = Assets.images.multiplier.x2.inactive.keyName;
break;
}
_sprite = MultiplierSpriteGroupComponent(
position: _position,
onAssetPath: onAssetPath,
offAssetPath: offAssetPath,
onAssetPath: onAssetPath!,
offAssetPath: offAssetPath!,
)..angle = _rotation;
await add(_sprite);

@ -24,6 +24,23 @@ void main() {
];
final flameTester = FlameTester(() => TestGame(assets));
test('fails if multiplier value is not in range', () {
expect(
() => Multiplier(
value: 1,
position: Vector2.zero(),
),
throwsA(isA<AssertionError>()),
);
expect(
() => Multiplier(
value: 7,
position: Vector2.zero(),
),
throwsA(isA<AssertionError>()),
);
});
group('renders correctly', () {
flameTester.testGameWidget(
'x2 active',
@ -86,6 +103,37 @@ void main() {
},
);
flameTester.testGameWidget(
'x2 deactivated when different multiply value',
setUp: (game, tester) async {
await game.images.loadAll(assets);
final multiplier = Multiplier(
value: 2,
position: Vector2.zero(),
);
await game.ensureAdd(multiplier);
multiplier.toggle(1);
await tester.pump();
expect(
multiplier.children
.whereType<MultiplierSpriteGroupComponent>()
.first
.current,
MultiplierSpriteState.inactive,
);
game.camera.followVector2(Vector2.zero());
},
verify: (game, tester) async {
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/multipliers/x2-inactive.png'),
);
},
);
flameTester.testGameWidget(
'x3 active',
setUp: (game, tester) async {
@ -148,6 +196,37 @@ void main() {
},
);
flameTester.testGameWidget(
'x3 deactivated when different multiply value',
setUp: (game, tester) async {
await game.images.loadAll(assets);
final multiplier = Multiplier(
value: 3,
position: Vector2.zero(),
);
await game.ensureAdd(multiplier);
multiplier.toggle(1);
await tester.pump();
expect(
multiplier.children
.whereType<MultiplierSpriteGroupComponent>()
.first
.current,
MultiplierSpriteState.inactive,
);
game.camera.followVector2(Vector2.zero());
},
verify: (game, tester) async {
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/multipliers/x3-inactive.png'),
);
},
);
flameTester.testGameWidget(
'x4 active',
setUp: (game, tester) async {
@ -210,6 +289,37 @@ void main() {
},
);
flameTester.testGameWidget(
'x4 deactivated when different multiply value',
setUp: (game, tester) async {
await game.images.loadAll(assets);
final multiplier = Multiplier(
value: 4,
position: Vector2.zero(),
);
await game.ensureAdd(multiplier);
multiplier.toggle(1);
await tester.pump();
expect(
multiplier.children
.whereType<MultiplierSpriteGroupComponent>()
.first
.current,
MultiplierSpriteState.inactive,
);
game.camera.followVector2(Vector2.zero());
},
verify: (game, tester) async {
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/multipliers/x4-inactive.png'),
);
},
);
flameTester.testGameWidget(
'x5 active',
setUp: (game, tester) async {
@ -272,6 +382,37 @@ void main() {
},
);
flameTester.testGameWidget(
'x5 deactivated when different multiply value',
setUp: (game, tester) async {
await game.images.loadAll(assets);
final multiplier = Multiplier(
value: 5,
position: Vector2.zero(),
);
await game.ensureAdd(multiplier);
multiplier.toggle(1);
await tester.pump();
expect(
multiplier.children
.whereType<MultiplierSpriteGroupComponent>()
.first
.current,
MultiplierSpriteState.inactive,
);
game.camera.followVector2(Vector2.zero());
},
verify: (game, tester) async {
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/multipliers/x5-inactive.png'),
);
},
);
flameTester.testGameWidget(
'x6 active',
setUp: (game, tester) async {
@ -333,6 +474,37 @@ void main() {
);
},
);
flameTester.testGameWidget(
'x6 deactivated when different multiply value',
setUp: (game, tester) async {
await game.images.loadAll(assets);
final multiplier = Multiplier(
value: 6,
position: Vector2.zero(),
);
await game.ensureAdd(multiplier);
multiplier.toggle(1);
await tester.pump();
expect(
multiplier.children
.whereType<MultiplierSpriteGroupComponent>()
.first
.current,
MultiplierSpriteState.inactive,
);
game.camera.followVector2(Vector2.zero());
},
verify: (game, tester) async {
await expectLater(
find.byGame<TestGame>(),
matchesGoldenFile('golden/multipliers/x6-inactive.png'),
);
},
);
});
});
}

Loading…
Cancel
Save