blob: b5fe7a710d6a412d52cb63e0f5e78f83e0489300 [file] [log] [blame]
// Copyright (c) 2012 The Chromium 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 "chrome/browser/ui/cocoa/constrained_window/constrained_window_alert.h"
#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
#import "testing/gtest_mac.h"
class ConstrainedWindowAlertTest : public CocoaTest {
};
@interface ConstrainedWindowAlertTestTarget : NSObject {
@private
int linkClickedCount_;
}
@property(nonatomic, readonly) int linkClickedCount;
- (void)onLinkClicked:(id)sender;
@end
@implementation ConstrainedWindowAlertTestTarget
@synthesize linkClickedCount = linkClickedCount_;
- (void)onLinkClicked:(id)sender {
++linkClickedCount_;
}
@end
// Test showing the alert.
TEST_F(ConstrainedWindowAlertTest, Show) {
base::scoped_nsobject<ConstrainedWindowAlert> alert(
[[ConstrainedWindowAlert alloc] init]);
EXPECT_TRUE([alert window]);
EXPECT_TRUE([alert closeButton]);
[alert setMessageText:@"Message text"];
[alert setInformativeText:@"Informative text"];
[alert addButtonWithTitle:@"OK" keyEquivalent:@"" target:nil action:NULL];
[alert addButtonWithTitle:@"Cancel" keyEquivalent:@"" target:nil action:NULL];
[alert layout];
[[alert window] makeKeyAndOrderFront:nil];
}
// Test showing the alert with no buttons.
TEST_F(ConstrainedWindowAlertTest, NoButtons) {
base::scoped_nsobject<ConstrainedWindowAlert> alert(
[[ConstrainedWindowAlert alloc] init]);
[alert layout];
[[alert window] makeKeyAndOrderFront:nil];
}
// Test adding an accessory view to an alert.
TEST_F(ConstrainedWindowAlertTest, AccessoryView) {
base::scoped_nsobject<ConstrainedWindowAlert> alert(
[[ConstrainedWindowAlert alloc] init]);
[alert addButtonWithTitle:@"OK" keyEquivalent:@"" target:nil action:NULL];
[alert addButtonWithTitle:@"Cancel" keyEquivalent:@"" target:nil action:NULL];
NSRect view_rect = NSMakeRect(0, 0, 700, 300);
base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:view_rect]);
EXPECT_FALSE([alert accessoryView]);
[alert setAccessoryView:view];
EXPECT_NSEQ([alert accessoryView], view);
[alert layout];
NSRect window_rect = [[alert window] frame];
EXPECT_GT(NSWidth(window_rect), NSWidth(view_rect));
EXPECT_GT(NSHeight(window_rect), NSHeight(view_rect));
[[alert window] makeKeyAndOrderFront:nil];
}
// Test adding a link to an alert.
TEST_F(ConstrainedWindowAlertTest, LinkView) {
base::scoped_nsobject<ConstrainedWindowAlert> alert(
[[ConstrainedWindowAlert alloc] init]);
base::scoped_nsobject<ConstrainedWindowAlertTestTarget> target(
[[ConstrainedWindowAlertTestTarget alloc] init]);
[alert layout];
NSRect initial_window_rect = [[alert window] frame];
EXPECT_EQ(nil, [alert linkView]);
NSString* linkText = @"Text of the link";
[alert setLinkText:linkText
target:target.get()
action:@selector(onLinkClicked:)];
EXPECT_EQ([linkText length], [[[alert linkView] title] length]);
[alert layout];
NSRect window_rect = [[alert window] frame];
EXPECT_GT(NSHeight(window_rect), NSHeight(initial_window_rect));
[[alert window] makeKeyAndOrderFront:nil];
[[alert linkView] performClick:nil];
EXPECT_EQ(1, [target linkClickedCount]);
}