1fcdc6a7d2488defd66bc7e8398c6d8c9a6190a1aKristian Høgsberg// Copyright 2013 The Chromium Authors. All rights reserved.
21b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes// Use of this source code is governed by a BSD-style license that can be
31b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes// found in the LICENSE file.
41b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
55c31f8678b7ad10145c434c00461115449a357e0Brian Paul#include "ash/system/date/date_view.h"
61b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
75c31f8678b7ad10145c434c00461115449a357e0Brian Paul#include "ash/test/ash_test_base.h"
81b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes#include "ui/views/controls/label.h"
91b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
101b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughesnamespace ash {
111b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughesnamespace tray {
121b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
131b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughesclass TimeViewTest : public ash::test::AshTestBase {
141b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes public:
151b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  TimeViewTest() {}
161b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  virtual ~TimeViewTest() {}
171b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
181b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  TimeView* time_view() { return time_view_.get(); }
191b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
201b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  // Access to private fields of |time_view_|.
211b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  views::Label* horizontal_label() {
221b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes    return time_view_->horizontal_label_.get();
231b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  }
241b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  views::Label* vertical_label_hours() {
251b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes    return time_view_->vertical_label_hours_.get();
261b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  }
271b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  views::Label* vertical_label_minutes() {
281b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes    return time_view_->vertical_label_minutes_.get();
291b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  }
301b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
31462183fe4cb6df6d90632d9e2cee881c8d26b1cbAlan Hourihane  // Creates a time view with horizontal or vertical |clock_layout|.
32462183fe4cb6df6d90632d9e2cee881c8d26b1cbAlan Hourihane  void CreateTimeView(TrayDate::ClockLayout clock_layout) {
331b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes    time_view_.reset(new TimeView(clock_layout));
341b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  }
351b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
361b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes private:
371b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  scoped_ptr<TimeView> time_view_;
381b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
391b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  DISALLOW_COPY_AND_ASSIGN(TimeViewTest);
401b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes};
411b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
421b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes// Test the basics of the time view, mostly to ensure we don't leak memory.
431b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth HughesTEST_F(TimeViewTest, Basics) {
44932dee87e3002be87dc3bcc49efd8ac9ac3e1fa4Brian Paul  // A newly created horizontal clock only has the horizontal label.
451b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  CreateTimeView(TrayDate::HORIZONTAL_CLOCK);
461b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  EXPECT_EQ(time_view(), horizontal_label()->parent());
47caa5f7e75ecdbfa8bae03acfb9369a77baa7833eAlan Hourihane  EXPECT_FALSE(vertical_label_hours()->parent());
481b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  EXPECT_FALSE(vertical_label_minutes()->parent());
491b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
501b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  // Switching the clock to vertical updates the labels.
511b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  time_view()->UpdateClockLayout(TrayDate::VERTICAL_CLOCK);
521b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  EXPECT_FALSE(horizontal_label()->parent());
531b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  EXPECT_EQ(time_view(), vertical_label_hours()->parent());
541b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  EXPECT_EQ(time_view(), vertical_label_minutes()->parent());
551b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
56854b4a3b5456e0a381df49de854fdb315899dfc2Daniel Borca  // Switching back to horizontal updates the labels again.
57854b4a3b5456e0a381df49de854fdb315899dfc2Daniel Borca  time_view()->UpdateClockLayout(TrayDate::HORIZONTAL_CLOCK);
58854b4a3b5456e0a381df49de854fdb315899dfc2Daniel Borca  EXPECT_EQ(time_view(), horizontal_label()->parent());
59854b4a3b5456e0a381df49de854fdb315899dfc2Daniel Borca  EXPECT_FALSE(vertical_label_hours()->parent());
601b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes  EXPECT_FALSE(vertical_label_minutes()->parent());
611b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes}
621b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes
631b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes}  // namespace tray
641b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes}  // namespace ash
651b2fef5c28a40cd001598071e25b876ad4fccdd1Gareth Hughes