Home | History | Annotate | Download | only in cocoa
      1 // Copyright (c) 2011 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 #include "base/memory/scoped_nsobject.h"
      8 #import "chrome/browser/ui/cocoa/styled_text_field_cell.h"
      9 #import "chrome/browser/ui/cocoa/styled_text_field_test_helper.h"
     10 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
     11 #include "testing/gtest/include/gtest/gtest.h"
     12 #include "testing/platform_test.h"
     13 
     14 namespace {
     15 
     16 // Width of the field so that we don't have to ask |field_| for it all
     17 // the time.
     18 const CGFloat kWidth(300.0);
     19 
     20 class StyledTextFieldCellTest : public CocoaTest {
     21  public:
     22   StyledTextFieldCellTest() {
     23     // Make sure this is wide enough to play games with the cell
     24     // decorations.
     25     const NSRect frame = NSMakeRect(0, 0, kWidth, 30);
     26 
     27     scoped_nsobject<StyledTextFieldTestCell> cell(
     28         [[StyledTextFieldTestCell alloc] initTextCell:@"Testing"]);
     29     cell_ = cell.get();
     30     [cell_ setEditable:YES];
     31     [cell_ setBordered:YES];
     32 
     33     scoped_nsobject<NSTextField> view(
     34         [[NSTextField alloc] initWithFrame:frame]);
     35     view_ = view.get();
     36     [view_ setCell:cell_];
     37 
     38     [[test_window() contentView] addSubview:view_];
     39   }
     40 
     41   NSTextField* view_;
     42   StyledTextFieldTestCell* cell_;
     43 };
     44 
     45 // Basic view tests (AddRemove, Display).
     46 TEST_VIEW(StyledTextFieldCellTest, view_);
     47 
     48 // Test drawing, mostly to ensure nothing leaks or crashes.
     49 TEST_F(StyledTextFieldCellTest, FocusedDisplay) {
     50   [view_ display];
     51 
     52   // Test focused drawing.
     53   [test_window() makePretendKeyWindowAndSetFirstResponder:view_];
     54   [view_ display];
     55   [test_window() clearPretendKeyWindowAndFirstResponder];
     56 
     57   // Test display of various cell configurations.
     58   [cell_ setLeftMargin:5];
     59   [view_ display];
     60 
     61   [cell_ setRightMargin:15];
     62   [view_ display];
     63 }
     64 
     65 // The editor frame should be slightly inset from the text frame.
     66 TEST_F(StyledTextFieldCellTest, DrawingRectForBounds) {
     67   const NSRect bounds = [view_ bounds];
     68   NSRect textFrame = [cell_ textFrameForFrame:bounds];
     69   NSRect drawingRect = [cell_ drawingRectForBounds:bounds];
     70 
     71   EXPECT_FALSE(NSIsEmptyRect(drawingRect));
     72   EXPECT_TRUE(NSContainsRect(textFrame, NSInsetRect(drawingRect, 1, 1)));
     73 
     74   [cell_ setLeftMargin:10];
     75   textFrame = [cell_ textFrameForFrame:bounds];
     76   drawingRect = [cell_ drawingRectForBounds:bounds];
     77   EXPECT_FALSE(NSIsEmptyRect(drawingRect));
     78   EXPECT_TRUE(NSContainsRect(textFrame, NSInsetRect(drawingRect, 1, 1)));
     79 
     80   [cell_ setRightMargin:20];
     81   textFrame = [cell_ textFrameForFrame:bounds];
     82   drawingRect = [cell_ drawingRectForBounds:bounds];
     83   EXPECT_FALSE(NSIsEmptyRect(drawingRect));
     84   EXPECT_TRUE(NSContainsRect(NSInsetRect(textFrame, 1, 1), drawingRect));
     85 
     86   [cell_ setLeftMargin:0];
     87   textFrame = [cell_ textFrameForFrame:bounds];
     88   drawingRect = [cell_ drawingRectForBounds:bounds];
     89   EXPECT_FALSE(NSIsEmptyRect(drawingRect));
     90   EXPECT_TRUE(NSContainsRect(NSInsetRect(textFrame, 1, 1), drawingRect));
     91 }
     92 
     93 }  // namespace
     94