Merge "Fix FrameworksCoreTest failue due to system font modification"

This commit is contained in:
TreeHugger Robot
2022-07-01 01:26:02 +00:00
committed by Android (Google) Code Review

View File

@@ -41,6 +41,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import java.nio.ByteOrder;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
@@ -218,6 +219,10 @@ public class TypefaceTest {
@SmallTest
@Test
public void testSetSystemFontMap() throws Exception {
// Typeface.setSystemFontMap mutate the returned map. So copying for the backup.
HashMap<String, Typeface> backup = new HashMap<>(Typeface.getSystemFontMap());
Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
Resources res = context.getResources();
Map<String, Typeface> fontMap = Map.of(
@@ -226,27 +231,38 @@ public class TypefaceTest {
"monospace", Typeface.create(res.getFont(R.font.samplefont3), Typeface.NORMAL),
"sample", Typeface.create(res.getFont(R.font.samplefont4), Typeface.NORMAL),
"sample-italic", Typeface.create(res.getFont(R.font.samplefont4), Typeface.ITALIC));
Typeface.setSystemFontMap(fontMap);
// Test public static final fields
assertEquals(fontMap.get("sans-serif"), Typeface.DEFAULT);
assertEquals(Typeface.BOLD, Typeface.DEFAULT_BOLD.getStyle());
assertEquals(fontMap.get("sans-serif"), Typeface.SANS_SERIF);
assertEquals(fontMap.get("serif"), Typeface.SERIF);
assertEquals(fontMap.get("monospace"), Typeface.MONOSPACE);
try {
Typeface.setSystemFontMap(fontMap);
// Test defaults
assertEquals(fontMap.get("sans-serif"), Typeface.defaultFromStyle(Typeface.NORMAL));
for (int style : STYLES) {
String msg = "style = " + style;
assertNotNull(msg, Typeface.defaultFromStyle(style));
assertEquals(msg, style, Typeface.defaultFromStyle(style).getStyle());
// Test public static final fields
assertEquals(fontMap.get("sans-serif"), Typeface.DEFAULT);
assertEquals(Typeface.BOLD, Typeface.DEFAULT_BOLD.getStyle());
assertEquals(fontMap.get("sans-serif"), Typeface.SANS_SERIF);
assertEquals(fontMap.get("serif"), Typeface.SERIF);
assertEquals(fontMap.get("monospace"), Typeface.MONOSPACE);
// Test defaults
assertEquals(fontMap.get("sans-serif"), Typeface.defaultFromStyle(Typeface.NORMAL));
for (int style : STYLES) {
String msg = "style = " + style;
assertNotNull(msg, Typeface.defaultFromStyle(style));
assertEquals(msg, style, Typeface.defaultFromStyle(style).getStyle());
}
// Test create()
assertEquals(fontMap.get("sample"), Typeface.create("sample", Typeface.NORMAL));
assertEquals(
fontMap.get("sample-italic"),
Typeface.create("sample-italic", Typeface.ITALIC));
} finally {
// This tests breaks many default font configuration and break the assumption of the
// subsequent test cases. To recover the original configuration, call the
// setSystemFontMap function with the original data even if it is a test target.
// Ideally, this test should be isolated and app should be restart after this test
// been executed.
Typeface.setSystemFontMap(backup);
}
// Test create()
assertEquals(fontMap.get("sample"), Typeface.create("sample", Typeface.NORMAL));
assertEquals(
fontMap.get("sample-italic"), Typeface.create("sample-italic", Typeface.ITALIC));
}
private static float measureText(Typeface typeface, String text) {