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