172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/ui/gtk/tabs/tab_renderer_gtk.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace {
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochtypedef TabRendererGtk::LoadingAnimation LoadingAnimation;
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kTestLoadingAnimationFrameCount = 10;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kTestWaitingAnimationFrameCount = 40;
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int kTestWaitingToLoadingFrameCountRatio = 4;
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst LoadingAnimation::Data kMockAnimationData =
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    LoadingAnimation::Data(kTestLoadingAnimationFrameCount,
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           kTestWaitingAnimationFrameCount,
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           kTestWaitingToLoadingFrameCountRatio);
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(LoadingAnimationTest, InitialState) {
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  LoadingAnimation loading_animation(kMockAnimationData);
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(TabRendererGtk::ANIMATION_NONE,
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_state());
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(0, loading_animation.animation_frame());
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(LoadingAnimationTest, AdvanceWaitingFrames) {
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  LoadingAnimation loading_animation(kMockAnimationData);
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  loading_animation.ValidateLoadingAnimation(TabRendererGtk::ANIMATION_WAITING);
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING,
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_state());
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(1, loading_animation.animation_frame());
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  loading_animation.ValidateLoadingAnimation(TabRendererGtk::ANIMATION_WAITING);
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING,
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_state());
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(2, loading_animation.animation_frame());
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  for (int i = 2; i < kTestWaitingAnimationFrameCount - 1; ++i) {
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    loading_animation.ValidateLoadingAnimation(
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        TabRendererGtk::ANIMATION_WAITING);
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING,
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_state());
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(kTestWaitingAnimationFrameCount - 1,
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_frame());
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  loading_animation.ValidateLoadingAnimation(TabRendererGtk::ANIMATION_WAITING);
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING,
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_state());
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(0, loading_animation.animation_frame()) <<
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            "The animation frame should have wrapped around to 0.";
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(LoadingAnimationTest, AdvanceFromWaitingToLoading) {
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  LoadingAnimation loading_animation(kMockAnimationData);
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  for (int i = 0; i < 2 * kTestWaitingToLoadingFrameCountRatio; ++i) {
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    loading_animation.ValidateLoadingAnimation(
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        TabRendererGtk::ANIMATION_WAITING);
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(TabRendererGtk::ANIMATION_WAITING,
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_state());
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(2 * kTestWaitingToLoadingFrameCountRatio,
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_frame());
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  loading_animation.ValidateLoadingAnimation(TabRendererGtk::ANIMATION_LOADING);
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(TabRendererGtk::ANIMATION_LOADING,
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_state());
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(kTestLoadingAnimationFrameCount - 1,
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch            loading_animation.animation_frame());
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace
75