1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #import <Cocoa/Cocoa.h> 6 7 #import "chrome/browser/ui/cocoa/location_bar/ev_bubble_decoration.h" 8 9 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" 10 #include "testing/gtest/include/gtest/gtest.h" 11 12 namespace { 13 14 class EVBubbleDecorationTest : public CocoaTest { 15 public: 16 EVBubbleDecorationTest() 17 : decoration_(NULL, [NSFont userFontOfSize:12]) { 18 } 19 20 EVBubbleDecoration decoration_; 21 }; 22 23 // Test that the decoration gets smaller when there's not enough space 24 // to fit, within bounds. 25 TEST_F(EVBubbleDecorationTest, MiddleElide) { 26 NSString* kLongString = @"A very long string with spaces"; 27 const CGFloat kWide = 1000.0; // Wide enough to fit everything. 28 const CGFloat kNarrow = 10.0; // Too narrow for anything. 29 const CGFloat kMinimumWidth = 100.0; // Never should get this small. 30 31 const NSSize kImageSize = NSMakeSize(20.0, 20.0); 32 scoped_nsobject<NSImage> image([[NSImage alloc] initWithSize:kImageSize]); 33 34 decoration_.SetImage(image); 35 decoration_.SetFullLabel(kLongString); 36 37 // Lots of space, decoration not omitted. 38 EXPECT_NE(decoration_.GetWidthForSpace(kWide), 39 LocationBarDecoration::kOmittedWidth); 40 41 // If the available space is of the same magnitude as the required 42 // space, the decoration doesn't eat it all up. 43 const CGFloat long_width = decoration_.GetWidthForSpace(kWide); 44 EXPECT_NE(decoration_.GetWidthForSpace(long_width + 20.0), 45 LocationBarDecoration::kOmittedWidth); 46 EXPECT_LT(decoration_.GetWidthForSpace(long_width + 20.0), long_width); 47 48 // If there is very little space, the decoration is still relatively 49 // big. 50 EXPECT_NE(decoration_.GetWidthForSpace(kNarrow), 51 LocationBarDecoration::kOmittedWidth); 52 EXPECT_GT(decoration_.GetWidthForSpace(kNarrow), kMinimumWidth); 53 } 54 55 } // namespace 56