1+ import 'dart:async' ;
12import 'dart:io' ;
23import 'dart:ui' ;
34
@@ -19,110 +20,163 @@ Future<void> main() async {
1920 },
2021 );
2122
22- testWidgets ('getBounds' , (tester) async {
23- expect (
24- await windowManager.getBounds (),
25- isA <Rect >().having ((r) => r.size, 'size' , const Size (640 , 480 )),
23+ group ('Getters' , () {
24+ testWidgets ('getBounds' , (tester) async {
25+ expect (
26+ await windowManager.getBounds (),
27+ isA <Rect >().having ((r) => r.size, 'size' , const Size (640 , 480 )),
28+ );
29+ });
30+
31+ testWidgets (
32+ 'isAlwaysOnBottom' ,
33+ (tester) async {
34+ expect (await windowManager.isAlwaysOnBottom (), isFalse);
35+ },
36+ skip: Platform .isMacOS || Platform .isWindows,
2637 );
27- });
28-
29- testWidgets (
30- 'isAlwaysOnBottom' ,
31- (tester) async {
32- expect (await windowManager.isAlwaysOnBottom (), isFalse);
33- },
34- skip: Platform .isMacOS || Platform .isWindows,
35- );
3638
37- testWidgets ('isAlwaysOnTop' , (tester) async {
38- expect (await windowManager.isAlwaysOnTop (), isFalse);
39- });
39+ testWidgets ('isAlwaysOnTop' , (tester) async {
40+ expect (await windowManager.isAlwaysOnTop (), isFalse);
41+ });
4042
41- testWidgets ('isClosable' , (tester) async {
42- expect (await windowManager.isClosable (), isTrue);
43- });
43+ testWidgets ('isClosable' , (tester) async {
44+ expect (await windowManager.isClosable (), isTrue);
45+ });
4446
45- testWidgets ('isFocused' , (tester) async {
46- expect (await windowManager.isFocused (), isTrue);
47- });
47+ testWidgets ('isFocused' , (tester) async {
48+ expect (await windowManager.isFocused (), isTrue);
49+ });
4850
49- testWidgets ('isFullScreen' , (tester) async {
50- expect (await windowManager.isFullScreen (), isFalse);
51- });
51+ testWidgets ('isFullScreen' , (tester) async {
52+ expect (await windowManager.isFullScreen (), isFalse);
53+ });
5254
53- testWidgets (
54- 'hasShadow' ,
55- (tester) async {
56- expect (await windowManager.hasShadow (), isTrue);
57- },
58- skip: Platform .isLinux,
59- );
55+ testWidgets (
56+ 'hasShadow' ,
57+ (tester) async {
58+ expect (await windowManager.hasShadow (), isTrue);
59+ },
60+ skip: Platform .isLinux,
61+ );
6062
61- testWidgets ('isMaximizable' , (tester) async {
62- expect (await windowManager.isMaximizable (), isTrue);
63- });
63+ testWidgets ('isMaximizable' , (tester) async {
64+ expect (await windowManager.isMaximizable (), isTrue);
65+ });
6466
65- testWidgets ('isMaximized' , (tester) async {
66- expect (await windowManager.isMaximized (), isFalse);
67- });
67+ testWidgets ('isMaximized' , (tester) async {
68+ expect (await windowManager.isMaximized (), isFalse);
69+ });
6870
69- testWidgets (
70- 'isMinimizable' ,
71- (tester) async {
72- expect (await windowManager.isMinimizable (), isTrue);
73- },
74- skip: Platform .isMacOS,
75- );
71+ testWidgets (
72+ 'isMinimizable' ,
73+ (tester) async {
74+ expect (await windowManager.isMinimizable (), isTrue);
75+ },
76+ skip: Platform .isMacOS,
77+ );
7678
77- testWidgets ('isMinimized' , (tester) async {
78- expect (await windowManager.isMinimized (), isFalse);
79- });
79+ testWidgets ('isMinimized' , (tester) async {
80+ expect (await windowManager.isMinimized (), isFalse);
81+ });
8082
81- testWidgets (
82- 'isMovable' ,
83- (tester) async {
84- expect (await windowManager.isMovable (), isTrue);
85- },
86- skip: Platform .isLinux || Platform .isWindows,
87- );
83+ testWidgets (
84+ 'isMovable' ,
85+ (tester) async {
86+ expect (await windowManager.isMovable (), isTrue);
87+ },
88+ skip: Platform .isLinux || Platform .isWindows,
89+ );
8890
89- testWidgets ('getOpacity' , (tester) async {
90- expect (await windowManager.getOpacity (), 1.0 );
91- });
91+ testWidgets ('getOpacity' , (tester) async {
92+ expect (await windowManager.getOpacity (), 1.0 );
93+ });
9294
93- testWidgets ('getPosition' , (tester) async {
94- expect (await windowManager.getPosition (), isA <Offset >());
95- });
95+ testWidgets ('getPosition' , (tester) async {
96+ expect (await windowManager.getPosition (), isA <Offset >());
97+ });
9698
97- testWidgets ('isPreventClose' , (tester) async {
98- expect (await windowManager.isPreventClose (), isFalse);
99- });
99+ testWidgets ('isPreventClose' , (tester) async {
100+ expect (await windowManager.isPreventClose (), isFalse);
101+ });
100102
101- testWidgets ('isResizable' , (tester) async {
102- expect (await windowManager.isResizable (), isTrue);
103- });
103+ testWidgets ('isResizable' , (tester) async {
104+ expect (await windowManager.isResizable (), isTrue);
105+ });
104106
105- testWidgets ('getSize' , (tester) async {
106- expect (await windowManager.getSize (), const Size (640 , 480 ));
107- });
107+ testWidgets ('getSize' , (tester) async {
108+ expect (await windowManager.getSize (), const Size (640 , 480 ));
109+ });
108110
109- testWidgets (
110- 'isSkipTaskbar' ,
111- (tester) async {
112- expect (await windowManager.isSkipTaskbar (), isFalse);
113- },
114- skip: Platform .isWindows,
115- );
111+ testWidgets (
112+ 'isSkipTaskbar' ,
113+ (tester) async {
114+ expect (await windowManager.isSkipTaskbar (), isFalse);
115+ },
116+ skip: Platform .isWindows,
117+ );
116118
117- testWidgets ('getTitle' , (tester) async {
118- expect (await windowManager.getTitle (), 'window_manager_test' );
119+ testWidgets ('getTitle' , (tester) async {
120+ expect (await windowManager.getTitle (), 'window_manager_test' );
121+ });
122+
123+ testWidgets ('getTitleBarHeight' , (tester) async {
124+ expect (await windowManager.getTitleBarHeight (), isNonNegative);
125+ });
126+
127+ testWidgets ('isVisible' , (tester) async {
128+ expect (await windowManager.isVisible (), isTrue);
129+ });
130+ });
131+
132+ group ('Setters and Listeners' , () {
133+ late StreamController <String > streamController;
134+ late WindowListener windowListener;
135+
136+ setUp (() async {
137+ streamController = StreamController <String >();
138+ windowListener = WindowListenerImpl (streamController: streamController);
139+ windowManager.addListener (windowListener);
140+ });
141+
142+ tearDown (() async {
143+ windowManager.removeListener (windowListener);
144+ await streamController.close ();
145+ });
146+
147+ testWidgets ('minimize & restore' , (tester) async {
148+ await windowManager.minimize ();
149+ await windowManager.restore ();
150+ expect (
151+ streamController.stream,
152+ emitsInOrder ([
153+ emitsThrough ('minimize' ),
154+ emitsThrough ('restore' ),
155+ ]),
156+ );
157+ });
158+
159+ testWidgets ('maximize & unmaximize' , (tester) async {
160+ await windowManager.maximize ();
161+ await windowManager.unmaximize ();
162+ expect (
163+ streamController.stream,
164+ emitsInOrder ([
165+ emitsThrough ('maximize' ),
166+ emitsThrough ('unmaximize' ),
167+ ]),
168+ );
169+ });
119170 });
171+ }
120172
121- testWidgets ('getTitleBarHeight' , (tester) async {
122- expect (await windowManager.getTitleBarHeight (), isNonNegative);
123- });
173+ class WindowListenerImpl with WindowListener {
174+ WindowListenerImpl ({required this .streamController});
124175
125- testWidgets ('isVisible' , (tester) async {
126- expect (await windowManager.isVisible (), isTrue);
127- });
176+ final StreamController <String > streamController;
177+
178+ @override
179+ void onWindowEvent (String eventName) {
180+ streamController.add (eventName);
181+ }
128182}
0 commit comments