/** * Copyright (c) 2010, 2011, 2012 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: * Sebastian Proksch - initial API and implementation * Kevin Munk - Extension for more tests for extracting package names */ package org.eclipse.recommenders.testing.jdt; import static org.eclipse.recommenders.testing.jdt.JavaProjectFixture.*; import static org.junit.Assert.assertEquals; import java.util.List; import org.junit.Before; import org.junit.Test; import com.google.common.collect.Lists; public class JavaProjectFixtureTest { private StringBuilder code; @Before public void setup() { code = new StringBuilder(); code.append("public class Class1 {"); code.append(" public static class Inner {"); code.append(" public static final int i = 9;"); code.append(" }"); code.append(" @Action // possible indicator for non __test named entry points (javax.xml.ws.Action;)"); code.append(" public int hashCode() {"); code.append(" Inner i = new Inner() {};"); code.append(" Object obj = new Object();"); code.append(" return obj.hashCode();"); code.append(" }"); code.append(" @Action"); code.append(" public void XYZ() {"); code.append(" // nothing"); code.append(" }"); code.append("}"); } @Test public void extractNameFromClass() { StringBuilder sb = new StringBuilder(); sb.append("public class Class1 {"); sb.append(" public void __test() {"); sb.append(" }"); sb.append("}"); String actual = findClassName(sb); String expected = "Class1"; assertEquals(expected, actual); } @Test public void extractNameFromClassWithoutVisibilityModifier() { StringBuilder sb = new StringBuilder(); sb.append("class Class1 {"); sb.append(" void __test() {"); sb.append(" }"); sb.append("}"); String actual = findClassName(sb); String expected = "Class1"; assertEquals(expected, actual); } @Test public void extractNameFromInterface() { StringBuilder sb = new StringBuilder(); sb.append("public interface Interface1 {"); sb.append(" public void __test();"); sb.append("}"); String actual = findClassName(sb); String expected = "Interface1"; assertEquals(expected, actual); } @Test public void extractNameFromEnum() { StringBuilder sb = new StringBuilder(); sb.append("public enum Enum1 {"); sb.append(" FOO;"); sb.append("}"); String actual = findClassName(sb); String expected = "Enum1"; assertEquals(expected, actual); } @Test public void extractNameFromAnnotation() { StringBuilder sb = new StringBuilder(); sb.append("public @interface Annotation {"); sb.append("}"); String actual = findClassName(sb); String expected = "Annotation"; assertEquals(expected, actual); } @Test public void extractNameWithInnerClass() { StringBuilder sb = new StringBuilder(); sb.append("public class Class1 {"); sb.append(" public static class InnerTest {"); sb.append(" public void doit() {}"); sb.append(" public static void doitStatic() {}"); sb.append(" }"); sb.append(" public void __test() {"); sb.append(" }"); sb.append("}"); String actual = findClassName(sb); String expected = "Class1"; assertEquals(expected, actual); } @Test public void extractNameWithInnerInterface() { StringBuilder sb = new StringBuilder(); sb.append("public class Class1 {"); sb.append(" public static interface InnerFace {"); sb.append(" public void doit();"); sb.append(" }"); sb.append(" public void __test() {"); sb.append(" }"); sb.append("}"); String actual = findClassName(sb); String expected = "Class1"; assertEquals(expected, actual); } @Test public void extractNamesOfInnerClasses() { StringBuilder sb = new StringBuilder(); sb.append("public class Class1 {"); sb.append(" public static class Inner1 {}"); sb.append(" public static class Inner2 {}"); sb.append("}"); List<String> actuals = JavaProjectFixture.findInnerClassNames(sb); List<String> expecteds = Lists.newArrayList("Class1$Inner1", "Class1$Inner2"); assertEquals(expecteds, actuals); } @Test public void extractNamesOfAnonymousClasses() { StringBuilder sb = new StringBuilder(); sb.append("public class Class1 {"); sb.append(" public void blubb() {"); sb.append(" Object o = new Object() {"); sb.append(" if(true) {"); sb.append(" // bla"); sb.append(" } else {"); sb.append(" // blubb"); sb.append(" }"); sb.append(" }"); sb.append(" Object o = new Object() {};"); sb.append(" }"); sb.append("}"); List<String> actuals = findAnonymousClassNames(sb); List<String> expecteds = Lists.newArrayList("Class1$1", "Class1$2"); assertEquals(expecteds, actuals); } @Test public void extractInnerClassesFromBiggerExample() { List<String> actuals = findInnerClassNames(code); List<String> expecteds = Lists.newArrayList("Class1$Inner"); assertEquals(expecteds, actuals); } @Test public void extractAnonymousClassesFromBiggerExample() { List<String> actuals = findAnonymousClassNames(code); List<String> expecteds = Lists.newArrayList("Class1$1"); assertEquals(expecteds, actuals); } @Test public void extractNoPackageName() { String actual = findPackageName(code); String expected = ""; assertEquals(expected, actual); } @Test public void extractNoPackageNameFaultyPackage1() { StringBuilder sb = new StringBuilder(); sb.append("package "); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = ""; assertEquals(expected, actual); } @Test public void extractNoPackageNameFaultyPackage2() { StringBuilder sb = new StringBuilder(); sb.append("package test."); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = ""; assertEquals(expected, actual); } @Test public void extractNoPackageNameFaultyPackage3() { StringBuilder sb = new StringBuilder(); sb.append("package test.blub."); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = ""; assertEquals(expected, actual); } @Test public void extractNoPackageNameFaultyPackage4() { StringBuilder sb = new StringBuilder(); sb.append("package test.;"); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = ""; assertEquals(expected, actual); } @Test public void extractNoPackageNameFaultyPackage5() { StringBuilder sb = new StringBuilder(); sb.append("package test.blub.;"); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = ""; assertEquals(expected, actual); } @Test public void extractPackageName() { StringBuilder sb = new StringBuilder(); sb.append("package test;"); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = "test"; assertEquals(expected, actual); } @Test public void extractPackageName2() { StringBuilder sb = new StringBuilder(); sb.append("@SomeAnnotation"); sb.append("package test.blub.bla;"); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = "test.blub.bla"; assertEquals(expected, actual); } @Test public void extractPackageName3() { StringBuilder sb = new StringBuilder(); sb.append("package a.b.c.d.e.f;"); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = "a.b.c.d.e.f"; assertEquals(expected, actual); } @Test public void extractPackageNameUnicode() { StringBuilder sb = new StringBuilder(); sb.append("package ñ.b.c.d.ê.f;"); sb.append("public class Class1 {"); sb.append("}"); String actual = findPackageName(sb); String expected = "ñ.b.c.d.ê.f"; assertEquals(expected, actual); } }