• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.content.res;
18 
19 import static android.content.res.FontResourcesParser.FamilyResourceEntry;
20 import static android.content.res.FontResourcesParser.FontFamilyFilesResourceEntry;
21 import static android.content.res.FontResourcesParser.FontFileResourceEntry;
22 import static android.content.res.FontResourcesParser.ProviderResourceEntry;
23 
24 import static junit.framework.Assert.assertTrue;
25 
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28 
29 import android.platform.test.annotations.Presubmit;
30 import android.platform.test.ravenwood.RavenwoodRule;
31 
32 import androidx.test.ext.junit.runners.AndroidJUnit4;
33 import androidx.test.filters.SmallTest;
34 import androidx.test.platform.app.InstrumentationRegistry;
35 
36 import com.android.frameworks.coretests.R;
37 
38 import org.junit.Before;
39 import org.junit.Rule;
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 import org.xmlpull.v1.XmlPullParserException;
43 
44 import java.io.IOException;
45 import java.util.List;
46 
47 /**
48  * Tests for {@link FontResourcesParser}.
49  */
50 @Presubmit
51 @SmallTest
52 @RunWith(AndroidJUnit4.class)
53 public class FontResourcesParserTest {
54 
55     @Rule
56     public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder().build();
57 
58     private Resources mResources;
59 
60     @Before
setup()61     public void setup() {
62         mResources = InstrumentationRegistry.getInstrumentation().getContext().getResources();
63     }
64 
65     @Test
testParse()66     public void testParse() throws XmlPullParserException, IOException {
67         XmlResourceParser parser = mResources.getXml(R.font.samplexmlfontforparsing);
68 
69         FamilyResourceEntry result = FontResourcesParser.parse(parser, mResources);
70 
71         assertNotNull(result);
72         FontFamilyFilesResourceEntry filesEntry = (FontFamilyFilesResourceEntry) result;
73         FontFileResourceEntry[] fileEntries = filesEntry.getEntries();
74         assertEquals(4, fileEntries.length);
75         FontFileResourceEntry font1 = fileEntries[0];
76         assertEquals(400, font1.getWeight());
77         assertEquals(0, font1.getItalic());
78         assertEquals("'wdth' 0.8", font1.getVariationSettings());
79         assertEquals(0, font1.getTtcIndex());
80         assertEquals("res/font/samplefont.ttf", font1.getFileName());
81         FontFileResourceEntry font2 = fileEntries[1];
82         assertEquals(400, font2.getWeight());
83         assertEquals(1, font2.getItalic());
84         assertEquals(1, font2.getTtcIndex());
85         assertEquals("'cntr' 0.5", font2.getVariationSettings());
86         assertEquals("res/font/samplefont2.ttf", font2.getFileName());
87         FontFileResourceEntry font3 = fileEntries[2];
88         assertEquals(800, font3.getWeight());
89         assertEquals(0, font3.getItalic());
90         assertEquals(2, font3.getTtcIndex());
91         assertEquals("'wdth' 500.0, 'wght' 300.0", font3.getVariationSettings());
92         assertEquals("res/font/samplefont3.ttf", font3.getFileName());
93         FontFileResourceEntry font4 = fileEntries[3];
94         assertEquals(800, font4.getWeight());
95         assertEquals(1, font4.getItalic());
96         assertEquals(0, font4.getTtcIndex());
97         assertEquals(null, font4.getVariationSettings());
98         assertEquals("res/font/samplefont4.ttf", font4.getFileName());
99     }
100 
101     @Test
testParseDownloadableFont()102     public void testParseDownloadableFont() throws IOException, XmlPullParserException {
103         XmlResourceParser parser = mResources.getXml(R.font.samplexmldownloadedfont);
104 
105         FamilyResourceEntry result = FontResourcesParser.parse(parser, mResources);
106 
107         assertNotNull(result);
108         ProviderResourceEntry providerEntry = (ProviderResourceEntry) result;
109         assertEquals("com.example.test.fontprovider.authority", providerEntry.getAuthority());
110         assertEquals("com.example.test.fontprovider.package", providerEntry.getPackage());
111         assertEquals("MyRequestedFont", providerEntry.getQuery());
112         assertEquals("my-request-font", providerEntry.getSystemFontFamilyName());
113     }
114 
115     @Test
testParseDownloadableFont_singleCerts()116     public void testParseDownloadableFont_singleCerts() throws IOException, XmlPullParserException {
117         XmlResourceParser parser = mResources.getXml(R.font.samplexmldownloadedfontsinglecerts);
118 
119         FamilyResourceEntry result = FontResourcesParser.parse(parser, mResources);
120 
121         assertNotNull(result);
122         assertTrue(result instanceof ProviderResourceEntry);
123         ProviderResourceEntry providerResourceEntry = (ProviderResourceEntry) result;
124         assertEquals("com.example.test.fontprovider", providerResourceEntry.getAuthority());
125         assertEquals("MyRequestedFont", providerResourceEntry.getQuery());
126         assertEquals("com.example.test.fontprovider.package", providerResourceEntry.getPackage());
127         List<List<String>> certList = providerResourceEntry.getCerts();
128         assertNotNull(certList);
129         assertEquals(1, certList.size());
130         List<String> certs = certList.get(0);
131         assertEquals(2, certs.size());
132         assertEquals("123456789", certs.get(0));
133         assertEquals("987654321", certs.get(1));
134     }
135 
136     @Test
testParseDownloadableFont_multipleCerts()137     public void testParseDownloadableFont_multipleCerts() throws IOException, XmlPullParserException {
138         XmlResourceParser parser = mResources.getXml(R.font.samplexmldownloadedfontmulticerts);
139 
140         FamilyResourceEntry result = FontResourcesParser.parse(parser, mResources);
141 
142         assertNotNull(result);
143         assertTrue(result instanceof ProviderResourceEntry);
144         ProviderResourceEntry providerResourceEntry = (ProviderResourceEntry) result;
145         assertEquals("com.example.test.fontprovider", providerResourceEntry.getAuthority());
146         assertEquals("MyRequestedFont", providerResourceEntry.getQuery());
147         assertEquals("com.example.test.fontprovider.package", providerResourceEntry.getPackage());
148         List<List<String>> certList = providerResourceEntry.getCerts();
149         assertNotNull(certList);
150         assertEquals(2, certList.size());
151         List<String> certs1 = certList.get(0);
152         assertEquals(2, certs1.size());
153         assertEquals("123456789", certs1.get(0));
154         assertEquals("987654321", certs1.get(1));
155         List<String> certs2 = certList.get(1);
156         assertEquals(2, certs2.size());
157         assertEquals("abcdefg", certs2.get(0));
158         assertEquals("gfedcba", certs2.get(1));
159     }
160 }
161