Tests for Resources.getFont
Test: run cts -m CtsContentTestCases -t
android.content.res.cts.ResourcesTest
run cts -m CtsWidgetTestCases -t
android.widget.cts.TextViewTest
Change-Id: Ib18cf6bf588113e8cd3279b195366f31d3a0fe14
diff --git a/tests/tests/content/res/font/samplefont.ttf b/tests/tests/content/res/font/samplefont.ttf
new file mode 100644
index 0000000..49f1c62
--- /dev/null
+++ b/tests/tests/content/res/font/samplefont.ttf
Binary files differ
diff --git a/tests/tests/content/res/font/samplexmlfont.xml b/tests/tests/content/res/font/samplexmlfont.xml
new file mode 100644
index 0000000..2905c13
--- /dev/null
+++ b/tests/tests/content/res/font/samplexmlfont.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<font-family xmlns:android="http://schemas.android.com/apk/res/android">
+ <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/samplefont" />
+</font-family>
\ No newline at end of file
diff --git a/tests/tests/content/src/android/content/res/cts/ResourcesTest.java b/tests/tests/content/src/android/content/res/cts/ResourcesTest.java
index 18b1fd3..917f184 100644
--- a/tests/tests/content/src/android/content/res/cts/ResourcesTest.java
+++ b/tests/tests/content/src/android/content/res/cts/ResourcesTest.java
@@ -31,6 +31,7 @@
import android.content.res.Resources.NotFoundException;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
+import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -706,4 +707,41 @@
is.close();
}
+
+ public void testGetFont_invalidResourceId() {
+ try {
+ mResources.getFont(-1);
+ fail("Font resource -1 should not be found.");
+ } catch (NotFoundException e) {
+ //expected
+ }
+ }
+
+ public void testGetFont_fontFile() {
+ Typeface font = mResources.getFont(R.font.samplefont);
+
+ assertNotNull(font);
+ assertNotSame(Typeface.DEFAULT, font);
+ }
+
+ public void testGetFont_xmlFile() {
+ Typeface font = mResources.getFont(R.font.samplexmlfont);
+
+ assertNotNull(font);
+ assertNotSame(Typeface.DEFAULT, font);
+ }
+
+ public void testGetFont_fontFileIsCached() {
+ Typeface font = mResources.getFont(R.font.samplefont);
+ Typeface font2 = mResources.getFont(R.font.samplefont);
+
+ assertEquals(font, font2);
+ }
+
+ public void testGetFont_xmlFileIsCached() {
+ Typeface font = mResources.getFont(R.font.samplexmlfont);
+ Typeface font2 = mResources.getFont(R.font.samplexmlfont);
+
+ assertEquals(font, font2);
+ }
}
diff --git a/tests/tests/widget/res/font/samplefont.ttf b/tests/tests/widget/res/font/samplefont.ttf
new file mode 100644
index 0000000..49f1c62
--- /dev/null
+++ b/tests/tests/widget/res/font/samplefont.ttf
Binary files differ
diff --git a/tests/tests/widget/res/font/samplexmlfont.xml b/tests/tests/widget/res/font/samplexmlfont.xml
new file mode 100644
index 0000000..2905c13
--- /dev/null
+++ b/tests/tests/widget/res/font/samplexmlfont.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<font-family xmlns:android="http://schemas.android.com/apk/res/android">
+ <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/samplefont" />
+</font-family>
\ No newline at end of file
diff --git a/tests/tests/widget/res/layout/textview_layout.xml b/tests/tests/widget/res/layout/textview_layout.xml
index 1af5557..33566df 100644
--- a/tests/tests/widget/res/layout/textview_layout.xml
+++ b/tests/tests/widget/res/layout/textview_layout.xml
@@ -287,6 +287,48 @@
android:autoSizeMaxTextSize="50dp"
android:autoSizeStepGranularity="1dp" />
+ <TextView
+ android:id="@+id/textview_fontresource_fontfamily"
+ android:text="@string/text_view_hello"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:fontFamily="@font/samplefont" />
+
+ <TextView
+ android:id="@+id/textview_fontxmlresource_fontfamily"
+ android:text="@string/text_view_hello"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:fontFamily="@font/samplexmlfont" />
+
+ <TextView
+ android:id="@+id/textview_fontresource_style"
+ android:text="@string/text_view_hello"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/TextView_FontResource" />
+
+ <TextView
+ android:id="@+id/textview_fontxmlresource_style"
+ android:text="@string/text_view_hello"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/TextView_FontXmlResource" />
+
+ <TextView
+ android:id="@+id/textview_fontresource_textAppearance"
+ android:text="@string/text_view_hello"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextView_FontResource" />
+
+ <TextView
+ android:id="@+id/textview_fontxmlresource_textAppearance"
+ android:text="@string/text_view_hello"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/TextView_FontXmlResource" />
+
</LinearLayout>
</ScrollView>
diff --git a/tests/tests/widget/res/values/styles.xml b/tests/tests/widget/res/values/styles.xml
index 7ba9711..a47f169 100644
--- a/tests/tests/widget/res/values/styles.xml
+++ b/tests/tests/widget/res/values/styles.xml
@@ -227,4 +227,13 @@
<!-- Force swipe-to-dismiss to false. -->
<item name="android:windowSwipeToDismiss">false</item>
</style>
+
+ <style name="TextView_FontResource">
+ <item name="android:fontFamily">@font/samplefont</item>
+ <item name="android:textAppearance">@null</item>
+ </style>
+
+ <style name="TextView_FontXmlResource">
+ <item name="android:fontFamily">@font/samplexmlfont</item>
+ </style>
</resources>
diff --git a/tests/tests/widget/src/android/widget/cts/TextViewTest.java b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
index 46755c0..31ecbb0 100644
--- a/tests/tests/widget/src/android/widget/cts/TextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
@@ -6792,6 +6792,53 @@
assertEquals(selection.getSelectionEndIndex(), mTextView.getSelectionEnd());
// TODO: Test the floating toolbar content.
}
+ @Test
+ public void testFontResources_setInXmlFamilyName() {
+ mTextView = findTextView(R.id.textview_fontresource_fontfamily);
+ Typeface expected = mActivity.getResources().getFont(R.font.samplefont);
+
+ assertEquals(expected, mTextView.getTypeface());
+ }
+
+ @Test
+ public void testFontResourcesXml_setInXmlFamilyName() {
+ mTextView = findTextView(R.id.textview_fontxmlresource_fontfamily);
+ Typeface expected = mActivity.getResources().getFont(R.font.samplexmlfont);
+
+ assertEquals(expected, mTextView.getTypeface());
+ }
+
+ @Test
+ public void testFontResources_setInXmlStyle() {
+ mTextView = findTextView(R.id.textview_fontresource_style);
+ Typeface expected = mActivity.getResources().getFont(R.font.samplefont);
+
+ assertEquals(expected, mTextView.getTypeface());
+ }
+
+ @Test
+ public void testFontResourcesXml_setInXmlStyle() {
+ mTextView = findTextView(R.id.textview_fontxmlresource_style);
+ Typeface expected = mActivity.getResources().getFont(R.font.samplexmlfont);
+
+ assertEquals(expected, mTextView.getTypeface());
+ }
+
+ @Test
+ public void testFontResources_setInXmlTextAppearance() {
+ mTextView = findTextView(R.id.textview_fontresource_textAppearance);
+ Typeface expected = mActivity.getResources().getFont(R.font.samplefont);
+
+ assertEquals(expected, mTextView.getTypeface());
+ }
+
+ @Test
+ public void testFontResourcesXml_setInXmlTextAppearance() {
+ mTextView = findTextView(R.id.textview_fontxmlresource_textAppearance);
+ Typeface expected = mActivity.getResources().getFont(R.font.samplexmlfont);
+
+ assertEquals(expected, mTextView.getTypeface());
+ }
/**
* Some TextView attributes require non-fixed width and/or layout height. This function removes