private String getTypeName(ParameterizedType type) { String name = getClassName((Class<?>) type.getRawType()); Type[] types = type.getActualTypeArguments(); boolean isDefined = false; for(Type parameterType : types) { if(parameterType instanceof Class<?> || parameterType instanceof ParameterizedType || parameterType instanceof WildcardType || parameterType instanceof GenericArrayType) { isDefined = true; break; } } if(isDefined) { if (types.length > 0) { name += "<"; for (int i = 0; i < types.length; i++) { if (i != 0) name += ", "; name += getTypeParameterName(types[i]); } name += ">"; } } return name; }
/** {@inheritDoc} */ @Override public void visitNullStatement(NullStatement statement) { VariableReference retval = statement.getReturnValue(); testCode += getClassName(retval) + " " + getVariableName(retval) + " = null;" + NEWLINE; }
protected String getEnumValue(EnumPrimitiveStatement<?> statement) { Object value = statement.getValue(); Class<?> clazz = statement.getEnumClass(); String className = getClassName(clazz); try { if (value.getClass().getField(value.toString()) != null) return className + "." + value; } catch (NoSuchFieldException e) { // Ignore } for (Field field : value.getClass().getDeclaredFields()) { if (field.isEnumConstant()) { try { if (field.get(value).equals(value)) { return className + "." + field.getName(); } } catch (Exception e) { // ignore } } } return className + ".valueOf(\"" + value + "\")"; }
List<Integer> lengths = statement.getLengths(); String type = getClassName(retval); String multiDimensions = ""; if (lengths.size() == 1) { testCode += getClassName(retval) + " " + getVariableName(retval) + " = (" + getClassName(retval) + ") " + getClassName(Array.class) + ".newInstance(" + getClassName(retval.getComponentClass()).replaceAll("\\[\\]", "") + ".class, " + multiDimensions + ");" + NEWLINE; testCode += getClassName(retval) + " " + getVariableName(retval) + " = new " + type + multiDimensions + ";" + NEWLINE;
return getClassName(clazz.getComponentType()) + "[]"; String enclosingName = getClassName(outerClass); String simpleOuterName = outerClass.getSimpleName() + "."; if(simpleOuterName.equals(enclosingName)) { getClassName(declaringClass);
cast_str += "(" + getClassName(retval) + ")"; builder.append(getClassName(retval)); builder.append(" "); builder.append(getVariableName(retval)); builder.append(NEWLINE); } else { builder.append(getClassName(retval)); builder.append(" "); builder.append(" = "); builder.append(cast_str); builder.append(getClassName(field.getField().getDeclaringClass())); builder.append("."); builder.append(field.getName()); builder.append(NEWLINE); builder.append("} catch("); builder.append(getClassName(ex)); builder.append(" e) {}");
} else if (statement instanceof ClassPrimitiveStatement) { StringBuilder builder = new StringBuilder(); String className = getClassName(retval); className = className.replaceAll("Class<(.*)(<.*>)>", "Class<$1>"); builder.append(className); builder.append(getVariableName(retval)); builder.append(" = "); builder.append(getClassName(((Class<?>) value))); builder.append(".class;"); builder.append(NEWLINE); testCode += builder.toString(); } else { testCode += getClassName(retval) + " " + getVariableName(retval) + " = " + NumberFormatter.getNumberString(value, this) + ";" + NEWLINE;
/** * Generates a fail assertion for being inserted after a statement * generating an exception. Parameter "statement" is not used in the default * implementation but may be used in future extensions. **/ public String generateFailAssertion(AbstractStatement statement, Throwable exception) { Class<?> ex = getExceptionClassToUse(exception); // boolean isExpected = getDeclaredExceptions().contains(ex); // if (isExpected) String stmt = " fail(\"Expecting exception: " + getClassName(ex) + "\");" + NEWLINE; if(isTestUnstable()){ /* * if the current test is unstable, then comment out all of its assertions. */ stmt = "// "+stmt +getUnstableTestComment(); } return NEWLINE + " "+stmt; }
public String getTypeName(Type type) { if (type instanceof Class<?>) { return getClassName((Class<?>) type); } else if (type instanceof ParameterizedType) { return getTypeName((ParameterizedType) type); } else if (type instanceof WildcardType) { String ret = "Object"; return ret; } else if (type instanceof TypeVariable) { return "Object"; } else if (type instanceof CaptureType) { CaptureType captureType = (CaptureType) type; if (captureType.getLowerBounds().length == 0) return "Object"; else return getTypeName(captureType.getLowerBounds()[0]); } else if (type instanceof GenericArrayType) { return getTypeName(((GenericArrayType) type).getGenericComponentType()) + "[]"; } else { throw new RuntimeException("Unsupported type:" + type + ", class" + type.getClass()); } }
target = getClassName(field.getDeclaringClass()) + "." + field.getName(); } else { target = getVariableName(source) + "." + field.getName(); + target + ");"; getClassName(value.getClass());
@Test public void testInnerClassWithNameSubset() { TestCodeVisitor visitor = new TestCodeVisitor(); assertEquals("TestCodeVisitorTest", visitor.getClassName(getClass())); assertEquals("TestCodeVisitorTest.Country", visitor.getClassName(Country.class)); assertEquals("TestCodeVisitorTest.Country.CountryNameCode", visitor.getClassName(Country.CountryNameCode.class)); }
public String getTypeParameterName(Type type) { if (type instanceof Class<?>) { return getClassName((Class<?>) type); } else if (type instanceof ParameterizedType) { return getTypeName((ParameterizedType) type);
stmt += "assertTrue(Arrays.equals("; getClassName(Arrays.class); } else { stmt += "assertArrayEquals(";
+ getVariableName(source) + "." + inspector.getMethodCall() + "());"; getClassName(value.getClass());
@Test public void testClashingImportNamesSubClasses() throws NoSuchMethodException, ConstructionFailedException { TestCase tc = new DefaultTestCase(); TestFactory.getInstance().addConstructor(tc, new GenericConstructor(com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.Foo.class.getDeclaredConstructor(), com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.Foo.class), 0, 0); TestFactory.getInstance().addConstructor(tc, new GenericConstructor(com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.Bar.class.getDeclaredConstructor(), com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.Bar.class), 1, 0); TestCodeVisitor visitor = new TestCodeVisitor(); tc.accept(visitor); System.out.println(visitor.getCode()); Set<Class<?>> imports = visitor.getImports(); // Imported assertTrue(imports.contains(com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.class)); // Not imported as the fully qualified name is used assertFalse(imports.contains(com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.class)); assertEquals("ExampleWithInnerClass", visitor.getClassName(com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.class)); assertEquals("com.examples.with.different.packagename.subpackage.ExampleWithInnerClass", visitor.getClassName(com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.class)); assertEquals("ExampleWithInnerClass.Foo", visitor.getClassName(com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.Foo.class)); assertEquals("com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.Bar", visitor.getClassName(com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.Bar.class)); }
} else if(source.isWrapperType()) { if (((Boolean) value).booleanValue()) testCode += "assertTrue(" + getVariableName(source) + ".equals((" + this.getClassName(Object.class) +")" + getVariableName(dest) + "));"; else testCode += "assertFalse(" + getVariableName(source) + ".equals((" + this.getClassName(Object.class) +")" + getVariableName(dest) + "));"; } else if(dest.isWrapperType()) { if (((Boolean) value).booleanValue()) testCode += "assertTrue(" + getVariableName(dest) + ".equals((" + this.getClassName(Object.class) +")" + getVariableName(source) + "));"; else testCode += "assertFalse(" + getVariableName(dest) + ".equals((" + this.getClassName(Object.class) +")" + getVariableName(source) + "));"; } else { testCode += "assertTrue(" + getVariableName(source) + ".equals((" + this.getClassName(Object.class) +")" + getVariableName(dest) + "));"; else testCode += "assertFalse(" + getVariableName(source) + ".equals((" + this.getClassName(Object.class) +")" + getVariableName(dest) + "));";
+ getVariableName(source) + ");"; getClassName(value.getClass()); } else if(source.getVariableClass().equals(boolean.class) || source.getVariableClass().equals(Boolean.class)){ Boolean flag = (Boolean) value;
String className = getClassName(retval); result += "try {"+NEWLINE+" "; } else { result += getClassName(retval) + " ";
@Test public void testClashingImportNames() throws NoSuchMethodException, ConstructionFailedException { TestCase tc = new DefaultTestCase(); TestFactory.getInstance().addConstructor(tc, new GenericConstructor(com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.class.getDeclaredConstructor(), com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.class), 0, 0); TestFactory.getInstance().addConstructor(tc, new GenericConstructor(com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.class.getDeclaredConstructor(), com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.class), 1, 0); TestCodeVisitor visitor = new TestCodeVisitor(); tc.accept(visitor); System.out.println(visitor.getCode()); Set<Class<?>> imports = visitor.getImports(); // Imported assertTrue(imports.contains(com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.class)); // Not imported as the fully qualified name is used assertFalse(imports.contains(com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.class)); assertEquals("ExampleWithInnerClass", visitor.getClassName(com.examples.with.different.packagename.otherpackage.ExampleWithInnerClass.class)); assertEquals("com.examples.with.different.packagename.subpackage.ExampleWithInnerClass", visitor.getClassName(com.examples.with.different.packagename.subpackage.ExampleWithInnerClass.class)); }
cast = "(" + getClassName(retval) + ") ";