refactor: removed extension for index

pull/172/head
alestiago 4 years ago
parent dd9b074d3f
commit f61475cac9

@ -4,38 +4,15 @@ import 'package:flame_forge2d/flame_forge2d.dart';
import 'package:flutter/material.dart';
import 'package:pinball_components/pinball_components.dart';
enum GoogleLetterOrder {
first,
second,
third,
fourth,
fifth,
}
extension on GoogleLetterOrder {
String get path {
switch (this) {
case GoogleLetterOrder.first:
return Assets.images.googleWord.letter1.keyName;
case GoogleLetterOrder.second:
return Assets.images.googleWord.letter2.keyName;
case GoogleLetterOrder.third:
return Assets.images.googleWord.letter3.keyName;
case GoogleLetterOrder.fourth:
return Assets.images.googleWord.letter4.keyName;
case GoogleLetterOrder.fifth:
return Assets.images.googleWord.letter5.keyName;
}
}
}
/// {@template google_letter}
/// Circular sensor that represents "Google" letter.
/// {@endtemplate}
class GoogleLetter extends BodyComponent with InitialPosition {
/// {@macro google_letter}
GoogleLetter(GoogleLetterOrder order)
: _sprite = _GoogleLetterSprite(order.path);
GoogleLetter(int index)
: _sprite = _GoogleLetterSprite(
_GoogleLetterSprite.spritePaths[index],
);
final _GoogleLetterSprite _sprite;
@ -70,6 +47,15 @@ class GoogleLetter extends BodyComponent with InitialPosition {
class _GoogleLetterSprite extends SpriteComponent with HasGameRef {
_GoogleLetterSprite(String path) : _path = path;
static final spritePaths = [
Assets.images.googleWord.letter1.keyName,
Assets.images.googleWord.letter2.keyName,
Assets.images.googleWord.letter3.keyName,
Assets.images.googleWord.letter4.keyName,
Assets.images.googleWord.letter5.keyName,
Assets.images.googleWord.letter6.keyName,
];
final String _path;
// TODO(alestiago): Correctly implement activate and deactivate once the

@ -20,7 +20,7 @@ class GoogleLetterGame extends BasicBallGame {
addContactCallback(_BallGoogleLetterContactCallback());
camera.followVector2(Vector2.zero());
await add(GoogleLetter(GoogleLetterOrder.first));
await add(GoogleLetter(0));
await traceAllBodies();
}

@ -13,9 +13,9 @@ void main() {
group('Google Letter', () {
flameTester.test(
'first loads correctly',
'0th loads correctly',
(game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.first);
final googleLetter = GoogleLetter(0);
await game.ready();
await game.ensureAdd(googleLetter);
@ -24,9 +24,9 @@ void main() {
);
flameTester.test(
'second loads correctly',
'1st loads correctly',
(game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.second);
final googleLetter = GoogleLetter(1);
await game.ready();
await game.ensureAdd(googleLetter);
@ -35,9 +35,9 @@ void main() {
);
flameTester.test(
'third loads correctly',
'2nd loads correctly',
(game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.third);
final googleLetter = GoogleLetter(2);
await game.ready();
await game.ensureAdd(googleLetter);
@ -46,9 +46,9 @@ void main() {
);
flameTester.test(
'fourth loads correctly',
'3d loads correctly',
(game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.fourth);
final googleLetter = GoogleLetter(3);
await game.ready();
await game.ensureAdd(googleLetter);
@ -57,9 +57,9 @@ void main() {
);
flameTester.test(
'fifth loads correctly',
'4th loads correctly',
(game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.fifth);
final googleLetter = GoogleLetter(4);
await game.ready();
await game.ensureAdd(googleLetter);
@ -67,15 +67,31 @@ void main() {
},
);
flameTester.test(
'5th loads correctly',
(game) async {
final googleLetter = GoogleLetter(5);
await game.ready();
await game.ensureAdd(googleLetter);
expect(game.contains(googleLetter), isTrue);
},
);
test('throws error when index out of range', () {
expect(() => GoogleLetter(-1), throwsA(isA<RangeError>()));
expect(() => GoogleLetter(6), throwsA(isA<RangeError>()));
});
group('activate', () {
flameTester.test('returns normally', (game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.first);
final googleLetter = GoogleLetter(0);
await game.ensureAdd(googleLetter);
await expectLater(googleLetter.activate, returnsNormally);
});
flameTester.test('adds an Effect', (game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.first);
final googleLetter = GoogleLetter(0);
await game.ensureAdd(googleLetter);
await googleLetter.activate();
await game.ready();
@ -89,13 +105,13 @@ void main() {
group('deactivate', () {
flameTester.test('returns normally', (game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.first);
final googleLetter = GoogleLetter(0);
await game.ensureAdd(googleLetter);
await expectLater(googleLetter.deactivate, returnsNormally);
});
flameTester.test('adds an Effect', (game) async {
final googleLetter = GoogleLetter(GoogleLetterOrder.first);
final googleLetter = GoogleLetter(0);
await game.ensureAdd(googleLetter);
await googleLetter.activate();
await game.ready();

Loading…
Cancel
Save