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