| // 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/layers/physical_shape_layer.h" |
| |
| #include "gtest/gtest.h" |
| |
| namespace flutter { |
| |
| TEST(PhysicalShapeLayer, TotalElevation) { |
| std::shared_ptr<PhysicalShapeLayer> layers[4]; |
| |
| SkColor dummy_color = 0; |
| SkPath dummy_path; |
| for (int i = 0; i < 4; i += 1) { |
| layers[i] = |
| std::make_shared<PhysicalShapeLayer>(dummy_color, dummy_color, |
| 1.0f, // pixel ratio, |
| 1.0f, // depth |
| (float)(i + 1), // elevation |
| dummy_path, Clip::none); |
| } |
| |
| layers[0]->Add(layers[1]); |
| layers[0]->Add(layers[2]); |
| layers[2]->Add(layers[3]); |
| |
| const Stopwatch unused_stopwatch; |
| TextureRegistry unused_texture_registry; |
| MutatorsStack unused_stack; |
| PrerollContext preroll_context{ |
| nullptr, // raster_cache (don't consult the cache) |
| nullptr, // gr_context (used for the raster cache) |
| nullptr, // external view embedder |
| unused_stack, // mutator stack |
| nullptr, // SkColorSpace* dst_color_space |
| kGiantRect, // SkRect cull_rect |
| unused_stopwatch, // frame time (dont care) |
| unused_stopwatch, // engine time (dont care) |
| unused_texture_registry, // texture registry (not supported) |
| false, // checkerboard_offscreen_layers |
| 0.0f, // total elevation |
| }; |
| |
| SkMatrix identity; |
| identity.setIdentity(); |
| |
| layers[0]->Preroll(&preroll_context, identity); |
| |
| // It should look like this: |
| // layers[0] +1.0f |
| // | \ |
| // | \ |
| // | \ |
| // | layers[2] +3.0f |
| // | | |
| // | layers[3] +4.0f |
| // | |
| // | |
| // layers[1] + 2.0f |
| EXPECT_EQ(layers[0]->total_elevation_, 1.0f); |
| EXPECT_EQ(layers[1]->total_elevation_, 3.0f); |
| EXPECT_EQ(layers[2]->total_elevation_, 4.0f); |
| EXPECT_EQ(layers[3]->total_elevation_, 8.0f); |
| } |
| |
| } // namespace flutter |