| /* |
| * Copyright (C) 2006 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package libcore.java.lang; |
| |
| import junit.framework.TestCase; |
| |
| public class OldAndroidInstanceofTest extends TestCase { |
| |
| protected A mA; |
| protected ChildOfAOne mOne; |
| protected ChildOfAOne mTwo; |
| protected ChildOfAOne mThree; |
| protected ChildOfAOne mFour; |
| protected ChildOfAFive mFive; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| |
| mA = new A(); |
| mOne = new ChildOfAOne(); |
| mTwo = new ChildOfATwo(); |
| mThree = new ChildOfAThree(); |
| mFour = new ChildOfAFour(); |
| mFive = new ChildOfAFive(); |
| } |
| |
| |
| public void testNoInterface() throws Exception { |
| A a = mA; |
| for (int i = 0; i < 100000; i++) { |
| assertFalse("m_a should not be a ChildOfAFive", a instanceof ChildOfAFive); |
| } |
| } |
| |
| public void testDerivedOne() throws Exception { |
| InterfaceOne one = mOne; |
| for (int i = 0; i < 100000; i++) { |
| assertFalse("m_one should not be a ChildOfAFive", one instanceof ChildOfAFive); |
| } |
| } |
| |
| public void testDerivedTwo() throws Exception { |
| InterfaceTwo two = mTwo; |
| for (int i = 0; i < 100000; i++) { |
| assertFalse("m_two should not be a ChildOfAFive", two instanceof ChildOfAFive); |
| } |
| } |
| |
| public void testDerivedThree() throws Exception { |
| InterfaceThree three = mThree; |
| for (int i = 0; i < 100000; i++) { |
| assertFalse("m_three should not be a ChildOfAFive", three instanceof ChildOfAFive); |
| } |
| } |
| |
| public void testDerivedFour() throws Exception { |
| InterfaceFour four = mFour; |
| for (int i = 0; i < 100000; i++) { |
| assertFalse("m_four should not be a ChildOfAFive", four instanceof ChildOfAFive); |
| } |
| } |
| |
| public void testSuccessClass() throws Exception { |
| ChildOfAOne five = mFive; |
| for (int i = 0; i < 100000; i++) { |
| assertTrue("m_five is suppose to be a ChildOfAFive", five instanceof ChildOfAFive); |
| } |
| } |
| |
| public void testSuccessInterface() throws Exception { |
| ChildOfAFive five = mFive; |
| for (int i = 0; i < 100000; i++) { |
| assertTrue("m_five is suppose to be a InterfaceFour", five instanceof InterfaceFour); |
| } |
| } |
| |
| public void testFailInterface() throws Exception { |
| InterfaceOne one = mFive; |
| for (int i = 0; i < 100000; i++) { |
| assertFalse("m_five does not implement InterfaceFive", one instanceof InterfaceFive); |
| } |
| } |
| |
| private interface InterfaceOne { |
| } |
| |
| private interface InterfaceTwo { |
| } |
| |
| private interface InterfaceThree { |
| } |
| |
| private interface InterfaceFour { |
| } |
| |
| private interface InterfaceFive { |
| } |
| |
| private static class A { |
| } |
| |
| private static class ChildOfAOne extends A implements InterfaceOne, InterfaceTwo, InterfaceThree, InterfaceFour { |
| } |
| |
| private static class ChildOfATwo extends ChildOfAOne { |
| } |
| |
| private static class ChildOfAThree extends ChildOfATwo { |
| } |
| |
| private static class ChildOfAFour extends ChildOfAThree { |
| } |
| |
| private static class ChildOfAFive extends ChildOfAFour { |
| } |
| } |