46 lines
1.9 KiB
Dart
46 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:jj_mkvmaker/ui/app_actions.dart';
|
|
|
|
/// 201: 넓은 화면 (폰 가로) 이어도 버튼이 폭을 다 차지해 가운데 (브라우저 주소 칸) 가 모자라면 두 줄로
|
|
void main() {
|
|
Widget bar({double minMiddle = 0}) => MaterialApp(
|
|
home: Scaffold(
|
|
body: Column(children: [
|
|
AppTopBar(
|
|
minMiddleWidth: minMiddle,
|
|
nav: const SizedBox(width: 420, height: 40),
|
|
actions: const SizedBox(width: 360, height: 40),
|
|
middle: const SizedBox(key: ValueKey('mid'), height: 36, child: Text('주소')),
|
|
),
|
|
]),
|
|
),
|
|
);
|
|
|
|
testWidgets('201: 가운데가 최소 폭보다 좁아지면 두 줄 (아래 줄을 가운데가 다 씀)', (tester) async {
|
|
tester.view.physicalSize = const Size(900, 400); // 폰 가로 (compactWidth 720 보다 넓음)
|
|
tester.view.devicePixelRatio = 1;
|
|
addTearDown(tester.view.reset);
|
|
await tester.pumpWidget(bar(minMiddle: 380));
|
|
await tester.pump();
|
|
await tester.pump();
|
|
expect(tester.getSize(find.byKey(const ValueKey('mid'))).width, greaterThan(800));
|
|
// 넓은 화면에서는 한 줄 그대로
|
|
tester.view.physicalSize = const Size(1600, 900);
|
|
await tester.pump();
|
|
await tester.pump();
|
|
expect(tester.getSize(find.byKey(const ValueKey('mid'))).width, lessThan(900));
|
|
expect(tester.getSize(find.byKey(const ValueKey('mid'))).width, greaterThanOrEqualTo(380));
|
|
});
|
|
|
|
testWidgets('201: 최소 폭을 주지 않은 화면은 예전처럼 (폭만으로 정함)', (tester) async {
|
|
tester.view.physicalSize = const Size(900, 400);
|
|
tester.view.devicePixelRatio = 1;
|
|
addTearDown(tester.view.reset);
|
|
await tester.pumpWidget(bar());
|
|
await tester.pump();
|
|
await tester.pump();
|
|
expect(tester.getSize(find.byKey(const ValueKey('mid'))).width, lessThan(380));
|
|
});
|
|
}
|