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