/** * Copyright (c) 2010, 2014 Darmstadt University of Technology. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Marcel Bruch - initial API and implementation. */ package org.eclipse.recommenders.rcp.utils; import static org.eclipse.recommenders.rcp.utils.ASTNodeUtils.*; import static org.eclipse.recommenders.utils.names.VmTypeName.*; import static org.junit.Assert.*; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.ArrayType; import org.eclipse.jdt.core.dom.Name; import org.eclipse.jdt.core.dom.ParameterizedType; import org.eclipse.jdt.core.dom.PrimitiveType; import org.eclipse.jdt.core.dom.QualifiedName; import org.eclipse.jdt.core.dom.QualifiedType; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.SimpleType; import org.eclipse.recommenders.utils.names.VmTypeName; import org.junit.Test; public class AstNodeUtilsTest { private static final String OBJECT_LITERAL = "Object"; private final AST ast = AST.newAST(AST.JLS4); @Test public void testStripQualifier() { assertEquals(OBJECT_LITERAL, stripQualifier(newSimpleName()).getIdentifier()); assertEquals(OBJECT_LITERAL, stripQualifier(newQualifiedName()).getIdentifier()); } /** * https://bugs.eclipse.org/bugs/show_bug.cgi?id=405235 */ @Test public void testSameSimpleNameOnSimpleTypes() { // test Object simple type with simple name assertTrue(sameSimpleName(newSimpleType(newSimpleName()), OBJECT)); // test Object simple type with qualified name assertTrue(sameSimpleName(newSimpleType(newQualifiedName()), OBJECT)); // test Object qualified type assertTrue(sameSimpleName(newQualifiedType(), OBJECT)); // test Object parameterized type assertTrue(sameSimpleName(newParameterizedType(), OBJECT)); // test Object primitive type assertTrue(sameSimpleName(newPrimitiveIntType(), INT)); // test Object array type assertTrue(sameSimpleName(newObjectArrayType(), VmTypeName.get("[[" + OBJECT))); } private ArrayType newObjectArrayType() { return ast.newArrayType(newQualifiedType(), 2); } private PrimitiveType newPrimitiveIntType() { return ast.newPrimitiveType(PrimitiveType.INT); } private ParameterizedType newParameterizedType() { return ast.newParameterizedType(newSimpleType(newQualifiedName())); } private SimpleType newSimpleType(Name name) { return ast.newSimpleType(name); } private QualifiedType newQualifiedType() { QualifiedType type = ast.newQualifiedType(newSimpleType(newSimpleName()), newSimpleName()); return ast.newQualifiedType(type, newSimpleName()); } private SimpleName newSimpleName() { return ast.newSimpleName(OBJECT_LITERAL); } private QualifiedName newQualifiedName() { return newQualifiedName(OBJECT_LITERAL); } private QualifiedName newQualifiedName(String last) { return ast.newQualifiedName(ast.newQualifiedName(ast.newSimpleName("java"), ast.newSimpleName("lang")), ast.newSimpleName(last)); } }