| // Copyright 2013 The Flutter 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 "flutter/flow/embedded_views.h" |
| #include "gtest/gtest.h" |
| |
| namespace flutter { |
| namespace testing { |
| |
| TEST(MutatorsStack, Initialization) { |
| MutatorsStack stack; |
| ASSERT_TRUE(true); |
| } |
| |
| TEST(MutatorsStack, CopyConstructor) { |
| MutatorsStack stack; |
| auto rrect = SkRRect::MakeEmpty(); |
| auto rect = SkRect::MakeEmpty(); |
| stack.PushClipRect(rect); |
| stack.PushClipRRect(rrect); |
| MutatorsStack copy = MutatorsStack(stack); |
| ASSERT_TRUE(copy == stack); |
| } |
| |
| TEST(MutatorsStack, CopyAndUpdateTheCopy) { |
| MutatorsStack stack; |
| auto rrect = SkRRect::MakeEmpty(); |
| auto rect = SkRect::MakeEmpty(); |
| stack.PushClipRect(rect); |
| stack.PushClipRRect(rrect); |
| MutatorsStack copy = MutatorsStack(stack); |
| copy.Pop(); |
| copy.Pop(); |
| ASSERT_TRUE(copy != stack); |
| ASSERT_TRUE(copy.is_empty()); |
| ASSERT_TRUE(!stack.is_empty()); |
| auto iter = stack.Bottom(); |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); |
| ASSERT_TRUE(iter->get()->GetRRect() == rrect); |
| ++iter; |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); |
| ASSERT_TRUE(iter->get()->GetRect() == rect); |
| } |
| |
| TEST(MutatorsStack, PushClipRect) { |
| MutatorsStack stack; |
| auto rect = SkRect::MakeEmpty(); |
| stack.PushClipRect(rect); |
| auto iter = stack.Bottom(); |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); |
| ASSERT_TRUE(iter->get()->GetRect() == rect); |
| } |
| |
| TEST(MutatorsStack, PushClipRRect) { |
| MutatorsStack stack; |
| auto rrect = SkRRect::MakeEmpty(); |
| stack.PushClipRRect(rrect); |
| auto iter = stack.Bottom(); |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); |
| ASSERT_TRUE(iter->get()->GetRRect() == rrect); |
| } |
| |
| TEST(MutatorsStack, PushClipPath) { |
| MutatorsStack stack; |
| SkPath path; |
| stack.PushClipPath(path); |
| auto iter = stack.Bottom(); |
| ASSERT_TRUE(iter->get()->GetType() == flutter::MutatorType::clip_path); |
| ASSERT_TRUE(iter->get()->GetPath() == path); |
| } |
| |
| TEST(MutatorsStack, PushTransform) { |
| MutatorsStack stack; |
| SkMatrix matrix; |
| matrix.setIdentity(); |
| stack.PushTransform(matrix); |
| auto iter = stack.Bottom(); |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::transform); |
| ASSERT_TRUE(iter->get()->GetMatrix() == matrix); |
| } |
| |
| TEST(MutatorsStack, PushOpacity) { |
| MutatorsStack stack; |
| int alpha = 240; |
| stack.PushOpacity(alpha); |
| auto iter = stack.Bottom(); |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::opacity); |
| ASSERT_TRUE(iter->get()->GetAlpha() == 240); |
| } |
| |
| TEST(MutatorsStack, Pop) { |
| MutatorsStack stack; |
| SkMatrix matrix; |
| matrix.setIdentity(); |
| stack.PushTransform(matrix); |
| stack.Pop(); |
| auto iter = stack.Bottom(); |
| ASSERT_TRUE(iter == stack.Top()); |
| } |
| |
| TEST(MutatorsStack, Traversal) { |
| MutatorsStack stack; |
| SkMatrix matrix; |
| matrix.setIdentity(); |
| stack.PushTransform(matrix); |
| auto rect = SkRect::MakeEmpty(); |
| stack.PushClipRect(rect); |
| auto rrect = SkRRect::MakeEmpty(); |
| stack.PushClipRRect(rrect); |
| auto iter = stack.Bottom(); |
| int index = 0; |
| while (iter != stack.Top()) { |
| switch (index) { |
| case 0: |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rrect); |
| ASSERT_TRUE(iter->get()->GetRRect() == rrect); |
| break; |
| case 1: |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::clip_rect); |
| ASSERT_TRUE(iter->get()->GetRect() == rect); |
| break; |
| case 2: |
| ASSERT_TRUE(iter->get()->GetType() == MutatorType::transform); |
| ASSERT_TRUE(iter->get()->GetMatrix() == matrix); |
| break; |
| default: |
| break; |
| } |
| ++iter; |
| ++index; |
| } |
| } |
| |
| TEST(MutatorsStack, Equality) { |
| MutatorsStack stack; |
| SkMatrix matrix = SkMatrix::Scale(1, 1); |
| stack.PushTransform(matrix); |
| SkRect rect = SkRect::MakeEmpty(); |
| stack.PushClipRect(rect); |
| SkRRect rrect = SkRRect::MakeEmpty(); |
| stack.PushClipRRect(rrect); |
| SkPath path; |
| stack.PushClipPath(path); |
| int alpha = 240; |
| stack.PushOpacity(alpha); |
| |
| MutatorsStack stackOther; |
| SkMatrix matrixOther = SkMatrix::Scale(1, 1); |
| stackOther.PushTransform(matrixOther); |
| SkRect rectOther = SkRect::MakeEmpty(); |
| stackOther.PushClipRect(rectOther); |
| SkRRect rrectOther = SkRRect::MakeEmpty(); |
| stackOther.PushClipRRect(rrectOther); |
| SkPath otherPath; |
| stackOther.PushClipPath(otherPath); |
| int otherAlpha = 240; |
| stackOther.PushOpacity(otherAlpha); |
| |
| ASSERT_TRUE(stack == stackOther); |
| } |
| |
| TEST(Mutator, Initialization) { |
| SkRect rect = SkRect::MakeEmpty(); |
| Mutator mutator = Mutator(rect); |
| ASSERT_TRUE(mutator.GetType() == MutatorType::clip_rect); |
| ASSERT_TRUE(mutator.GetRect() == rect); |
| |
| SkRRect rrect = SkRRect::MakeEmpty(); |
| Mutator mutator2 = Mutator(rrect); |
| ASSERT_TRUE(mutator2.GetType() == MutatorType::clip_rrect); |
| ASSERT_TRUE(mutator2.GetRRect() == rrect); |
| |
| SkPath path; |
| Mutator mutator3 = Mutator(path); |
| ASSERT_TRUE(mutator3.GetType() == MutatorType::clip_path); |
| ASSERT_TRUE(mutator3.GetPath() == path); |
| |
| SkMatrix matrix; |
| matrix.setIdentity(); |
| Mutator mutator4 = Mutator(matrix); |
| ASSERT_TRUE(mutator4.GetType() == MutatorType::transform); |
| ASSERT_TRUE(mutator4.GetMatrix() == matrix); |
| |
| int alpha = 240; |
| Mutator mutator5 = Mutator(alpha); |
| ASSERT_TRUE(mutator5.GetType() == MutatorType::opacity); |
| } |
| |
| TEST(Mutator, CopyConstructor) { |
| SkRect rect = SkRect::MakeEmpty(); |
| Mutator mutator = Mutator(rect); |
| Mutator copy = Mutator(mutator); |
| ASSERT_TRUE(mutator == copy); |
| |
| SkRRect rrect = SkRRect::MakeEmpty(); |
| Mutator mutator2 = Mutator(rrect); |
| Mutator copy2 = Mutator(mutator2); |
| ASSERT_TRUE(mutator2 == copy2); |
| |
| SkPath path; |
| Mutator mutator3 = Mutator(path); |
| Mutator copy3 = Mutator(mutator3); |
| ASSERT_TRUE(mutator3 == copy3); |
| |
| SkMatrix matrix; |
| matrix.setIdentity(); |
| Mutator mutator4 = Mutator(matrix); |
| Mutator copy4 = Mutator(mutator4); |
| ASSERT_TRUE(mutator4 == copy4); |
| |
| int alpha = 240; |
| Mutator mutator5 = Mutator(alpha); |
| Mutator copy5 = Mutator(mutator5); |
| ASSERT_TRUE(mutator5 == copy5); |
| } |
| |
| TEST(Mutator, Equality) { |
| SkMatrix matrix; |
| matrix.setIdentity(); |
| Mutator mutator = Mutator(matrix); |
| Mutator otherMutator = Mutator(matrix); |
| ASSERT_TRUE(mutator == otherMutator); |
| |
| SkRect rect = SkRect::MakeEmpty(); |
| Mutator mutator2 = Mutator(rect); |
| Mutator otherMutator2 = Mutator(rect); |
| ASSERT_TRUE(mutator2 == otherMutator2); |
| |
| SkRRect rrect = SkRRect::MakeEmpty(); |
| Mutator mutator3 = Mutator(rrect); |
| Mutator otherMutator3 = Mutator(rrect); |
| ASSERT_TRUE(mutator3 == otherMutator3); |
| |
| SkPath path; |
| flutter::Mutator mutator4 = flutter::Mutator(path); |
| flutter::Mutator otherMutator4 = flutter::Mutator(path); |
| ASSERT_TRUE(mutator4 == otherMutator4); |
| ASSERT_FALSE(mutator2 == mutator); |
| int alpha = 240; |
| Mutator mutator5 = Mutator(alpha); |
| Mutator otherMutator5 = Mutator(alpha); |
| ASSERT_TRUE(mutator5 == otherMutator5); |
| } |
| |
| TEST(Mutator, UnEquality) { |
| SkRect rect = SkRect::MakeEmpty(); |
| Mutator mutator = Mutator(rect); |
| SkMatrix matrix; |
| matrix.setIdentity(); |
| Mutator notEqualMutator = Mutator(matrix); |
| ASSERT_TRUE(notEqualMutator != mutator); |
| |
| int alpha = 240; |
| int alpha2 = 241; |
| Mutator mutator2 = Mutator(alpha); |
| Mutator otherMutator2 = Mutator(alpha2); |
| ASSERT_TRUE(mutator2 != otherMutator2); |
| } |
| |
| } // namespace testing |
| } // namespace flutter |