Remove ShadowColorMatrix - toString() @Implementation method support of Object.toString() will be removed soon.
Add ShadowColorMatrixColorFilter.getMatrix() + move description processing code into ShadowCanvas
PiperOrigin-RevId: 205160141
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowCanvas.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowCanvas.java
index ae1b846..6babbde 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowCanvas.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowCanvas.java
@@ -1,8 +1,12 @@
package org.robolectric.shadows;
+import static org.robolectric.Shadows.shadowOf;
+
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
@@ -13,6 +17,7 @@
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadow.api.Shadow;
+import org.robolectric.util.Join;
import org.robolectric.util.ReflectionHelpers;
/**
@@ -221,11 +226,29 @@
if (paint != null) {
ColorFilter colorFilter = paint.getColorFilter();
if (colorFilter != null) {
- appendDescription(" with " + colorFilter);
+ if (colorFilter instanceof ColorMatrixColorFilter) {
+ ColorMatrixColorFilter colorMatrixColorFilter = (ColorMatrixColorFilter) colorFilter;
+ ShadowColorMatrixColorFilter shadowColorMatrixColorFilter =
+ shadowOf(colorMatrixColorFilter);
+ ColorMatrix colorMatrix = shadowColorMatrixColorFilter.getMatrix();
+ appendDescription(" with ColorMatrixColorFilter<" + formatColorMatric(colorMatrix) + ">");
+ } else {
+ appendDescription(" with " + colorFilter);
+ }
}
}
}
+ private String formatColorMatric(ColorMatrix colorMatrix) {
+ List<String> floats = new ArrayList<>();
+ for (float f : colorMatrix.getArray()) {
+ String format = String.format("%.2f", f);
+ format = format.replace(".00", "");
+ floats.add(format);
+ }
+ return Join.join(",", floats);
+ }
+
private void separateLines() {
if (getDescription().length() != 0) {
appendDescription("\n");
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrix.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrix.java
deleted file mode 100644
index 5856a69..0000000
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrix.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.robolectric.shadows;
-
-import android.graphics.ColorMatrix;
-import java.util.ArrayList;
-import java.util.List;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.annotation.RealObject;
-import org.robolectric.util.Join;
-import org.robolectric.util.ReflectionHelpers;
-
-@SuppressWarnings({"UnusedDeclaration"})
-@Implements(ColorMatrix.class)
-public class ShadowColorMatrix {
-
- @RealObject ColorMatrix realColorMatrix;
-
- @Override @Implementation
- public String toString() {
- List<String> floats = new ArrayList<>();
- for (float f : getMatrix()) {
- String format = String.format("%.2f", f);
- format = format.replace(".00", "");
- floats.add(format);
- }
- return Join.join(",", floats);
- }
-
- private float[] getMatrix() {
- return ReflectionHelpers.getField(realColorMatrix, "mArray");
- }
-}
diff --git a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrixColorFilter.java b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrixColorFilter.java
index 2474e10..147fdc4 100644
--- a/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrixColorFilter.java
+++ b/shadows/framework/src/main/java/org/robolectric/shadows/ShadowColorMatrixColorFilter.java
@@ -20,8 +20,7 @@
this.matrix = new ColorMatrix(array);
}
- @Override @Implementation
- public String toString() {
- return "ColorMatrixColorFilter<" + matrix + ">";
+ ColorMatrix getMatrix() {
+ return matrix;
}
}