Zap·후원 FPI 귀속 · 이클립스 방어 Shake 전용 · 가입 팬덤만 방어
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:sensors_plus/sensors_plus.dart' show SensorInterval;
|
||||
@@ -24,6 +26,9 @@ Future<void> _pump(WidgetTester tester, Widget home) async {
|
||||
}
|
||||
}
|
||||
|
||||
/// 가짜 가속도 센서 — 흔들기 한 번마다 이벤트 하나.
|
||||
final _shakes = StreamController<DateTime>.broadcast();
|
||||
|
||||
void main() {
|
||||
group('흔들기 판정 (iOS 16 · Galaxy 63 실기기 편차)', () {
|
||||
test('표본 주기를 명시한다 — 기본 200ms(iOS 5Hz)를 쓰지 않는다', () {
|
||||
@@ -147,10 +152,10 @@ void main() {
|
||||
),
|
||||
);
|
||||
addTearDown(repo.dispose);
|
||||
await _pump(tester, EclipseDefendScreen(repository: repo, fandomId: 'bts'));
|
||||
expect(find.text('휴대폰을 흔들어\n행성 운석 충돌을 막으세요!'), findsOneWidget);
|
||||
await _pump(tester, EclipseDefendScreen(repository: repo, fandomId: 'bts', shakes: () => _shakes.stream));
|
||||
expect(find.text('휴대폰을 흔들어\n이클립스를 막으세요!'), findsOneWidget);
|
||||
expect(find.textContaining('이클립스 발생 남은 시간'), findsOneWidget);
|
||||
expect(find.text('흔들기 어려우면 눌러서 참여'), findsNothing);
|
||||
expect(find.text('이 기기는 흔들기 방어를 지원하지 않아요'), findsNothing);
|
||||
});
|
||||
|
||||
testWidgets('발생 3초 전부터 오버레이 카운트다운', (tester) async {
|
||||
@@ -162,8 +167,8 @@ void main() {
|
||||
),
|
||||
);
|
||||
addTearDown(repo.dispose);
|
||||
await _pump(tester, EclipseDefendScreen(repository: repo, fandomId: 'bts'));
|
||||
expect(find.text('행성 운석 충돌이\n시작됩니다!'), findsOneWidget);
|
||||
await _pump(tester, EclipseDefendScreen(repository: repo, fandomId: 'bts', shakes: () => _shakes.stream));
|
||||
expect(find.text('행성에 이클립스가\n시작됩니다!'), findsOneWidget);
|
||||
expect(find.text('3'), findsOneWidget);
|
||||
});
|
||||
|
||||
@@ -177,12 +182,12 @@ void main() {
|
||||
),
|
||||
);
|
||||
addTearDown(repo.dispose);
|
||||
await _pump(tester, EclipseDefendScreen(repository: repo, fandomId: 'bts'));
|
||||
await _pump(tester, EclipseDefendScreen(repository: repo, fandomId: 'bts', shakes: () => _shakes.stream));
|
||||
expect(find.textContaining('초간 휴대폰을 흔들어'), findsOneWidget);
|
||||
expect(find.text('내 유효 Shake 0 / 60회'), findsOneWidget);
|
||||
expect(find.text('유효 참여 3 / 10명'), findsOneWidget);
|
||||
|
||||
await tester.tap(find.text('흔들기 어려우면 눌러서 참여'));
|
||||
_shakes.add(DateTime.now());
|
||||
for (var i = 0; i < 8; i++) {
|
||||
await tester.pump(const Duration(milliseconds: 120));
|
||||
}
|
||||
@@ -196,8 +201,8 @@ void main() {
|
||||
state: eclipseFixture(scheduled: true, startAt: startAt, endsAt: endsAt),
|
||||
);
|
||||
addTearDown(repo.dispose);
|
||||
await _pump(tester, EclipseDefendScreen(repository: repo, fandomId: 'bts'));
|
||||
await tester.tap(find.text('흔들기 어려우면 눌러서 참여'));
|
||||
await _pump(tester, EclipseDefendScreen(repository: repo, fandomId: 'bts', shakes: () => _shakes.stream));
|
||||
_shakes.add(DateTime.now());
|
||||
for (var i = 0; i < 8; i++) {
|
||||
await tester.pump(const Duration(milliseconds: 120));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user