diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-05 04:52:11 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-05 04:52:11 +0000 |
commit | 220705c2b06962462e471b28ad85c76c0f9c3080 (patch) | |
tree | cfc44266116bbf2acc3a4fae32625c4481c8243e /app/animation_unittest.cc | |
parent | 1b8d02f181d089ee670f2ba72089c3722f679d5f (diff) | |
download | chromium_src-220705c2b06962462e471b28ad85c76c0f9c3080.zip chromium_src-220705c2b06962462e471b28ad85c76c0f9c3080.tar.gz chromium_src-220705c2b06962462e471b28ad85c76c0f9c3080.tar.bz2 |
Move *Animation to app/
http://crbug.com/11387
Review URL: http://codereview.chromium.org/109001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15275 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app/animation_unittest.cc')
-rw-r--r-- | app/animation_unittest.cc | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/app/animation_unittest.cc b/app/animation_unittest.cc new file mode 100644 index 0000000..a7450e3 --- /dev/null +++ b/app/animation_unittest.cc @@ -0,0 +1,102 @@ +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "app/animation.h" +#include "base/message_loop.h" +#include "testing/gtest/include/gtest/gtest.h" + +using namespace std; + +class AnimationTest: public testing::Test { + private: + MessageLoopForUI message_loop_; +}; + +/////////////////////////////////////////////////////////////////////////////// +// RunAnimation + +class RunAnimation : public Animation { + public: + RunAnimation(int frame_rate, AnimationDelegate* delegate) + : Animation(frame_rate, delegate) { + } + + virtual void AnimateToState(double state) { + EXPECT_LE(0.0, state); + EXPECT_GE(1.0, state); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// CancelAnimation + +class CancelAnimation : public Animation { + public: + CancelAnimation(int duration, int frame_rate, AnimationDelegate* delegate) + : Animation(duration, frame_rate, delegate) { + } + + virtual void AnimateToState(double state) { + if (state >= 0.5) + Stop(); + } +}; + +/////////////////////////////////////////////////////////////////////////////// +// LinearCase + +class TestAnimationDelegate : public AnimationDelegate { + public: + TestAnimationDelegate() : + canceled_(false), + finished_(false) { + } + + virtual void AnimationStarted(const Animation* animation) { + } + + virtual void AnimationEnded(const Animation* animation) { + finished_ = true; + MessageLoop::current()->Quit(); + } + + virtual void AnimationCanceled(const Animation* animation) { + finished_ = true; + canceled_ = true; + MessageLoop::current()->Quit(); + } + + bool finished() { + return finished_; + } + + bool canceled() { + return canceled_; + } + + private: + bool canceled_; + bool finished_; +}; + +TEST_F(AnimationTest, RunCase) { + TestAnimationDelegate ad; + RunAnimation a1(150, &ad); + a1.SetDuration(2000); + a1.Start(); + MessageLoop::current()->Run(); + + EXPECT_TRUE(ad.finished()); + EXPECT_FALSE(ad.canceled()); +} + +TEST_F(AnimationTest, CancelCase) { + TestAnimationDelegate ad; + CancelAnimation a2(2000, 150, &ad); + a2.Start(); + MessageLoop::current()->Run(); + + EXPECT_TRUE(ad.finished()); + EXPECT_TRUE(ad.canceled()); +} |