17514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam/* 27514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Copyright (C) 2017 The Android Open Source Project 3efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * 4efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * Licensed under the Apache License, Version 2.0 (the "License"); 5efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * you may not use this file except in compliance with the License. 6efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * You may obtain a copy of the License at 7efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * 8efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * http://www.apache.org/licenses/LICENSE-2.0 9efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * 10efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * Unless required by applicable law or agreed to in writing, software 11efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * distributed under the License is distributed on an "AS IS" BASIS, 12efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * See the License for the specific language governing permissions and 14efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam * limitations under the License. 15efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam */ 16efbc38ccde179dbcbb85f9d018bb6d3510105a19Maurice Lam 177514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lampackage com.android.setupwizardlib.template; 187514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 197514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertEquals; 207514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertSame; 217514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.mockito.Matchers.eq; 227514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.mockito.Mockito.doReturn; 237514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.mockito.Mockito.spy; 247514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 257514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.annotation.SuppressLint; 267514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.content.Context; 277514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.content.res.XmlResourceParser; 282614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport android.support.test.InstrumentationRegistry; 292614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport android.support.test.filters.SmallTest; 302614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport android.support.test.runner.AndroidJUnit4; 317514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.util.Xml; 32bdfc0132ff90a333de202adfbf204cdc8139e632Maurice Lamimport android.widget.TextView; 33bdfc0132ff90a333de202adfbf204cdc8139e632Maurice Lam 34bdfc0132ff90a333de202adfbf204cdc8139e632Maurice Lamimport com.android.setupwizardlib.TemplateLayout; 357514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.test.R; 36bdfc0132ff90a333de202adfbf204cdc8139e632Maurice Lam 372614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport org.junit.Before; 382614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport org.junit.Test; 392614260933341bd4ea7bb37a3435f46f82cacef7Maurice Lamimport org.junit.runner.RunWith; 407514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport org.xmlpull.v1.XmlPullParserException; 417514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 427514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport java.io.IOException; 437514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 447514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam@RunWith(AndroidJUnit4.class) 457514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam@SmallTest 467514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lampublic class HeaderMixinTest { 477514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 487514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam private Context mContext; 497514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam private TemplateLayout mTemplateLayout; 507514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam private TextView mHeaderTextView; 517514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 527514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam @Before 537514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam public void setUp() { 547514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam mContext = InstrumentationRegistry.getTargetContext(); 557514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam mTemplateLayout = spy(new TemplateLayout(mContext, R.layout.test_template, 567514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam R.id.suw_layout_content)); 577514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 587514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam mHeaderTextView = new TextView(mContext); 597514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam doReturn(mHeaderTextView).when(mTemplateLayout) 607514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam .findManagedViewById(eq(R.id.suw_layout_title)); 617514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam } 627514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 637514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam @Test 647514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam public void testGetTextView() { 657514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam HeaderMixin mixin = new HeaderMixin(mTemplateLayout, null, 0); 667514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam assertSame(mHeaderTextView, mixin.getTextView()); 677514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam } 687514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 697514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam @Test 707514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam public void testSetTextId() { 717514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam HeaderMixin mixin = new HeaderMixin(mTemplateLayout, null, 0); 727514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam mixin.setText(R.string.suw_next_button_label); 737514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 747514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam assertEquals("Next", mHeaderTextView.getText()); 757514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam } 767514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 777514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam @Test 787514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam public void testSetText() { 797514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam HeaderMixin mixin = new HeaderMixin(mTemplateLayout, null, 0); 807514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam mixin.setText("Foobar"); 817514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 827514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam assertEquals("Foobar", mHeaderTextView.getText()); 837514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam } 847514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 857514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam @SuppressLint("SetTextI18n") // It's OK, this is a test 867514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam @Test 877514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam public void testGetText() { 887514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam mHeaderTextView.setText("Lorem ipsum"); 897514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 907514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam HeaderMixin mixin = new HeaderMixin(mTemplateLayout, null, 0); 917514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam assertEquals("Lorem ipsum", mixin.getText()); 927514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam } 937514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 947514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam @SuppressWarnings("ResourceType") // Needed to create attribute set from layout XML. 957514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam @Test 967514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam public void testSetTextFromXml() throws IOException, XmlPullParserException { 977514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam final XmlResourceParser parser = 987514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam mContext.getResources().getXml(R.layout.test_mixin_attributes); 997514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam while (!TemplateLayout.class.getName().equals(parser.getName())) { 1007514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam parser.next(); 1017514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam } 1027514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam new HeaderMixin(mTemplateLayout, Xml.asAttributeSet(parser), 0); 1037514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam 1047514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam assertEquals("lorem ipsum", mHeaderTextView.getText()); 1057514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam } 1067514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam} 107