Update FontRenderingTests to handle 90x90 test area
bug:17109280
bug:22061465
Change-Id: I633e96fb6de6c5eb81b2c81004b28ba9093025a4
diff --git a/tests/expectations/knownfailures.txt b/tests/expectations/knownfailures.txt
index b6b5206..03bee1b 100644
--- a/tests/expectations/knownfailures.txt
+++ b/tests/expectations/knownfailures.txt
@@ -151,13 +151,6 @@
bug: 17144778
},
{
- description: "Roboto font tests are not yet known good on all devices",
- names: [
- "android.uirendering.cts.testclasses.FontRenderingTests"
- ],
- bug: 17109280
-},
-{
description: "android.keystore tests will replace these tests",
names: [
"com.android.org.conscrypt.MacTest#test_getInstance_OpenSSL_ENGINE",
diff --git a/tests/tests/uirendering/res/drawable-nodpi/black1.png b/tests/tests/uirendering/res/drawable-nodpi/black1.png
index 3487ced..bbfc2c1 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/black1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/black1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/blackitalic1.png b/tests/tests/uirendering/res/drawable-nodpi/blackitalic1.png
index 8fd3b50..6a8a830 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/blackitalic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/blackitalic1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/bold1.png b/tests/tests/uirendering/res/drawable-nodpi/bold1.png
index 199cccc..cd0465b 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/bold1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/bold1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/bolditalic1.png b/tests/tests/uirendering/res/drawable-nodpi/bolditalic1.png
index 985635e..0819c8a 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/bolditalic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/bolditalic1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/condensed1.png b/tests/tests/uirendering/res/drawable-nodpi/condensed1.png
index 6889a3a..16f03e2 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/condensed1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/condensed1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/condensedbold1.png b/tests/tests/uirendering/res/drawable-nodpi/condensedbold1.png
index 9554dee..98174f0 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/condensedbold1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/condensedbold1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/condensedbolditalic1.png b/tests/tests/uirendering/res/drawable-nodpi/condensedbolditalic1.png
index 0483355..8b017ba 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/condensedbolditalic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/condensedbolditalic1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/condenseditalic1.png b/tests/tests/uirendering/res/drawable-nodpi/condenseditalic1.png
index 6584147..5fc1f9c 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/condenseditalic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/condenseditalic1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/condensedlight1.png b/tests/tests/uirendering/res/drawable-nodpi/condensedlight1.png
index 49d01ac..1aca9cf 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/condensedlight1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/condensedlight1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/condensedlightitalic1.png b/tests/tests/uirendering/res/drawable-nodpi/condensedlightitalic1.png
index 6fe4a76..47ecd67 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/condensedlightitalic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/condensedlightitalic1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/hello1.png b/tests/tests/uirendering/res/drawable-nodpi/hello1.png
index 7a4be5a..6c9cb58 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/hello1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/hello1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/italic1.png b/tests/tests/uirendering/res/drawable-nodpi/italic1.png
index a5f9ef2..0afb3ae 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/italic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/italic1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/light1.png b/tests/tests/uirendering/res/drawable-nodpi/light1.png
index dfa59da..6822edb 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/light1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/light1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/lightitalic1.png b/tests/tests/uirendering/res/drawable-nodpi/lightitalic1.png
index 283ddc4..b49d2d6 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/lightitalic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/lightitalic1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/medium1.png b/tests/tests/uirendering/res/drawable-nodpi/medium1.png
index e615186..5b187bc 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/medium1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/medium1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/mediumitalic1.png b/tests/tests/uirendering/res/drawable-nodpi/mediumitalic1.png
index 3e15fc8..057edc0 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/mediumitalic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/mediumitalic1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/thin1.png b/tests/tests/uirendering/res/drawable-nodpi/thin1.png
index 9637262..a780f16 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/thin1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/thin1.png
Binary files differ
diff --git a/tests/tests/uirendering/res/drawable-nodpi/thinitalic1.png b/tests/tests/uirendering/res/drawable-nodpi/thinitalic1.png
index 0afbb9a..6ddb52b 100644
--- a/tests/tests/uirendering/res/drawable-nodpi/thinitalic1.png
+++ b/tests/tests/uirendering/res/drawable-nodpi/thinitalic1.png
Binary files differ
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/GoldenImageVerifier.java b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/GoldenImageVerifier.java
index d4a63de..42e8960 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/GoldenImageVerifier.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/bitmapverifiers/GoldenImageVerifier.java
@@ -25,8 +25,8 @@
private int[] mGoldenBitmapArray;
public GoldenImageVerifier(Bitmap goldenBitmap, BitmapComparer bitmapComparer) {
- mGoldenBitmapArray = new int[goldenBitmap.getWidth() * goldenBitmap.getHeight()];
- goldenBitmap.getPixels(mGoldenBitmapArray, 0, goldenBitmap.getWidth(), 0, 0,
+ mGoldenBitmapArray = new int[ActivityTestBase.TEST_WIDTH * ActivityTestBase.TEST_HEIGHT];
+ goldenBitmap.getPixels(mGoldenBitmapArray, 0, ActivityTestBase.TEST_WIDTH, 0, 0,
ActivityTestBase.TEST_WIDTH, ActivityTestBase.TEST_HEIGHT);
mBitmapComparer = bitmapComparer;
}
diff --git a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/FontRenderingTests.java b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/FontRenderingTests.java
index e7ed7ac..5833f20 100644
--- a/tests/tests/uirendering/src/android/uirendering/cts/testclasses/FontRenderingTests.java
+++ b/tests/tests/uirendering/src/android/uirendering/cts/testclasses/FontRenderingTests.java
@@ -32,17 +32,24 @@
import com.android.cts.uirendering.R;
public class FontRenderingTests extends ActivityTestBase {
- // Threshold is barely loose enough for differences between sw and hw renderers
- static double MSSIM_THRESHOLD = 0.91;
-
- private final BitmapComparer mFuzzyComparer = new MSSIMComparer(MSSIM_THRESHOLD);
+ // Thresholds are barely loose enough for differences between sw and hw renderers.
+ private static final double REGULAR_THRESHOLD = 0.92;
+ private static final double THIN_THRESHOLD = 0.87;
// Representative characters including some from Unicode 7
- private final String mTestString1 = "Hamburg \u20bd";
- private final String mTestString2 = "\u20b9\u0186\u0254\u1e24\u1e43";
+ private static final String sTestString1 = "Hambu";
+ private static final String sTestString2 = "rg \u20bd";
+ private static final String sTestString3 = "\u20b9\u0186\u0254\u1e24\u1e43";
- private void fontTestBody(final Typeface typeface, int id) {
+ private void fontTestBody(String family, int style, int id) {
Bitmap goldenBitmap = BitmapFactory.decodeResource(getActivity().getResources(), id);
+
+ // adjust threshold based on thinness - more variance is expected in thin cases
+ boolean thinTestCase = family.endsWith("-thin") && ((style & Typeface.BOLD) == 0);
+ BitmapComparer comparer = new MSSIMComparer(
+ thinTestCase ? THIN_THRESHOLD : REGULAR_THRESHOLD);
+
+ final Typeface typeface = Typeface.create(family, style);
createTest()
.addCanvasClient(new CanvasClient() {
@Override
@@ -50,174 +57,201 @@
Paint p = new Paint();
p.setAntiAlias(true);
p.setColor(Color.BLACK);
- p.setTextSize(30);
+ p.setTextSize(26);
p.setTypeface(typeface);
- canvas.drawText(mTestString1, 10, 60, p);
- canvas.drawText(mTestString2, 10, 100, p);
+ canvas.drawText(sTestString1, 1, 20, p);
+ canvas.drawText(sTestString2, 1, 50, p);
+ canvas.drawText(sTestString3, 1, 80, p);
}
})
- .runWithVerifier(new GoldenImageVerifier(goldenBitmap, mFuzzyComparer));
+ .runWithVerifier(new GoldenImageVerifier(goldenBitmap, comparer));
}
@SmallTest
public void testDefaultFont() {
- Typeface tf = Typeface.create("sans-serif", Typeface.NORMAL);
- fontTestBody(tf, R.drawable.hello1);
+ fontTestBody("sans-serif",
+ Typeface.NORMAL,
+ R.drawable.hello1);
}
@SmallTest
public void testBoldFont() {
- Typeface tf = Typeface.create("sans-serif", Typeface.BOLD);
- fontTestBody(tf, R.drawable.bold1);
+ fontTestBody("sans-serif",
+ Typeface.BOLD,
+ R.drawable.bold1);
}
@SmallTest
public void testItalicFont() {
- Typeface tf = Typeface.create("sans-serif", Typeface.ITALIC);
- fontTestBody(tf, R.drawable.italic1);
+ fontTestBody("sans-serif",
+ Typeface.ITALIC,
+ R.drawable.italic1);
}
@SmallTest
public void testBoldItalicFont() {
- Typeface tf = Typeface.create("sans-serif", Typeface.BOLD | Typeface.ITALIC);
- fontTestBody(tf, R.drawable.bolditalic1);
+ fontTestBody("sans-serif",
+ Typeface.BOLD | Typeface.ITALIC,
+ R.drawable.bolditalic1);
}
@SmallTest
public void testMediumFont() {
- Typeface tf = Typeface.create("sans-serif-medium", Typeface.NORMAL);
- fontTestBody(tf, R.drawable.medium1);
+ fontTestBody("sans-serif-medium",
+ Typeface.NORMAL,
+ R.drawable.medium1);
}
@SmallTest
public void testMediumBoldFont() {
// bold attribute on medium base font = black
- Typeface tf = Typeface.create("sans-serif-medium", Typeface.BOLD);
- fontTestBody(tf, R.drawable.black1);
+ fontTestBody("sans-serif-medium",
+ Typeface.BOLD,
+ R.drawable.black1);
}
@SmallTest
public void testMediumItalicFont() {
- Typeface tf = Typeface.create("sans-serif-medium", Typeface.ITALIC);
- fontTestBody(tf, R.drawable.mediumitalic1);
+ fontTestBody("sans-serif-medium",
+ Typeface.ITALIC,
+ R.drawable.mediumitalic1);
}
@SmallTest
public void testMediumBoldItalicFont() {
- Typeface tf = Typeface.create("sans-serif-medium", Typeface.BOLD | Typeface.ITALIC);
- fontTestBody(tf, R.drawable.blackitalic1);
+ fontTestBody("sans-serif-medium",
+ Typeface.BOLD | Typeface.ITALIC,
+ R.drawable.blackitalic1);
}
@SmallTest
public void testLightFont() {
- Typeface tf = Typeface.create("sans-serif-light", Typeface.NORMAL);
- fontTestBody(tf, R.drawable.light1);
+ fontTestBody("sans-serif-light",
+ Typeface.NORMAL,
+ R.drawable.light1);
}
@SmallTest
public void testLightBoldFont() {
// bold attribute on light base font = medium
- Typeface tf = Typeface.create("sans-serif-light", Typeface.BOLD);
- fontTestBody(tf, R.drawable.medium1);
+ fontTestBody("sans-serif-light",
+ Typeface.BOLD,
+ R.drawable.medium1);
}
@SmallTest
public void testLightItalicFont() {
- Typeface tf = Typeface.create("sans-serif-light", Typeface.ITALIC);
- fontTestBody(tf, R.drawable.lightitalic1);
+ fontTestBody("sans-serif-light",
+ Typeface.ITALIC,
+ R.drawable.lightitalic1);
}
@SmallTest
public void testLightBoldItalicFont() {
- Typeface tf = Typeface.create("sans-serif-light", Typeface.BOLD | Typeface.ITALIC);
- fontTestBody(tf, R.drawable.mediumitalic1);
+ fontTestBody("sans-serif-light",
+ Typeface.BOLD | Typeface.ITALIC,
+ R.drawable.mediumitalic1);
}
@SmallTest
public void testThinFont() {
- Typeface tf = Typeface.create("sans-serif-thin", Typeface.NORMAL);
- fontTestBody(tf, R.drawable.thin1);
+ fontTestBody("sans-serif-thin",
+ Typeface.NORMAL,
+ R.drawable.thin1);
}
@SmallTest
public void testThinBoldFont() {
// bold attribute on thin base font = normal
- Typeface tf = Typeface.create("sans-serif-thin", Typeface.BOLD);
- fontTestBody(tf, R.drawable.hello1);
+ fontTestBody("sans-serif-thin",
+ Typeface.BOLD,
+ R.drawable.hello1);
}
@SmallTest
public void testThinItalicFont() {
- Typeface tf = Typeface.create("sans-serif-thin", Typeface.ITALIC);
- fontTestBody(tf, R.drawable.thinitalic1);
+ fontTestBody("sans-serif-thin",
+ Typeface.ITALIC,
+ R.drawable.thinitalic1);
}
@SmallTest
public void testThinBoldItalicFont() {
- Typeface tf = Typeface.create("sans-serif-thin", Typeface.BOLD | Typeface.ITALIC);
- fontTestBody(tf, R.drawable.italic1);
+ fontTestBody("sans-serif-thin",
+ Typeface.BOLD | Typeface.ITALIC,
+ R.drawable.italic1);
}
@SmallTest
public void testBlackFont() {
- Typeface tf = Typeface.create("sans-serif-black", Typeface.NORMAL);
- fontTestBody(tf, R.drawable.black1);
+ fontTestBody("sans-serif-black",
+ Typeface.NORMAL,
+ R.drawable.black1);
}
@SmallTest
public void testBlackBoldFont() {
// bold attribute on black base font = black
- Typeface tf = Typeface.create("sans-serif-black", Typeface.BOLD);
- fontTestBody(tf, R.drawable.black1);
+ fontTestBody("sans-serif-black",
+ Typeface.BOLD,
+ R.drawable.black1);
}
@SmallTest
public void testBlackItalicFont() {
- Typeface tf = Typeface.create("sans-serif-black", Typeface.ITALIC);
- fontTestBody(tf, R.drawable.blackitalic1);
+ fontTestBody("sans-serif-black",
+ Typeface.ITALIC,
+ R.drawable.blackitalic1);
}
@SmallTest
public void testBlackBoldItalicFont() {
- Typeface tf = Typeface.create("sans-serif-black", Typeface.BOLD | Typeface.ITALIC);
- fontTestBody(tf, R.drawable.blackitalic1);
+ fontTestBody("sans-serif-black",
+ Typeface.BOLD | Typeface.ITALIC,
+ R.drawable.blackitalic1);
}
/* condensed fonts */
@SmallTest
public void testCondensedFont() {
- Typeface tf = Typeface.create("sans-serif-condensed", Typeface.NORMAL);
- fontTestBody(tf, R.drawable.condensed1);
+ fontTestBody("sans-serif-condensed",
+ Typeface.NORMAL,
+ R.drawable.condensed1);
}
@SmallTest
public void testCondensedBoldFont() {
- Typeface tf = Typeface.create("sans-serif-condensed", Typeface.BOLD);
- fontTestBody(tf, R.drawable.condensedbold1);
+ fontTestBody("sans-serif-condensed",
+ Typeface.BOLD,
+ R.drawable.condensedbold1);
}
@SmallTest
public void testCondensedItalicFont() {
- Typeface tf = Typeface.create("sans-serif-condensed", Typeface.ITALIC);
- fontTestBody(tf, R.drawable.condenseditalic1);
+ fontTestBody("sans-serif-condensed",
+ Typeface.ITALIC,
+ R.drawable.condenseditalic1);
}
@SmallTest
public void testCondensedBoldItalicFont() {
- Typeface tf = Typeface.create("sans-serif-condensed", Typeface.BOLD | Typeface.ITALIC);
- fontTestBody(tf, R.drawable.condensedbolditalic1);
+ fontTestBody("sans-serif-condensed",
+ Typeface.BOLD | Typeface.ITALIC,
+ R.drawable.condensedbolditalic1);
}
@SmallTest
public void testCondensedLightFont() {
- Typeface tf = Typeface.create("sans-serif-condensed-light", Typeface.NORMAL);
- fontTestBody(tf, R.drawable.condensedlight1);
+ fontTestBody("sans-serif-condensed-light",
+ Typeface.NORMAL,
+ R.drawable.condensedlight1);
}
@SmallTest
public void testCondensedLightItalicFont() {
- Typeface tf = Typeface.create("sans-serif-condensed-light", Typeface.ITALIC);
- fontTestBody(tf, R.drawable.condensedlightitalic1);
+ fontTestBody("sans-serif-condensed-light",
+ Typeface.ITALIC,
+ R.drawable.condensedlightitalic1);
}
}