@Test public void drawPath_shouldRecordThePointsOfEachPathEvenWhenItIsTheSameInstance() throws Exception { Canvas canvas = new Canvas(targetBitmap); Paint paint = new Paint(); Path path = new Path(); path.lineTo(10, 10); canvas.drawPath(path, paint); path.reset(); path.lineTo(20, 20); canvas.drawPath(path, paint); ShadowCanvas shadow = shadowOf(canvas); assertThat(shadow.getPathPaintHistoryCount()).isEqualTo(2); assertEquals(shadowOf(shadow.getDrawnPath(0)).getPoints().get(0), new ShadowPath.Point(10, 10, LINE_TO)); assertEquals(shadowOf(shadow.getDrawnPath(1)).getPoints().get(0), new ShadowPath.Point(20, 20, LINE_TO)); }
@Test public void drawPath_shouldRecordThePathAndThePaint() throws Exception { Canvas canvas = new Canvas(targetBitmap); Path path = new Path(); path.lineTo(10, 10); Paint paint = new Paint(); paint.setColor(Color.RED); paint.setAlpha(7); canvas.drawPath(path, paint); // changing the values on this Paint shouldn't affect recorded painted path paint.setColor(Color.BLUE); paint.setAlpha(8); ShadowCanvas shadow = shadowOf(canvas); assertThat(shadow.getPathPaintHistoryCount()).isEqualTo(1); ShadowPath drawnPath = shadowOf(shadow.getDrawnPath(0)); assertEquals(drawnPath.getPoints().get(0), new ShadowPath.Point(10, 10, LINE_TO)); Paint drawnPathPaint = shadow.getDrawnPathPaint(0); assertThat(drawnPathPaint.getColor()).isEqualTo(Color.RED); assertThat(drawnPathPaint.getAlpha()).isEqualTo(7); }