| Index: chrome/browser/ui/cocoa/nsview_additions_unittest.mm
|
| diff --git a/chrome/browser/ui/cocoa/nsview_additions_unittest.mm b/chrome/browser/ui/cocoa/nsview_additions_unittest.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ffb7e0ffc3053aab42d59c36d06685951623acb8
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/cocoa/nsview_additions_unittest.mm
|
| @@ -0,0 +1,98 @@
|
| +// Copyright (c) 2013 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/nsview_additions.h"
|
| +
|
| +#include "base/memory/scoped_nsobject.h"
|
| +#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#import "testing/gtest_mac.h"
|
| +
|
| +typedef CocoaTest NSViewChromeAdditionsTest;
|
| +
|
| +@interface ParentView : NSView {
|
| + @private
|
| + int removeCount_;
|
| + int addCount_;
|
| +}
|
| +
|
| +@property(readonly, nonatomic) int removeCount;
|
| +@property(readonly, nonatomic) int addCount;
|
| +
|
| +@end
|
| +
|
| +@implementation ParentView
|
| +
|
| +@synthesize removeCount = removeCount_;
|
| +@synthesize addCount = addCount_;
|
| +
|
| +- (void)willRemoveSubview:(NSView*)view {
|
| + ++removeCount_;
|
| +}
|
| +
|
| +- (void)didAddSubview:(NSView*)view {
|
| + ++addCount_;
|
| +}
|
| +
|
| +@end
|
| +
|
| +TEST_F(NSViewChromeAdditionsTest, BelowAboveView) {
|
| + scoped_nsobject<NSView> parent([[NSView alloc] initWithFrame:NSZeroRect]);
|
| + scoped_nsobject<NSView> child1([[NSView alloc] initWithFrame:NSZeroRect]);
|
| + scoped_nsobject<NSView> child2([[NSView alloc] initWithFrame:NSZeroRect]);
|
| +
|
| + [parent addSubview:child1];
|
| + [parent addSubview:child2];
|
| + EXPECT_TRUE([child1 cr_isBelowView:child2]);
|
| + EXPECT_FALSE([child1 cr_isAboveView:child2]);
|
| + EXPECT_FALSE([child2 cr_isBelowView:child1]);
|
| + EXPECT_TRUE([child2 cr_isAboveView:child1]);
|
| +
|
| + [child1 removeFromSuperview];
|
| + [child2 removeFromSuperview];
|
| + [parent addSubview:child2];
|
| + [parent addSubview:child1];
|
| + EXPECT_FALSE([child1 cr_isBelowView:child2]);
|
| + EXPECT_TRUE([child1 cr_isAboveView:child2]);
|
| + EXPECT_TRUE([child2 cr_isBelowView:child1]);
|
| + EXPECT_FALSE([child2 cr_isAboveView:child1]);
|
| +}
|
| +
|
| +TEST_F(NSViewChromeAdditionsTest, EnsurePosition) {
|
| + scoped_nsobject<NSView> parent([[NSView alloc] initWithFrame:NSZeroRect]);
|
| + scoped_nsobject<NSView> child1([[NSView alloc] initWithFrame:NSZeroRect]);
|
| + scoped_nsobject<NSView> child2([[NSView alloc] initWithFrame:NSZeroRect]);
|
| +
|
| + [parent addSubview:child1];
|
| + [parent cr_ensureSubview:child2
|
| + isPositioned:NSWindowAbove
|
| + relativeTo:child1];
|
| + EXPECT_NSEQ([[parent subviews] objectAtIndex:0], child1);
|
| + EXPECT_NSEQ([[parent subviews] objectAtIndex:1], child2);
|
| +
|
| + [child2 removeFromSuperview];
|
| + [parent cr_ensureSubview:child2
|
| + isPositioned:NSWindowBelow
|
| + relativeTo:child1];
|
| + EXPECT_NSEQ([[parent subviews] objectAtIndex:0], child2);
|
| + EXPECT_NSEQ([[parent subviews] objectAtIndex:1], child1);
|
| +}
|
| +
|
| +// Verify that no view is removed or added when no change is needed.
|
| +TEST_F(NSViewChromeAdditionsTest, EnsurePositionNoChange) {
|
| + scoped_nsobject<ParentView> parent(
|
| + [[ParentView alloc] initWithFrame:NSZeroRect]);
|
| + scoped_nsobject<NSView> child1([[NSView alloc] initWithFrame:NSZeroRect]);
|
| + scoped_nsobject<NSView> child2([[NSView alloc] initWithFrame:NSZeroRect]);
|
| + [parent addSubview:child1];
|
| + [parent addSubview:child2];
|
| +
|
| + EXPECT_EQ(0, [parent removeCount]);
|
| + EXPECT_EQ(2, [parent addCount]);
|
| + [parent cr_ensureSubview:child2
|
| + isPositioned:NSWindowAbove
|
| + relativeTo:child1];
|
| + EXPECT_EQ(0, [parent removeCount]);
|
| + EXPECT_EQ(2, [parent addCount]);
|
| +}
|
|
|