13c4be77db95ea716889568bde853be082e764da9Clara Bayarri/*
23c4be77db95ea716889568bde853be082e764da9Clara Bayarri * Copyright (C) 2017 The Android Open Source Project
33c4be77db95ea716889568bde853be082e764da9Clara Bayarri *
43c4be77db95ea716889568bde853be082e764da9Clara Bayarri * Licensed under the Apache License, Version 2.0 (the "License");
53c4be77db95ea716889568bde853be082e764da9Clara Bayarri * you may not use this file except in compliance with the License.
63c4be77db95ea716889568bde853be082e764da9Clara Bayarri * You may obtain a copy of the License at
73c4be77db95ea716889568bde853be082e764da9Clara Bayarri *
83c4be77db95ea716889568bde853be082e764da9Clara Bayarri *      http://www.apache.org/licenses/LICENSE-2.0
93c4be77db95ea716889568bde853be082e764da9Clara Bayarri *
103c4be77db95ea716889568bde853be082e764da9Clara Bayarri * Unless required by applicable law or agreed to in writing, software
113c4be77db95ea716889568bde853be082e764da9Clara Bayarri * distributed under the License is distributed on an "AS IS" BASIS,
123c4be77db95ea716889568bde853be082e764da9Clara Bayarri * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c4be77db95ea716889568bde853be082e764da9Clara Bayarri * See the License for the specific language governing permissions and
143c4be77db95ea716889568bde853be082e764da9Clara Bayarri * limitations under the License.
153c4be77db95ea716889568bde853be082e764da9Clara Bayarri */
163c4be77db95ea716889568bde853be082e764da9Clara Bayarri
173c4be77db95ea716889568bde853be082e764da9Clara Bayarripackage com.android.setupwizardlib.template;
183c4be77db95ea716889568bde853be082e764da9Clara Bayarri
193c4be77db95ea716889568bde853be082e764da9Clara Bayarriimport static org.junit.Assert.assertNotNull;
203c4be77db95ea716889568bde853be082e764da9Clara Bayarriimport static org.junit.Assert.assertNull;
213c4be77db95ea716889568bde853be082e764da9Clara Bayarriimport static org.junit.Assert.assertTrue;
223c4be77db95ea716889568bde853be082e764da9Clara Bayarri
2369754bf66dae9d047d5a0ff2c71820aa35b9cc70Seigo Nonakaimport android.content.Context;
2469754bf66dae9d047d5a0ff2c71820aa35b9cc70Seigo Nonakaimport android.support.test.InstrumentationRegistry;
2569754bf66dae9d047d5a0ff2c71820aa35b9cc70Seigo Nonakaimport android.support.test.filters.SmallTest;
2669754bf66dae9d047d5a0ff2c71820aa35b9cc70Seigo Nonakaimport android.support.test.runner.AndroidJUnit4;
2769754bf66dae9d047d5a0ff2c71820aa35b9cc70Seigo Nonaka
283c4be77db95ea716889568bde853be082e764da9Clara Bayarriimport com.android.setupwizardlib.TemplateLayout;
293c4be77db95ea716889568bde853be082e764da9Clara Bayarriimport com.android.setupwizardlib.test.R;
3069754bf66dae9d047d5a0ff2c71820aa35b9cc70Seigo Nonaka
313c4be77db95ea716889568bde853be082e764da9Clara Bayarriimport org.junit.Before;
323c4be77db95ea716889568bde853be082e764da9Clara Bayarriimport org.junit.Test;
333c4be77db95ea716889568bde853be082e764da9Clara Bayarriimport org.junit.runner.RunWith;
34bacf2352ab892724551431551ae973ae3b68db35Clara Bayarri
3569754bf66dae9d047d5a0ff2c71820aa35b9cc70Seigo Nonaka@RunWith(AndroidJUnit4.class)
3669754bf66dae9d047d5a0ff2c71820aa35b9cc70Seigo Nonaka@SmallTest
373c4be77db95ea716889568bde853be082e764da9Clara Bayarripublic class TemplateLayoutMixinTest {
383c4be77db95ea716889568bde853be082e764da9Clara Bayarri
393c4be77db95ea716889568bde853be082e764da9Clara Bayarri    private TestTemplateLayout mLayout;
403c4be77db95ea716889568bde853be082e764da9Clara Bayarri
413c4be77db95ea716889568bde853be082e764da9Clara Bayarri    @Before
423c4be77db95ea716889568bde853be082e764da9Clara Bayarri    public void setUp() throws Exception {
433c4be77db95ea716889568bde853be082e764da9Clara Bayarri        mLayout = new TestTemplateLayout(InstrumentationRegistry.getContext());
443c4be77db95ea716889568bde853be082e764da9Clara Bayarri    }
453c4be77db95ea716889568bde853be082e764da9Clara Bayarri
463c4be77db95ea716889568bde853be082e764da9Clara Bayarri    @Test
473c4be77db95ea716889568bde853be082e764da9Clara Bayarri    public void testGetMixin() {
483c4be77db95ea716889568bde853be082e764da9Clara Bayarri        final TestMixin mixin = mLayout.getMixin(TestMixin.class);
493c4be77db95ea716889568bde853be082e764da9Clara Bayarri        assertNotNull("TestMixin should not be null", mixin);
503c4be77db95ea716889568bde853be082e764da9Clara Bayarri        assertTrue("TestMixin should be an instance of TestMixinSubclass. "
513c4be77db95ea716889568bde853be082e764da9Clara Bayarri                + "Found " + mixin.getClass() + " instead.",
52fb483cc90c27a9c0fcafa28343a8fd644f8384a4Clara Bayarri                mixin instanceof TestMixinSubclass);
53fb483cc90c27a9c0fcafa28343a8fd644f8384a4Clara Bayarri
54fb483cc90c27a9c0fcafa28343a8fd644f8384a4Clara Bayarri        // Mixin must be retrieved using the interface it's registered with, not the concrete class,
55fb483cc90c27a9c0fcafa28343a8fd644f8384a4Clara Bayarri        // although they are often the same.
56fb483cc90c27a9c0fcafa28343a8fd644f8384a4Clara Bayarri        assertNull("TestMixinSubclass should be null", mLayout.getMixin(TestMixinSubclass.class));
573c4be77db95ea716889568bde853be082e764da9Clara Bayarri    }
583c4be77db95ea716889568bde853be082e764da9Clara Bayarri
593c4be77db95ea716889568bde853be082e764da9Clara Bayarri    private static class TestTemplateLayout extends TemplateLayout {
603c4be77db95ea716889568bde853be082e764da9Clara Bayarri
613c4be77db95ea716889568bde853be082e764da9Clara Bayarri        TestTemplateLayout(Context context) {
623c4be77db95ea716889568bde853be082e764da9Clara Bayarri            super(context, R.layout.test_template, R.id.suw_layout_content);
633c4be77db95ea716889568bde853be082e764da9Clara Bayarri            registerMixin(TestMixin.class, new TestMixinSubclass());
643c4be77db95ea716889568bde853be082e764da9Clara Bayarri        }
653c4be77db95ea716889568bde853be082e764da9Clara Bayarri    }
663c4be77db95ea716889568bde853be082e764da9Clara Bayarri
673c4be77db95ea716889568bde853be082e764da9Clara Bayarri    private static class TestMixin implements Mixin {}
683c4be77db95ea716889568bde853be082e764da9Clara Bayarri
693c4be77db95ea716889568bde853be082e764da9Clara Bayarri    private static class TestMixinSubclass extends TestMixin {}
703c4be77db95ea716889568bde853be082e764da9Clara Bayarri}
713c4be77db95ea716889568bde853be082e764da9Clara Bayarri