mirror of https://github.com/flutter/pinball.git
parent
e989f87978
commit
4bb2f25617
@ -1,17 +1,37 @@
|
||||
// ignore_for_file: public_member_api_docs
|
||||
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
part 'multiball_state.dart';
|
||||
|
||||
class MultiballCubit extends Cubit<MultiballState> {
|
||||
MultiballCubit() : super(MultiballState.dimmed);
|
||||
MultiballCubit() : super(MultiballState.initial());
|
||||
|
||||
void animate() {
|
||||
emit(MultiballState.lit);
|
||||
void onAnimate() {
|
||||
emit(
|
||||
state.copyWith(animationState: MultiballAnimationState.animated),
|
||||
);
|
||||
}
|
||||
|
||||
void onBlinked() {
|
||||
emit(MultiballState.dimmed);
|
||||
void onStop() {
|
||||
emit(
|
||||
state.copyWith(animationState: MultiballAnimationState.stopped),
|
||||
);
|
||||
}
|
||||
|
||||
void onBlink() {
|
||||
switch (state.lightState) {
|
||||
case MultiballLightState.lit:
|
||||
emit(
|
||||
state.copyWith(lightState: MultiballLightState.dimmed),
|
||||
);
|
||||
break;
|
||||
case MultiballLightState.dimmed:
|
||||
emit(
|
||||
state.copyWith(lightState: MultiballLightState.lit),
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,76 @@
|
||||
// ignore_for_file: prefer_const_constructors
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:pinball_components/src/pinball_components.dart';
|
||||
|
||||
void main() {
|
||||
group('MultiballState', () {
|
||||
test('supports value equality', () {
|
||||
expect(
|
||||
MultiballState(
|
||||
animationState: MultiballAnimationState.stopped,
|
||||
lightState: MultiballLightState.dimmed,
|
||||
),
|
||||
equals(
|
||||
MultiballState(
|
||||
animationState: MultiballAnimationState.stopped,
|
||||
lightState: MultiballLightState.dimmed,
|
||||
),
|
||||
),
|
||||
);
|
||||
});
|
||||
|
||||
group('constructor', () {
|
||||
test('can be instantiated', () {
|
||||
expect(
|
||||
MultiballState(
|
||||
animationState: MultiballAnimationState.stopped,
|
||||
lightState: MultiballLightState.dimmed,
|
||||
),
|
||||
isNotNull,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
group('copyWith', () {
|
||||
test(
|
||||
'copies correctly '
|
||||
'when no argument specified',
|
||||
() {
|
||||
final multiballState = MultiballState(
|
||||
animationState: MultiballAnimationState.stopped,
|
||||
lightState: MultiballLightState.dimmed,
|
||||
);
|
||||
expect(
|
||||
multiballState.copyWith(),
|
||||
equals(multiballState),
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
test(
|
||||
'copies correctly '
|
||||
'when all arguments specified',
|
||||
() {
|
||||
final multiballState = MultiballState(
|
||||
animationState: MultiballAnimationState.stopped,
|
||||
lightState: MultiballLightState.dimmed,
|
||||
);
|
||||
final otherMultiballState = MultiballState(
|
||||
animationState: MultiballAnimationState.animated,
|
||||
lightState: MultiballLightState.lit,
|
||||
);
|
||||
expect(multiballState, isNot(equals(otherMultiballState)));
|
||||
|
||||
expect(
|
||||
multiballState.copyWith(
|
||||
animationState: MultiballAnimationState.animated,
|
||||
lightState: MultiballLightState.lit,
|
||||
),
|
||||
equals(otherMultiballState),
|
||||
);
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
Loading…
Reference in new issue