blob: 079ddbb7ff26b8a4a29d06e2a534278387615533 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "flutter/shell/platform/darwin/macos/framework/Headers/FlutterAppLifecycleDelegate.h"
#import "flutter/testing/testing.h"
#include "third_party/googletest/googletest/include/gtest/gtest.h"
@interface TestFlutterAppLifecycleDelegate : NSObject <FlutterAppLifecycleDelegate>
@property(nonatomic, readwrite, nullable) NSNotification* lastNotification;
@end
@implementation TestFlutterAppLifecycleDelegate
- (void)setNotification:(NSNotification*)notification {
self.lastNotification = notification;
}
- (void)handleWillFinishLaunching:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleDidFinishLaunching:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleWillBecomeActive:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleDidBecomeActive:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleWillResignActive:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleDidResignActive:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleWillHide:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleDidHide:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleWillUnhide:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleDidUnhide:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleDidChangeScreenParameters:(NSNotification*)notification {
[self setNotification:notification];
}
- (void)handleDidChangeOcclusionState:(NSNotification*)notification API_AVAILABLE(macos(10.9)) {
[self setNotification:notification];
}
- (void)handleWillTerminate:(NSNotification*)notification {
[self setNotification:notification];
}
@end
namespace flutter::testing {
TEST(FlutterAppLifecycleDelegateTest, RespondsToWillFinishLaunching) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* willFinishLaunching =
[NSNotification notificationWithName:NSApplicationWillFinishLaunchingNotification object:nil];
[registrar handleWillFinishLaunching:willFinishLaunching];
EXPECT_EQ([delegate lastNotification], willFinishLaunching);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToDidFinishLaunching) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* didFinishLaunching =
[NSNotification notificationWithName:NSApplicationDidFinishLaunchingNotification object:nil];
[registrar handleDidFinishLaunching:didFinishLaunching];
EXPECT_EQ([delegate lastNotification], didFinishLaunching);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToWillBecomeActive) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* willBecomeActive =
[NSNotification notificationWithName:NSApplicationWillBecomeActiveNotification object:nil];
[registrar handleWillBecomeActive:willBecomeActive];
EXPECT_EQ([delegate lastNotification], willBecomeActive);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToDidBecomeActive) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* didBecomeActive =
[NSNotification notificationWithName:NSApplicationDidBecomeActiveNotification object:nil];
[registrar handleDidBecomeActive:didBecomeActive];
EXPECT_EQ([delegate lastNotification], didBecomeActive);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToWillResignActive) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* willResignActive =
[NSNotification notificationWithName:NSApplicationWillResignActiveNotification object:nil];
[registrar handleWillResignActive:willResignActive];
EXPECT_EQ([delegate lastNotification], willResignActive);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToDidResignActive) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* didResignActive =
[NSNotification notificationWithName:NSApplicationDidResignActiveNotification object:nil];
[registrar handleDidResignActive:didResignActive];
EXPECT_EQ([delegate lastNotification], didResignActive);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToWillTerminate) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* applicationWillTerminate =
[NSNotification notificationWithName:NSApplicationWillTerminateNotification object:nil];
[registrar handleWillTerminate:applicationWillTerminate];
EXPECT_EQ([delegate lastNotification], applicationWillTerminate);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToWillHide) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* willHide = [NSNotification notificationWithName:NSApplicationWillHideNotification
object:nil];
[registrar handleWillHide:willHide];
EXPECT_EQ([delegate lastNotification], willHide);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToWillUnhide) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* willUnhide =
[NSNotification notificationWithName:NSApplicationWillUnhideNotification object:nil];
[registrar handleWillUnhide:willUnhide];
EXPECT_EQ([delegate lastNotification], willUnhide);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToDidHide) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* didHide = [NSNotification notificationWithName:NSApplicationDidHideNotification
object:nil];
[registrar handleDidHide:didHide];
EXPECT_EQ([delegate lastNotification], didHide);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToDidUnhide) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* didUnhide =
[NSNotification notificationWithName:NSApplicationDidUnhideNotification object:nil];
[registrar handleDidUnhide:didUnhide];
EXPECT_EQ([delegate lastNotification], didUnhide);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToDidChangeScreenParameters) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* didChangeScreenParameters =
[NSNotification notificationWithName:NSApplicationDidChangeScreenParametersNotification
object:nil];
[registrar handleDidChangeScreenParameters:didChangeScreenParameters];
EXPECT_EQ([delegate lastNotification], didChangeScreenParameters);
}
TEST(FlutterAppLifecycleDelegateTest, RespondsToDidChangeOcclusionState) {
FlutterAppLifecycleRegistrar* registrar = [[FlutterAppLifecycleRegistrar alloc] init];
TestFlutterAppLifecycleDelegate* delegate = [[TestFlutterAppLifecycleDelegate alloc] init];
[registrar addDelegate:delegate];
NSNotification* didChangeOcclusionState =
[NSNotification notificationWithName:NSApplicationDidChangeOcclusionStateNotification
object:nil];
if ([registrar respondsToSelector:@selector(handleDidChangeOcclusionState:)]) {
[registrar handleDidChangeOcclusionState:didChangeOcclusionState];
EXPECT_EQ([delegate lastNotification], didChangeOcclusionState);
}
}
} // namespace flutter::testing