17514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam/*
27514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Copyright (C) 2017 The Android Open Source Project
37514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
47514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License");
57514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * you may not use this file except in compliance with the License.
67514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * You may obtain a copy of the License at
77514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
87514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *      http://www.apache.org/licenses/LICENSE-2.0
97514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam *
107514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * Unless required by applicable law or agreed to in writing, software
117514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS,
127514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * See the License for the specific language governing permissions and
147514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam * limitations under the License.
157514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam */
167514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
177514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lampackage com.android.setupwizardlib.template;
187514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
197514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.junit.Assert.assertEquals;
207514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.mockito.Matchers.eq;
217514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.mockito.Mockito.doReturn;
227514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport static org.mockito.Mockito.spy;
237514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
247514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.content.Context;
257514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.content.res.ColorStateList;
267514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.content.res.XmlResourceParser;
277514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.graphics.Color;
287514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.support.test.InstrumentationRegistry;
297514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.support.test.filters.SmallTest;
307514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.support.test.runner.AndroidJUnit4;
317514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.util.Xml;
327514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport android.widget.TextView;
337514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
347514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.TemplateLayout;
357514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport com.android.setupwizardlib.test.R;
367514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
377514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport org.junit.Before;
387514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lamimport org.junit.Test;
397514f1cee29b3feb4822ce16945c1c312057d24fMaurice 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 ColoredHeaderMixinTest {
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 testSetColor() {
657514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ColoredHeaderMixin mixin = new ColoredHeaderMixin(mTemplateLayout, null, 0);
667514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mixin.setColor(ColorStateList.valueOf(Color.MAGENTA));
677514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
687514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertEquals(ColorStateList.valueOf(Color.MAGENTA), mHeaderTextView.getTextColors());
697514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
707514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
717514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Test
727514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void testGetColor() {
737514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        ColoredHeaderMixin mixin = new ColoredHeaderMixin(mTemplateLayout, null, 0);
747514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        mHeaderTextView.setTextColor(ColorStateList.valueOf(Color.GREEN));
757514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
767514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertEquals(ColorStateList.valueOf(Color.GREEN), mixin.getColor());
777514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
787514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
797514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @SuppressWarnings("ResourceType")  // Needed to create attribute set from layout XML.
807514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    @Test
817514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    public void testSetColorFromXml() throws IOException, XmlPullParserException {
827514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        final XmlResourceParser parser =
837514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam                mContext.getResources().getXml(R.layout.test_mixin_attributes);
847514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        while (!TemplateLayout.class.getName().equals(parser.getName())) {
857514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam            parser.next();
867514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        }
877514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        new ColoredHeaderMixin(mTemplateLayout, Xml.asAttributeSet(parser), 0);
887514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam
897514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam        assertEquals(ColorStateList.valueOf(Color.RED), mHeaderTextView.getTextColors());
907514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam    }
917514f1cee29b3feb4822ce16945c1c312057d24fMaurice Lam}
92