blob: ee97c23e38a4fa573f28022348f3b0bad244de9d [file] [log] [blame]
/*
* 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 {
}
}