diff --git a/packages/window_manager/example/integration_test/window_manager_test.dart b/packages/window_manager/example/integration_test/window_manager_test.dart index 5901027e..830110a7 100644 --- a/packages/window_manager/example/integration_test/window_manager_test.dart +++ b/packages/window_manager/example/integration_test/window_manager_test.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'dart:io'; import 'dart:ui'; @@ -19,110 +20,163 @@ Future main() async { }, ); - testWidgets('getBounds', (tester) async { - expect( - await windowManager.getBounds(), - isA().having((r) => r.size, 'size', const Size(640, 480)), + group('Getters', () { + testWidgets('getBounds', (tester) async { + expect( + await windowManager.getBounds(), + isA().having((r) => r.size, 'size', const Size(640, 480)), + ); + }); + + testWidgets( + 'isAlwaysOnBottom', + (tester) async { + expect(await windowManager.isAlwaysOnBottom(), isFalse); + }, + skip: Platform.isMacOS || Platform.isWindows, ); - }); - - testWidgets( - 'isAlwaysOnBottom', - (tester) async { - expect(await windowManager.isAlwaysOnBottom(), isFalse); - }, - skip: Platform.isMacOS || Platform.isWindows, - ); - testWidgets('isAlwaysOnTop', (tester) async { - expect(await windowManager.isAlwaysOnTop(), isFalse); - }); + testWidgets('isAlwaysOnTop', (tester) async { + expect(await windowManager.isAlwaysOnTop(), isFalse); + }); - testWidgets('isClosable', (tester) async { - expect(await windowManager.isClosable(), isTrue); - }); + testWidgets('isClosable', (tester) async { + expect(await windowManager.isClosable(), isTrue); + }); - testWidgets('isFocused', (tester) async { - expect(await windowManager.isFocused(), isTrue); - }); + testWidgets('isFocused', (tester) async { + expect(await windowManager.isFocused(), isTrue); + }); - testWidgets('isFullScreen', (tester) async { - expect(await windowManager.isFullScreen(), isFalse); - }); + testWidgets('isFullScreen', (tester) async { + expect(await windowManager.isFullScreen(), isFalse); + }); - testWidgets( - 'hasShadow', - (tester) async { - expect(await windowManager.hasShadow(), isTrue); - }, - skip: Platform.isLinux, - ); + testWidgets( + 'hasShadow', + (tester) async { + expect(await windowManager.hasShadow(), isTrue); + }, + skip: Platform.isLinux, + ); - testWidgets('isMaximizable', (tester) async { - expect(await windowManager.isMaximizable(), isTrue); - }); + testWidgets('isMaximizable', (tester) async { + expect(await windowManager.isMaximizable(), isTrue); + }); - testWidgets('isMaximized', (tester) async { - expect(await windowManager.isMaximized(), isFalse); - }); + testWidgets('isMaximized', (tester) async { + expect(await windowManager.isMaximized(), isFalse); + }); - testWidgets( - 'isMinimizable', - (tester) async { - expect(await windowManager.isMinimizable(), isTrue); - }, - skip: Platform.isMacOS, - ); + testWidgets( + 'isMinimizable', + (tester) async { + expect(await windowManager.isMinimizable(), isTrue); + }, + skip: Platform.isMacOS, + ); - testWidgets('isMinimized', (tester) async { - expect(await windowManager.isMinimized(), isFalse); - }); + testWidgets('isMinimized', (tester) async { + expect(await windowManager.isMinimized(), isFalse); + }); - testWidgets( - 'isMovable', - (tester) async { - expect(await windowManager.isMovable(), isTrue); - }, - skip: Platform.isLinux || Platform.isWindows, - ); + testWidgets( + 'isMovable', + (tester) async { + expect(await windowManager.isMovable(), isTrue); + }, + skip: Platform.isLinux || Platform.isWindows, + ); - testWidgets('getOpacity', (tester) async { - expect(await windowManager.getOpacity(), 1.0); - }); + testWidgets('getOpacity', (tester) async { + expect(await windowManager.getOpacity(), 1.0); + }); - testWidgets('getPosition', (tester) async { - expect(await windowManager.getPosition(), isA()); - }); + testWidgets('getPosition', (tester) async { + expect(await windowManager.getPosition(), isA()); + }); - testWidgets('isPreventClose', (tester) async { - expect(await windowManager.isPreventClose(), isFalse); - }); + testWidgets('isPreventClose', (tester) async { + expect(await windowManager.isPreventClose(), isFalse); + }); - testWidgets('isResizable', (tester) async { - expect(await windowManager.isResizable(), isTrue); - }); + testWidgets('isResizable', (tester) async { + expect(await windowManager.isResizable(), isTrue); + }); - testWidgets('getSize', (tester) async { - expect(await windowManager.getSize(), const Size(640, 480)); - }); + testWidgets('getSize', (tester) async { + expect(await windowManager.getSize(), const Size(640, 480)); + }); - testWidgets( - 'isSkipTaskbar', - (tester) async { - expect(await windowManager.isSkipTaskbar(), isFalse); - }, - skip: Platform.isWindows, - ); + testWidgets( + 'isSkipTaskbar', + (tester) async { + expect(await windowManager.isSkipTaskbar(), isFalse); + }, + skip: Platform.isWindows, + ); - testWidgets('getTitle', (tester) async { - expect(await windowManager.getTitle(), 'window_manager_test'); + testWidgets('getTitle', (tester) async { + expect(await windowManager.getTitle(), 'window_manager_test'); + }); + + testWidgets('getTitleBarHeight', (tester) async { + expect(await windowManager.getTitleBarHeight(), isNonNegative); + }); + + testWidgets('isVisible', (tester) async { + expect(await windowManager.isVisible(), isTrue); + }); + }); + + group('Setters and Listeners', () { + late StreamController streamController; + late WindowListener windowListener; + + setUp(() async { + streamController = StreamController(); + windowListener = WindowListenerImpl(streamController: streamController); + windowManager.addListener(windowListener); + }); + + tearDown(() async { + windowManager.removeListener(windowListener); + await streamController.close(); + }); + + testWidgets('minimize & restore', (tester) async { + await windowManager.minimize(); + await windowManager.restore(); + expect( + streamController.stream, + emitsInOrder([ + emitsThrough('minimize'), + emitsThrough('restore'), + ]), + ); + }); + + testWidgets('maximize & unmaximize', (tester) async { + await windowManager.maximize(); + await windowManager.unmaximize(); + expect( + streamController.stream, + emitsInOrder([ + emitsThrough('maximize'), + emitsThrough('unmaximize'), + ]), + ); + }); }); +} - testWidgets('getTitleBarHeight', (tester) async { - expect(await windowManager.getTitleBarHeight(), isNonNegative); - }); +class WindowListenerImpl with WindowListener { + WindowListenerImpl({required this.streamController}); - testWidgets('isVisible', (tester) async { - expect(await windowManager.isVisible(), isTrue); - }); + final StreamController streamController; + + @override + void onWindowEvent(String eventName) { + streamController.add(eventName); + } }