Fix FrameworksCoreTest failue due to system font modification
Bug: 230618860
Bug: 230619302
Test: atest FrameworksCoreTests:android.graphics \
FrameworksCoreTests:android.text
Change-Id: I3fcd7ac97141f587e9a009265f1955abad27479b
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user