This source file includes following definitions.
- AnimateToState
- AnimateToState
- AnimateToState
- AnimationEnded
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
- TEST_F
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/animation/animation_delegate.h"
#include "ui/gfx/animation/linear_animation.h"
#include "ui/gfx/animation/test_animation_delegate.h"
#if defined(OS_WIN)
#include "base/win/windows_version.h"
#endif
namespace gfx {
class AnimationTest: public testing::Test {
private:
base::MessageLoopForUI message_loop_;
};
namespace {
class RunAnimation : public LinearAnimation {
public:
RunAnimation(int frame_rate, AnimationDelegate* delegate)
: LinearAnimation(frame_rate, delegate) {
}
virtual void AnimateToState(double state) OVERRIDE {
EXPECT_LE(0.0, state);
EXPECT_GE(1.0, state);
}
};
class CancelAnimation : public LinearAnimation {
public:
CancelAnimation(int duration, int frame_rate, AnimationDelegate* delegate)
: LinearAnimation(duration, frame_rate, delegate) {
}
virtual void AnimateToState(double state) OVERRIDE {
if (state >= 0.5)
Stop();
}
};
class EndAnimation : public LinearAnimation {
public:
EndAnimation(int duration, int frame_rate, AnimationDelegate* delegate)
: LinearAnimation(duration, frame_rate, delegate) {
}
virtual void AnimateToState(double state) OVERRIDE {
if (state >= 0.5)
End();
}
};
class DeletingAnimationDelegate : public AnimationDelegate {
public:
virtual void AnimationEnded(const Animation* animation) OVERRIDE {
delete animation;
base::MessageLoop::current()->Quit();
}
};
}
TEST_F(AnimationTest, RunCase) {
TestAnimationDelegate ad;
RunAnimation a1(150, &ad);
a1.SetDuration(2000);
a1.Start();
base::MessageLoop::current()->Run();
EXPECT_TRUE(ad.finished());
EXPECT_FALSE(ad.canceled());
}
TEST_F(AnimationTest, CancelCase) {
TestAnimationDelegate ad;
CancelAnimation a2(2000, 150, &ad);
a2.Start();
base::MessageLoop::current()->Run();
EXPECT_TRUE(ad.finished());
EXPECT_TRUE(ad.canceled());
}
TEST_F(AnimationTest, EndCase) {
TestAnimationDelegate ad;
EndAnimation a2(2000, 150, &ad);
a2.Start();
base::MessageLoop::current()->Run();
EXPECT_TRUE(ad.finished());
EXPECT_FALSE(ad.canceled());
}
TEST_F(AnimationTest, DeleteFromEnd) {
DeletingAnimationDelegate delegate;
RunAnimation* animation = new RunAnimation(150, &delegate);
animation->Start();
base::MessageLoop::current()->Run();
}
TEST_F(AnimationTest, ShouldRenderRichAnimation) {
#if defined(OS_WIN)
if (base::win::GetVersion() >= base::win::VERSION_VISTA) {
BOOL result;
ASSERT_NE(
0, ::SystemParametersInfo(SPI_GETCLIENTAREAANIMATION, 0, &result, 0));
EXPECT_EQ(!!result, Animation::ShouldRenderRichAnimation());
} else {
EXPECT_EQ(!::GetSystemMetrics(SM_REMOTESESSION),
Animation::ShouldRenderRichAnimation());
}
#else
EXPECT_TRUE(Animation::ShouldRenderRichAnimation());
#endif
}
TEST_F(AnimationTest, StartState) {
LinearAnimation animation(100, 60, NULL);
EXPECT_EQ(0.0, animation.GetCurrentValue());
animation.Start();
EXPECT_EQ(0.0, animation.GetCurrentValue());
animation.End();
EXPECT_EQ(1.0, animation.GetCurrentValue());
animation.Start();
EXPECT_EQ(0.0, animation.GetCurrentValue());
}
}