@@ -153,5 +153,59 @@ TEST_F(AiksTest, CanPerformSkew) {
153153 ASSERT_TRUE (OpenPlaygroundHere (canvas.EndRecordingAsPicture ()));
154154}
155155
156+ TEST_F (AiksTest, CanPerformSaveLayerWithBounds) {
157+ Canvas canvas;
158+
159+ Paint red;
160+ red.color = Color::Red ();
161+
162+ Paint green;
163+ green.color = Color::Green ();
164+
165+ Paint blue;
166+ blue.color = Color::Blue ();
167+
168+ Paint save;
169+ save.color = Color::Black ();
170+
171+ canvas.SaveLayer (save, Rect{0 , 0 , 50 , 50 });
172+
173+ canvas.DrawRect ({0 , 0 , 100 , 100 }, red);
174+ canvas.DrawRect ({10 , 10 , 100 , 100 }, green);
175+ canvas.DrawRect ({20 , 20 , 100 , 100 }, blue);
176+
177+ canvas.Restore ();
178+
179+ ASSERT_TRUE (OpenPlaygroundHere (canvas.EndRecordingAsPicture ()));
180+ }
181+
182+ TEST_F (
183+ AiksTest,
184+ DISABLED_CanPerformSaveLayerWithBoundsAndLargerIntermediateIsNotAllocated) {
185+ Canvas canvas;
186+
187+ Paint red;
188+ red.color = Color::Red ();
189+
190+ Paint green;
191+ green.color = Color::Green ();
192+
193+ Paint blue;
194+ blue.color = Color::Blue ();
195+
196+ Paint save;
197+ save.color = Color::Black ().WithAlpha (0.5 );
198+
199+ canvas.SaveLayer (save, Rect{0 , 0 , 100000 , 100000 });
200+
201+ canvas.DrawRect ({0 , 0 , 100 , 100 }, red);
202+ canvas.DrawRect ({10 , 10 , 100 , 100 }, green);
203+ canvas.DrawRect ({20 , 20 , 100 , 100 }, blue);
204+
205+ canvas.Restore ();
206+
207+ ASSERT_TRUE (OpenPlaygroundHere (canvas.EndRecordingAsPicture ()));
208+ }
209+
156210} // namespace testing
157211} // namespace impeller
0 commit comments