16224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala/* 26224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Copyright 2012 AndroidPlot.com 36224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * 46224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 56224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * you may not use this file except in compliance with the License. 66224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * You may obtain a copy of the License at 76224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * 86224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 96224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * 106224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 116224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 126224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * See the License for the specific language governing permissions and 146224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala * limitations under the License. 156224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala */ 166224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 176224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapackage com.androidplot.util; 186224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 196224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.content.Context; 206224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport android.util.Log; 216224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport com.androidplot.mock.MockContext; 226224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport mockit.Mockit; 236224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport mockit.UsingMocksAndStubs; 246224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport org.junit.Test; 256224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 266224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport java.lang.reflect.Method; 276224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 286224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport static junit.framework.Assert.assertEquals; 296224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalaimport static org.junit.Assert.fail; 306224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 316224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala@UsingMocksAndStubs({Log.class}) 326224eda509d436a575f801942337da92a6c18767Eino-Ville Talvalapublic class ConfiguratorTest { 336224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 346224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala class A { 356224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala int d = 0; 366224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 376224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public int getD() { 386224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala return d; 396224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 406224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 416224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void setD(int d) { 426224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala this.d = d; 436224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 446224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 456224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 466224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala class B { 476224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala A a = new A(); 486224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 496224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public A getA() { 506224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala return a; 516224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 526224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 536224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void setA(A a) { 546224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala this.a = a; 556224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 566224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 576224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 586224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala class C { 596224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala B b = new B(); 606224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 616224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public B getB() { 626224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala return b; 636224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 646224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 656224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void setB(B a) { 666224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala this.b = b; 676224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 686224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 696224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 706224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @org.junit.Before 716224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void setUp() throws Exception { 726224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 736224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 746224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 756224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @org.junit.After 766224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void tearDown() throws Exception { 776224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 786224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 796224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 806224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 816224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Test 826224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void testGetFieldAt() throws Exception { 836224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala Context context = Mockit.setUpMock(new MockContext()); 846224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala C c = new C(); 856224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala assertEquals(c, Configurator.getObjectContaining(c, "b")); 866224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala assertEquals(c.getB(), Configurator.getObjectContaining(c, "b.a")); 876224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala assertEquals(c.getB().getA(), Configurator.getObjectContaining(c, "b.a.d")); 886224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 896224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 906224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala @Test 916224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala public void testGetSetter() throws Exception { 926224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala Context context = Mockit.setUpMock(new MockContext()); 936224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala C c = new C(); 946224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala 956224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala Method m = Configurator.getSetter(c.getClass(), "b"); 966224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala assertEquals(1, m.getParameterTypes().length); 976224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala assertEquals(B.class, m.getParameterTypes()[0]); 986224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala } 996224eda509d436a575f801942337da92a6c18767Eino-Ville Talvala} 100