Home | History | Annotate | Download | only in location_bar
      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