forked from JavaTX/JavaCompilerCore
Hinzufügen von IntermediateWildcard und dessen Tests.
Hinzufügen der Tests für IntermediateSuperWildcard und IntermediateExtendsWildcard. Verbesserung von IntermediateRefType: typParameter können IntermediateType sein und nicht nur IntermediateInnerType.
This commit is contained in:
parent
0207c7d1b0
commit
0d84e8361f
@ -1,7 +1,5 @@
|
|||||||
package de.dhbwstuttgart.intermediate.types;
|
package de.dhbwstuttgart.intermediate.types;
|
||||||
|
|
||||||
import de.dhbwstuttgart.parser.scope.JavaClassName;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a Java Wildcard with a extends-operator.
|
* Represents a Java Wildcard with a extends-operator.
|
||||||
* E.g. {@code <? extends String>}
|
* E.g. {@code <? extends String>}
|
||||||
|
@ -13,7 +13,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public final class IntermediateRefType extends IntermediateInnerType{
|
public final class IntermediateRefType extends IntermediateInnerType{
|
||||||
|
|
||||||
private final List<IntermediateInnerType> typParameters;
|
private final List<IntermediateType> typParameters;
|
||||||
private final JavaClassName className;
|
private final JavaClassName className;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,7 +35,7 @@ public final class IntermediateRefType extends IntermediateInnerType{
|
|||||||
this(className, new ArrayList<>());
|
this(className, new ArrayList<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
public IntermediateRefType(JavaClassName className, List<IntermediateInnerType> typParameters){
|
public IntermediateRefType(JavaClassName className, List<IntermediateType> typParameters){
|
||||||
this.className = className;
|
this.className = className;
|
||||||
this.typParameters = Collections.unmodifiableList(typParameters);
|
this.typParameters = Collections.unmodifiableList(typParameters);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package de.dhbwstuttgart.intermediate.types;
|
package de.dhbwstuttgart.intermediate.types;
|
||||||
|
|
||||||
import de.dhbwstuttgart.parser.scope.JavaClassName;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a Java Wildcard with a super-operator.
|
* Represents a Java Wildcard with a super-operator.
|
||||||
* E.g. {@code <? super String>}
|
* E.g. {@code <? super String>}
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
package de.dhbwstuttgart.intermediate.types;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a Java wildcard {@code <?>}.
|
||||||
|
*
|
||||||
|
* @since Studienarbeit Type Erasure
|
||||||
|
* @author etiennezink
|
||||||
|
*/
|
||||||
|
public class IntermediateWildcard extends IntermediateType{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Caches the hashCode after first computation.
|
||||||
|
*/
|
||||||
|
private int hashCode;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) { return o instanceof IntermediateWildcard; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int prime = 31;
|
||||||
|
int hashCode = this.hashCode;
|
||||||
|
if (hashCode == 0){
|
||||||
|
hashCode += "wildcard".hashCode();
|
||||||
|
hashCode = prime * hashCode + "*".hashCode();
|
||||||
|
this.hashCode = hashCode;
|
||||||
|
}
|
||||||
|
return hashCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSignature() { return "*"; }
|
||||||
|
}
|
@ -1,11 +1,62 @@
|
|||||||
package intermediate.types;
|
package intermediate.types;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import de.dhbwstuttgart.intermediate.types.IntermediateExtendsWildcard;
|
||||||
|
import de.dhbwstuttgart.intermediate.types.IntermediateGenericType;
|
||||||
|
import de.dhbwstuttgart.intermediate.types.IntermediateRefType;
|
||||||
|
import de.dhbwstuttgart.parser.scope.JavaClassName;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.objectweb.asm.Type;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
|
|
||||||
public class IntermediateExtensWildcardTest {
|
public class IntermediateExtensWildcardTest {
|
||||||
|
|
||||||
|
private static String integerWildcardSignature;
|
||||||
|
private static IntermediateRefType integerWildcard;
|
||||||
|
|
||||||
|
private static String tWildcardSignature;
|
||||||
|
private static IntermediateRefType tWildcard;
|
||||||
|
|
||||||
|
private static IntermediateRefType tWildcardSame;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void StartUp(){
|
||||||
|
|
||||||
|
integerWildcardSignature = "Ljava/util/List<+Ljava/lang/Integer;>;";
|
||||||
|
integerWildcard = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateExtendsWildcard(new IntermediateRefType(new JavaClassName(Type.getInternalName(Integer.class))))));
|
||||||
|
|
||||||
|
tWildcardSignature = "Ljava/util/List<+TT;>;";
|
||||||
|
tWildcard = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateExtendsWildcard(new IntermediateGenericType("T"))));
|
||||||
|
|
||||||
|
tWildcardSame = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateExtendsWildcard(new IntermediateGenericType("T"))));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void ToDo(){
|
public void SignatureTest_Integer(){ assertEquals(integerWildcardSignature, integerWildcard.getSignature()); }
|
||||||
Assert.fail();
|
|
||||||
}
|
@Test
|
||||||
|
public void SignatureTest_T(){ assertEquals(tWildcardSignature, tWildcard.getSignature()); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void HashCodeTest_Succeed() { assertEquals(tWildcardSame.hashCode(), tWildcard.hashCode());}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void HashCodeTest_Fail() { assertNotEquals(tWildcardSame.hashCode(), integerWildcard.hashCode()); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void EqualsTest_Succeed() { assertEquals(tWildcardSame, tWildcard); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void EqualsTest_Fail() { assertNotEquals(tWildcardSame, integerWildcard); }
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ import org.junit.Test;
|
|||||||
import org.objectweb.asm.Type;
|
import org.objectweb.asm.Type;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
@ -1,11 +1,62 @@
|
|||||||
package intermediate.types;
|
package intermediate.types;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import de.dhbwstuttgart.intermediate.types.IntermediateGenericType;
|
||||||
|
import de.dhbwstuttgart.intermediate.types.IntermediateRefType;
|
||||||
|
import de.dhbwstuttgart.intermediate.types.IntermediateSuperWildcard;
|
||||||
|
import de.dhbwstuttgart.parser.scope.JavaClassName;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.objectweb.asm.Type;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
|
|
||||||
public class IntermediateSuperWildcardTest {
|
public class IntermediateSuperWildcardTest {
|
||||||
|
|
||||||
|
private static String integerWildcardSignature;
|
||||||
|
private static IntermediateRefType integerWildcard;
|
||||||
|
|
||||||
|
private static String tWildcardSignature;
|
||||||
|
private static IntermediateRefType tWildcard;
|
||||||
|
|
||||||
|
private static IntermediateRefType tWildcardSame;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void StartUp(){
|
||||||
|
|
||||||
|
integerWildcardSignature = "Ljava/util/List<-Ljava/lang/Integer;>;";
|
||||||
|
integerWildcard = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateSuperWildcard(new IntermediateRefType(new JavaClassName(Type.getInternalName(Integer.class))))));
|
||||||
|
|
||||||
|
tWildcardSignature = "Ljava/util/List<-TT;>;";
|
||||||
|
tWildcard = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateSuperWildcard(new IntermediateGenericType("T"))));
|
||||||
|
|
||||||
|
tWildcardSame = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateSuperWildcard(new IntermediateGenericType("T"))));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void ToDo(){
|
public void SignatureTest_Integer(){ assertEquals(integerWildcardSignature, integerWildcard.getSignature()); }
|
||||||
Assert.fail();
|
|
||||||
}
|
@Test
|
||||||
|
public void SignatureTest_T(){ assertEquals(tWildcardSignature, tWildcard.getSignature()); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void HashCodeTest_Succeed() { assertEquals(tWildcardSame.hashCode(), tWildcard.hashCode());}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void HashCodeTest_Fail() { assertNotEquals(tWildcardSame.hashCode(), integerWildcard.hashCode()); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void EqualsTest_Succeed() { assertEquals(tWildcardSame, tWildcard); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void EqualsTest_Fail() { assertNotEquals(tWildcardSame, integerWildcard); }
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,57 @@
|
|||||||
|
package intermediate.types;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.intermediate.types.IntermediateExtendsWildcard;
|
||||||
|
import de.dhbwstuttgart.intermediate.types.IntermediateGenericType;
|
||||||
|
import de.dhbwstuttgart.intermediate.types.IntermediateRefType;
|
||||||
|
import de.dhbwstuttgart.intermediate.types.IntermediateWildcard;
|
||||||
|
import de.dhbwstuttgart.parser.scope.JavaClassName;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.objectweb.asm.Type;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
|
|
||||||
|
public class IntermediateWildcardTest {
|
||||||
|
|
||||||
|
private static String wildcardSignature;
|
||||||
|
private static IntermediateRefType wildcard;
|
||||||
|
|
||||||
|
private static IntermediateRefType wildcardSame;
|
||||||
|
private static IntermediateRefType tWildcard;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void StartUp(){
|
||||||
|
|
||||||
|
wildcardSignature = "Ljava/util/List<*>;";
|
||||||
|
wildcard = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateWildcard()));
|
||||||
|
|
||||||
|
wildcardSame = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateWildcard()));
|
||||||
|
|
||||||
|
tWildcard = new IntermediateRefType(
|
||||||
|
new JavaClassName(Type.getInternalName(List.class)),
|
||||||
|
Arrays.asList(new IntermediateExtendsWildcard(new IntermediateGenericType("T"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void SignatureTest_Wildcard(){ assertEquals(wildcardSignature, wildcard.getSignature()); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void HashCodeTest_Succeed() { assertEquals(wildcardSame.hashCode(), wildcard.hashCode());}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void HashCodeTest_Fail() { assertNotEquals(wildcardSame.hashCode(), tWildcard.hashCode()); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void EqualsTest_Succeed() { assertEquals(wildcardSame, wildcard); }
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void EqualsTest_Fail() { assertNotEquals(wildcardSame, tWildcard); }
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user