Package de.crowdcode.kissmda.extensions.importpacker

Source Code of de.crowdcode.kissmda.extensions.importpacker.ImportPackerTest

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 de.crowdcode.kissmda.extensions.importpacker;

import static org.junit.Assert.assertEquals;

import java.util.logging.Logger;

import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.ImportDeclaration;
import org.eclipse.jdt.core.dom.PackageDeclaration;
import org.junit.Ignore;
import org.junit.Test;

public class ImportPackerTest {

  private static final Logger logger = Logger
      .getLogger(ImportPackerTest.class.getName());

  @Test
  public void test_Do_Not_Import_Java_Lang_Classes() {
    String original = //
    "package org.kissmda.test.junit; " //
        + "import java.util.Collection;" //
        + "public abstract class ClazzName extends java.util.Collection" //
        + "{" //
        + "  public abstract java.util.List<java.lang.Integer> asList(java.util.Collection<java.lang.Integer> values);" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);

    assertEquals(
        "package org.kissmda.test.junit;\n"
            + "import java.util.Collection;\n"
            + "import java.util.List;\n"
            + "public abstract class ClazzName extends Collection {\n"
            + "  public abstract List<Integer> asList(  Collection<Integer> values);\n}",
        cu.toString().trim());
  }

  @Test
  public void test_Parameterized_Map_Types() {
    String original = //
    "package org.kissmda.test.junit; " //
        + "import java.util.Collection;" //
        + "public abstract class ClazzName extends java.util.Collection" //
        + "{" //
        + "  public java.util.Map<java.lang.Integer, java.util.List<?>> asMap(java.util.Collection<java.lang.Integer> values);" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);

    assertEquals(
        "package org.kissmda.test.junit;\n"
            + "import java.util.Collection;\n"
            + "import java.util.List;\n"
            + "import java.util.Map;\n"
            + "public abstract class ClazzName extends Collection {\n"
            + "  public Map<Integer,List<?>> asMap(  Collection<Integer> values);\n"
            + "}", cu.toString().trim());
  }

  @Test
  public void test_Parameterized_Methods() {
    String original = //
    "package org.kissmda.test.junit; " //
        + "import java.util.Collection;" //
        + "public abstract class ClazzName" //
        + "{" //
        + "  public <T> java.util.List<T> asList(java.util.Collection<T> values){return null;};" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);

    assertEquals("package org.kissmda.test.junit;\n"
        + "import java.util.Collection;\n" + "import java.util.List;\n"
        + "public abstract class ClazzName {\n"
        + "  public <T>List<T> asList(  Collection<T> values){\n"
        + "    return null;\n" + "  }\n" + "}", cu.toString().trim());
  }

  @Test
  public void test_Types_From_The_Same_Project() {
    String original = //
    "package org.kissmda.test.junit; " //
        + " public class ClazzName {" //
        + "  public void doSomething(org.kissmda.test.junit.Name values){ }" //
        + " }";

    CompilationUnit cu = buildAndPackCompilationUnit(original);

    assertEquals("package org.kissmda.test.junit;\n" //
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values){\n" //
        + "  }\n" //
        + "}", cu.toString().trim());
  }

  @Test
  public void test_Types_In_Method_Block() {
    String original = //
    "package org.kissmda.test.junit; " //
        + " public class ClazzName {" //
        + "  public void doSomething(org.kissmda.test.junit.Name values){"
        + "     java.lang.Integer count = null;"
        + "     java.util.List<java.lang.String> list = new java.util.LinkedList<>();"
        + "  }" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);

    assertEquals("package org.kissmda.test.junit;\n" //
        + "import java.util.LinkedList;\n" //
        + "import java.util.List;\n" //
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values){\n" //
        + "    Integer count=null;\n" //
        + "    List<String> list=new LinkedList<>();\n" //
        + "  }\n" //
        + "}", cu.toString().trim());
  }

  @Test
  public void test_Imports_Of_Inner_Classes() {
    String original = //
    "package org.kissmda.test.junit;\n" //
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values){\n" //
        + "    java.util.Map.Entry entry=null;\n" //
        + "    java.util.List<String> list=new java.util.LinkedList<>();\n" //
        + "  }\n" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);

    assertEquals("package org.kissmda.test.junit;\n" //
        + "import java.util.LinkedList;\n" + "import java.util.List;\n" //
        + "import java.util.Map.Entry;\n"//
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values){\n" //
        + "    Entry entry=null;\n" //
        + "    List<String> list=new LinkedList<>();\n" //
        + "  }\n" //
        + "}", cu.toString().trim());
  }

  @Test
  @Ignore("It seems that 'import static' not parsed correctly.")
  public void test_Existing_Static_Imports() {
    String original = //
    "package org.kissmda.test.junit;\n" //
        + "import static org.junit.Assert.assertNotNull;\n"
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values){\n" //
        + "    assertNotNull(values);\n" //
        + "  }\n" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);
    logger.info(cu.toString());

    assertEquals("package org.kissmda.test.junit;\n" //
        + "import static org.junit.Assert.assertNotNull;\n"
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values){\n" //
        + "    assertNotNull(values);\n" //
        + "  }\n" //
        + "}", cu.toString().trim());
  }

  @Test
  public void test_InnerClass_Conflict_Handling() {
    String original = //
    "package org.kissmda.test.junit;\n" //
        + "public class OuterClassName {\n"
        + "  private another.InnerClazz anotherClazz;\n"
        + "  private static class InnerClazz {}\n"
        + "  private InnerClazz innerClazz;\n" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);
    logger.info(cu.toString());

    assertEquals("package org.kissmda.test.junit;\n" //
        + "public class OuterClassName {\n"
        + "  private another.InnerClazz anotherClazz;\n"
        + "private static class InnerClazz {\n"
        + "  }\n"
        + "  private InnerClazz innerClazz;\n" //
        + "}", cu.toString().trim());
  }

  @Test
  public void test_Wild_Card_Import() {
    String original = //
    "package org.kissmda.test.junit;\n"//
        + "import java.util.*;" //
        + "public class OuterClassName {\n" //
        + "  private List<String> stringList;\n" //
        + "  private java.util.Collection col;\n"
        + "  private org.kissmda.Util util;\n" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);
    logger.info(cu.toString());

    assertEquals("package org.kissmda.test.junit;\n" //
        + "import java.util.*;\n" //
        + "import java.util.Collection;\n"
        + "import org.kissmda.Util;\n" //
        + "public class OuterClassName {\n" //
        + "  private List<String> stringList;\n" //
        + "  private Collection col;\n" //
        + "  private Util util;\n" //
        + "}", cu.toString().trim());
  }

  @Test
  public void test_Packing_Thrown_Exception_Types() {
    String original = //
    "package org.kissmda.test.junit;\n" //
        + "public class ClazzName {\n" //
        + "  public void doSomething1(  Name values) throws org.kissmda.AException {\n" //
        + "    assertNotNull(values);\n" //
        + "  }\n" //
        + "  public void doSomething2(  Name values) throws org.kissmda.BException {\n" //
        + "    assertNotNull(values);\n" //
        + "  }\n" //
        + "  public void doSomething3(  Name values) throws AException, BException {\n" //
        + "    assertNotNull(values);\n" //
        + "  }\n" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);
    logger.info(cu.toString());

    assertEquals(
        "package org.kissmda.test.junit;\n" //
            + "import org.kissmda.AException;\n"
            + "import org.kissmda.BException;\n"
            + "public class ClazzName {\n" //
            + "  public void doSomething1(  Name values) throws AException {\n" //
            + "    assertNotNull(values);\n" //
            + "  }\n" //
            + "  public void doSomething2(  Name values) throws BException {\n" //
            + "    assertNotNull(values);\n" //
            + "  }\n" //
            + "  public void doSomething3(  Name values) throws AException, BException {\n" //
            + "    assertNotNull(values);\n" //
            + "  }\n" //
            + "}", cu.toString().trim());
  }

  @Test
  public void test_Packing_Catch_Clause_Types() {
    String original = //
    "package org.kissmda.test.junit;\n" //
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values){\n" //
        + "    try {\n" //
        + "      assertNotNull(values);\n" //
        + "    } catch (org.kissmda.AException ex) {\n"
        + "             assertNotNull(values);\n" //
        + "           }\n" //
        + "  }\n" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);
    logger.info(cu.toString());

    assertEquals("package org.kissmda.test.junit;\n" //
        + "import org.kissmda.AException;\n"
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values){\n" //
        + "    try {\n" //
        + "      assertNotNull(values);\n" //
        + "    }\n"
        + " catch (    AException ex) {\n"
        + "      assertNotNull(values);\n" //
        + "    }\n" //
        + "  }\n" //
        + "}", cu.toString().trim());
  }

  @Test
  public void test_Packing_Throw_Clause_Types() {
    String original = //
    "package org.kissmda.test.junit;\n" //
        + "public class ClazzName {\n" //
        + "  public void doSomething(  Name values) throws org.kissmda.AException {\n" //
        + "           throw new org.kissmda.BException();\n" //
        + "  }\n" //
        + "}";

    CompilationUnit cu = buildAndPackCompilationUnit(original);
    logger.info(cu.toString());

    assertEquals(
        "package org.kissmda.test.junit;\n" //
            + "import org.kissmda.AException;\n"
            + "import org.kissmda.BException;\n"
            + "public class ClazzName {\n" //
            + "  public void doSomething(  Name values) throws AException {\n" //
            + "    throw new BException();\n" //
            + "  }\n" //
            + "}", cu.toString().trim());
  }

  @SuppressWarnings("unchecked")
  @Test
  public void test_Existing_Static_Imports2() {
    AST ast = AST.newAST(AST.JLS4);
    CompilationUnit cu = ast.newCompilationUnit();

    PackageDeclaration packageDeclaration = ast.newPackageDeclaration();
    packageDeclaration.setName(ast.newName("org.kissmda.test.junit"));
    cu.setPackage(packageDeclaration);

    ImportDeclaration importDeclaration = ast.newImportDeclaration();
    importDeclaration
        .setName(ast.newName("org.junit.Assert.assertNotNull"));
    importDeclaration.setStatic(true);
    cu.imports().add(importDeclaration);

    logger.info(cu.toString());
    new ImportPacker(cu).pack();

    logger.info(cu.toString());

    assertEquals("package org.kissmda.test.junit;\n" //
        + "import static org.junit.Assert.assertNotNull;", cu
        .toString().trim());
  }

  private CompilationUnit buildAndPackCompilationUnit(String java) {
    ASTParser parser = ASTParser.newParser(AST.JLS4);
    parser.setSource(java.toCharArray());
    CompilationUnit cu = (CompilationUnit) parser.createAST(null);
    logger.info(cu.toString());
    new ImportPacker(cu).pack();
    return cu;
  }

}
TOP

Related Classes of de.crowdcode.kissmda.extensions.importpacker.ImportPackerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.