Home | History | Annotate | Download | only in date
      1 // Copyright 2013 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 #include "ash/system/date/date_view.h"
      6 
      7 #include "ash/test/ash_test_base.h"
      8 #include "ui/views/controls/label.h"
      9 
     10 namespace ash {
     11 namespace internal {
     12 namespace tray {
     13 
     14 class TimeViewTest : public ash::test::AshTestBase {
     15  public:
     16   TimeViewTest() {}
     17   virtual ~TimeViewTest() {}
     18 
     19   TimeView* time_view() { return time_view_.get(); }
     20 
     21   // Access to private fields of |time_view_|.
     22   views::Label* horizontal_label() {
     23     return time_view_->horizontal_label_.get();
     24   }
     25   views::Label* vertical_label_hours() {
     26     return time_view_->vertical_label_hours_.get();
     27   }
     28   views::Label* vertical_label_minutes() {
     29     return time_view_->vertical_label_minutes_.get();
     30   }
     31 
     32   // Creates a time view with horizontal or vertical |clock_layout|.
     33   void CreateTimeView(TrayDate::ClockLayout clock_layout) {
     34     time_view_.reset(new TimeView(clock_layout));
     35   }
     36 
     37  private:
     38   scoped_ptr<TimeView> time_view_;
     39 
     40   DISALLOW_COPY_AND_ASSIGN(TimeViewTest);
     41 };
     42 
     43 // Test the basics of the time view, mostly to ensure we don't leak memory.
     44 TEST_F(TimeViewTest, Basics) {
     45   // A newly created horizontal clock only has the horizontal label.
     46   CreateTimeView(TrayDate::HORIZONTAL_CLOCK);
     47   EXPECT_EQ(time_view(), horizontal_label()->parent());
     48   EXPECT_FALSE(vertical_label_hours()->parent());
     49   EXPECT_FALSE(vertical_label_minutes()->parent());
     50 
     51   // Switching the clock to vertical updates the labels.
     52   time_view()->UpdateClockLayout(TrayDate::VERTICAL_CLOCK);
     53   EXPECT_FALSE(horizontal_label()->parent());
     54   EXPECT_EQ(time_view(), vertical_label_hours()->parent());
     55   EXPECT_EQ(time_view(), vertical_label_minutes()->parent());
     56 
     57   // Switching back to horizontal updates the labels again.
     58   time_view()->UpdateClockLayout(TrayDate::HORIZONTAL_CLOCK);
     59   EXPECT_EQ(time_view(), horizontal_label()->parent());
     60   EXPECT_FALSE(vertical_label_hours()->parent());
     61   EXPECT_FALSE(vertical_label_minutes()->parent());
     62 }
     63 
     64 }  // namespace tray
     65 }  // namespace internal
     66 }  // namespace ash
     67