| Index: ui/views/animation/ink_drop_animation_unittest.cc
|
| diff --git a/ui/views/animation/ink_drop_animation_unittest.cc b/ui/views/animation/ink_drop_animation_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..478013589e4ee56af4824df932f5a5a6866e1a15
|
| --- /dev/null
|
| +++ b/ui/views/animation/ink_drop_animation_unittest.cc
|
| @@ -0,0 +1,301 @@
|
| +// Copyright 2015 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.
|
| +
|
| +#ifndef UI_VIEWS_ANIMATION_INK_DROP_ANIMATION_UNITTEST_H_
|
| +#define UI_VIEWS_ANIMATION_INK_DROP_ANIMATION_UNITTEST_H_
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include "ui/gfx/geometry/size.h"
|
| +#include "ui/gfx/geometry/size_f.h"
|
| +#include "ui/views/animation/ink_drop_animation.h"
|
| +#include "ui/views/animation/ink_drop_state.h"
|
| +#include "ui/views/animation/test/ink_drop_animation_test_api.h"
|
| +
|
| +namespace views {
|
| +namespace test {
|
| +
|
| +namespace {
|
| +
|
| +// Transforms a copy of |point| with |transform| and returns it.
|
| +gfx::Point TransformPoint(const gfx::Transform& transform,
|
| + const gfx::Point& point) {
|
| + gfx::Point transformed_point = point;
|
| + transform.TransformPoint(&transformed_point);
|
| + return transformed_point;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +class InkDropAnimationTest : public testing::Test {
|
| + public:
|
| + InkDropAnimationTest() {}
|
| + ~InkDropAnimationTest() override {}
|
| +
|
| + protected:
|
| + scoped_ptr<InkDropAnimation> CreateInkDropAnimation() const;
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(InkDropAnimationTest);
|
| +};
|
| +
|
| +// Returns a new InkDropAnimation with default parameters.
|
| +scoped_ptr<InkDropAnimation> InkDropAnimationTest::CreateInkDropAnimation()
|
| + const {
|
| + return make_scoped_ptr(
|
| + new InkDropAnimation(gfx::Size(10, 10), 2, gfx::Size(8, 8), 1));
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest, InitialStateAfterConstruction) {
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation = CreateInkDropAnimation();
|
| + EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_animation->ink_drop_state());
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest, AnimateToActionPending) {
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation = CreateInkDropAnimation();
|
| + ink_drop_animation->AnimateToState(views::InkDropState::ACTION_PENDING);
|
| + EXPECT_EQ(views::InkDropState::ACTION_PENDING,
|
| + ink_drop_animation->ink_drop_state());
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest, AnimateToQuickAction) {
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation = CreateInkDropAnimation();
|
| + ink_drop_animation->AnimateToState(views::InkDropState::QUICK_ACTION);
|
| + EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_animation->ink_drop_state());
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest, AnimateToSlowActionPending) {
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation = CreateInkDropAnimation();
|
| + ink_drop_animation->AnimateToState(views::InkDropState::SLOW_ACTION_PENDING);
|
| + EXPECT_EQ(views::InkDropState::SLOW_ACTION_PENDING,
|
| + ink_drop_animation->ink_drop_state());
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest, AnimateToSlowAction) {
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation = CreateInkDropAnimation();
|
| + ink_drop_animation->AnimateToState(views::InkDropState::SLOW_ACTION);
|
| + EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_animation->ink_drop_state());
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest, AnimateToActivated) {
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation = CreateInkDropAnimation();
|
| + ink_drop_animation->AnimateToState(views::InkDropState::ACTIVATED);
|
| + EXPECT_EQ(views::InkDropState::ACTIVATED,
|
| + ink_drop_animation->ink_drop_state());
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest, AnimateToDeactivated) {
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation = CreateInkDropAnimation();
|
| + ink_drop_animation->AnimateToState(views::InkDropState::DEACTIVATED);
|
| + EXPECT_EQ(views::InkDropState::HIDDEN, ink_drop_animation->ink_drop_state());
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest,
|
| + TransformedPointsUsingTransformsFromCalculateCircleTransforms) {
|
| + const int kHalfDrawnSize = 5;
|
| + const int kDrawnSize = 2 * kHalfDrawnSize;
|
| +
|
| + const int kHalfTransformedSize = 100;
|
| + const int kTransformedSize = 2 * kHalfTransformedSize;
|
| +
|
| + // Constant points in the drawn space that will be transformed.
|
| + const gfx::Point center(kHalfDrawnSize, kHalfDrawnSize);
|
| + const gfx::Point mid_left(0, kHalfDrawnSize);
|
| + const gfx::Point mid_right(kDrawnSize, kHalfDrawnSize);
|
| + const gfx::Point top_mid(kHalfDrawnSize, 0);
|
| + const gfx::Point bottom_mid(kHalfDrawnSize, kDrawnSize);
|
| +
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation(
|
| + new InkDropAnimation(gfx::Size(kDrawnSize, kDrawnSize), 2,
|
| + gfx::Size(kHalfDrawnSize, kHalfDrawnSize), 1));
|
| + InkDropAnimationTestApi test_api(ink_drop_animation.get());
|
| +
|
| + InkDropAnimationTestApi::InkDropTransforms transforms;
|
| + test_api.CalculateCircleTransforms(
|
| + gfx::SizeF(kTransformedSize, kTransformedSize), &transforms);
|
| +
|
| + // Transform variables to reduce verbosity of actual verification code.
|
| + const gfx::Transform kTopLeftTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::TOP_LEFT_CIRCLE];
|
| + const gfx::Transform kTopRightTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::TOP_RIGHT_CIRCLE];
|
| + const gfx::Transform kBottomRightTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::BOTTOM_RIGHT_CIRCLE];
|
| + const gfx::Transform kBottomLeftTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::BOTTOM_LEFT_CIRCLE];
|
| + const gfx::Transform kHorizontalTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::HORIZONTAL_RECT];
|
| + const gfx::Transform kVerticalTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::VERTICAL_RECT];
|
| +
|
| + // Top left circle
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kTopLeftTransform, center));
|
| + EXPECT_EQ(gfx::Point(-kHalfTransformedSize, 0),
|
| + TransformPoint(kTopLeftTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(kHalfTransformedSize, 0),
|
| + TransformPoint(kTopLeftTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(0, -kHalfTransformedSize),
|
| + TransformPoint(kTopLeftTransform, top_mid));
|
| + EXPECT_EQ(gfx::Point(0, kHalfTransformedSize),
|
| + TransformPoint(kTopLeftTransform, bottom_mid));
|
| +
|
| + // Top right circle
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kTopRightTransform, center));
|
| + EXPECT_EQ(gfx::Point(-kHalfTransformedSize, 0),
|
| + TransformPoint(kTopRightTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(kHalfTransformedSize, 0),
|
| + TransformPoint(kTopRightTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(0, -kHalfTransformedSize),
|
| + TransformPoint(kTopRightTransform, top_mid));
|
| + EXPECT_EQ(gfx::Point(0, kHalfTransformedSize),
|
| + TransformPoint(kTopRightTransform, bottom_mid));
|
| +
|
| + // Bottom right circle
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kBottomRightTransform, center));
|
| + EXPECT_EQ(gfx::Point(-kHalfTransformedSize, 0),
|
| + TransformPoint(kBottomRightTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(kHalfTransformedSize, 0),
|
| + TransformPoint(kBottomRightTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(0, -kHalfTransformedSize),
|
| + TransformPoint(kBottomRightTransform, top_mid));
|
| + EXPECT_EQ(gfx::Point(0, kHalfTransformedSize),
|
| + TransformPoint(kBottomRightTransform, bottom_mid));
|
| +
|
| + // Bottom left circle
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kBottomLeftTransform, center));
|
| + EXPECT_EQ(gfx::Point(-kHalfTransformedSize, 0),
|
| + TransformPoint(kBottomLeftTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(kHalfTransformedSize, 0),
|
| + TransformPoint(kBottomLeftTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(0, -kHalfTransformedSize),
|
| + TransformPoint(kBottomLeftTransform, top_mid));
|
| + EXPECT_EQ(gfx::Point(0, kHalfTransformedSize),
|
| + TransformPoint(kBottomLeftTransform, bottom_mid));
|
| +
|
| + // Horizontal rectangle
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kHorizontalTransform, center));
|
| + EXPECT_EQ(gfx::Point(-kHalfTransformedSize, 0),
|
| + TransformPoint(kHorizontalTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(kHalfTransformedSize, 0),
|
| + TransformPoint(kHorizontalTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kHorizontalTransform, top_mid));
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kHorizontalTransform, bottom_mid));
|
| +
|
| + // Vertical rectangle
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kVerticalTransform, center));
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kVerticalTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kVerticalTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(0, -kHalfTransformedSize),
|
| + TransformPoint(kVerticalTransform, top_mid));
|
| + EXPECT_EQ(gfx::Point(0, kHalfTransformedSize),
|
| + TransformPoint(kVerticalTransform, bottom_mid));
|
| +}
|
| +
|
| +TEST_F(InkDropAnimationTest,
|
| + TransformedPointsUsingTransformsFromCalculateRectTransforms) {
|
| + const int kHalfDrawnSize = 5;
|
| + const int kDrawnSize = 2 * kHalfDrawnSize;
|
| +
|
| + const int kTransformedRadius = 10;
|
| +
|
| + const int kHalfTransformedWidth = 100;
|
| + const int kTransformedWidth = 2 * kHalfTransformedWidth;
|
| +
|
| + const int kHalfTransformedHeight = 100;
|
| + const int kTransformedHeight = 2 * kHalfTransformedHeight;
|
| +
|
| + // Constant points in the drawn space that will be transformed.
|
| + const gfx::Point center(kHalfDrawnSize, kHalfDrawnSize);
|
| + const gfx::Point mid_left(0, kHalfDrawnSize);
|
| + const gfx::Point mid_right(kDrawnSize, kHalfDrawnSize);
|
| + const gfx::Point top_mid(kHalfDrawnSize, 0);
|
| + const gfx::Point bottom_mid(kHalfDrawnSize, kDrawnSize);
|
| +
|
| + scoped_ptr<InkDropAnimation> ink_drop_animation(
|
| + new InkDropAnimation(gfx::Size(kDrawnSize, kDrawnSize), 2,
|
| + gfx::Size(kHalfDrawnSize, kHalfDrawnSize), 1));
|
| + InkDropAnimationTestApi test_api(ink_drop_animation.get());
|
| +
|
| + InkDropAnimationTestApi::InkDropTransforms transforms;
|
| + test_api.CalculateRectTransforms(
|
| + gfx::SizeF(kTransformedWidth, kTransformedHeight), kTransformedRadius,
|
| + &transforms);
|
| +
|
| + // Transform variables to reduce verbosity of actual verification code.
|
| + const gfx::Transform kTopLeftTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::TOP_LEFT_CIRCLE];
|
| + const gfx::Transform kTopRightTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::TOP_RIGHT_CIRCLE];
|
| + const gfx::Transform kBottomRightTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::BOTTOM_RIGHT_CIRCLE];
|
| + const gfx::Transform kBottomLeftTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::BOTTOM_LEFT_CIRCLE];
|
| + const gfx::Transform kHorizontalTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::HORIZONTAL_RECT];
|
| + const gfx::Transform kVerticalTransform =
|
| + transforms[InkDropAnimationTestApi::PaintedShape::VERTICAL_RECT];
|
| +
|
| + const int x_offset = kHalfTransformedWidth - kTransformedRadius;
|
| + const int y_offset = kHalfTransformedWidth - kTransformedRadius;
|
| +
|
| + // Top left circle
|
| + EXPECT_EQ(gfx::Point(-x_offset, -y_offset),
|
| + TransformPoint(kTopLeftTransform, center));
|
| + EXPECT_EQ(gfx::Point(-kHalfTransformedWidth, -y_offset),
|
| + TransformPoint(kTopLeftTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(-x_offset, -kHalfTransformedHeight),
|
| + TransformPoint(kTopLeftTransform, top_mid));
|
| +
|
| + // Top right circle
|
| + EXPECT_EQ(gfx::Point(x_offset, -y_offset),
|
| + TransformPoint(kTopRightTransform, center));
|
| + EXPECT_EQ(gfx::Point(kHalfTransformedWidth, -y_offset),
|
| + TransformPoint(kTopRightTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(x_offset, -kHalfTransformedHeight),
|
| + TransformPoint(kTopRightTransform, top_mid));
|
| +
|
| + // Bottom right circle
|
| + EXPECT_EQ(gfx::Point(x_offset, y_offset),
|
| + TransformPoint(kBottomRightTransform, center));
|
| + EXPECT_EQ(gfx::Point(kHalfTransformedWidth, y_offset),
|
| + TransformPoint(kBottomRightTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(x_offset, kHalfTransformedHeight),
|
| + TransformPoint(kBottomRightTransform, bottom_mid));
|
| +
|
| + // Bottom left circle
|
| + EXPECT_EQ(gfx::Point(-x_offset, y_offset),
|
| + TransformPoint(kBottomLeftTransform, center));
|
| + EXPECT_EQ(gfx::Point(-kHalfTransformedWidth, y_offset),
|
| + TransformPoint(kBottomLeftTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(-x_offset, kHalfTransformedHeight),
|
| + TransformPoint(kBottomLeftTransform, bottom_mid));
|
| +
|
| + // Horizontal rectangle
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kHorizontalTransform, center));
|
| + EXPECT_EQ(gfx::Point(-kHalfTransformedWidth, 0),
|
| + TransformPoint(kHorizontalTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(kHalfTransformedWidth, 0),
|
| + TransformPoint(kHorizontalTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(0, -y_offset),
|
| + TransformPoint(kHorizontalTransform, top_mid));
|
| + EXPECT_EQ(gfx::Point(0, y_offset),
|
| + TransformPoint(kHorizontalTransform, bottom_mid));
|
| +
|
| + // Vertical rectangle
|
| + EXPECT_EQ(gfx::Point(0, 0), TransformPoint(kVerticalTransform, center));
|
| + EXPECT_EQ(gfx::Point(-x_offset, 0),
|
| + TransformPoint(kVerticalTransform, mid_left));
|
| + EXPECT_EQ(gfx::Point(x_offset, 0),
|
| + TransformPoint(kVerticalTransform, mid_right));
|
| + EXPECT_EQ(gfx::Point(0, -kHalfTransformedHeight),
|
| + TransformPoint(kVerticalTransform, top_mid));
|
| + EXPECT_EQ(gfx::Point(0, kHalfTransformedHeight),
|
| + TransformPoint(kVerticalTransform, bottom_mid));
|
| +}
|
| +
|
| +} // namespace test
|
| +} // namespace views
|
| +
|
| +#endif // UI_VIEWS_ANIMATION_INK_DROP_ANIMATION_UNITTEST_H_
|
|
|