/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed 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
*******************************************************************************/
package org.ebayopensource.turmeric.eclipse.utils.test.plugin;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.PropertyResourceBundle;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.ebayopensource.turmeric.eclipse.utils.collections.ListUtil;
import org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil;
import org.ebayopensource.turmeric.eclipse.utils.plugin.ProgressUtil;
import org.ebayopensource.turmeric.eclipse.utils.plugin.ProjectUtil;
import org.ebayopensource.turmeric.eclipse.utils.plugin.WorkspaceUtil;
import org.ebayopensource.turmeric.eclipse.utils.test.Activator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* @author yayu
*
*/
public class TestJDTUtil {
private static IProject project;
/**
* @throws java.lang.Exception
*/
@BeforeClass
public static void setUpBeforeClass() throws Exception {
IPath workspaceRoot = ResourcesPlugin.getWorkspace().getRoot().getLocation();
IProgressMonitor monitor = new NullProgressMonitor();
project = WorkspaceUtil.createProject(TestJDTUtil.class.getSimpleName() + "Project",
workspaceRoot, monitor);
final IProjectDescription description = project.getDescription();
final List<String> natureIDs = ListUtil.array(description
.getNatureIds());
natureIDs.add(JavaCore.NATURE_ID);
description.setNatureIds(natureIDs.toArray(new String[0]));
project.setDescription(description, monitor);
}
/**
* @throws java.lang.Exception
*/
@AfterClass
public static void tearDownAfterClass() throws Exception {
project.delete(true, new NullProgressMonitor());
project = null;
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#validateIdentifier(java.lang.String)}.
*/
@Test
public void testValidateIdentifier() {
Assert.assertFalse(JDTUtil.validateIdentifier("**xxx").isOK());
Assert.assertTrue(JDTUtil.validateIdentifier("NikonClass").isOK());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#validateJavaTypeName(java.lang.String)}.
*/
@Test
public void testValidateJavaTypeName() {
Assert.assertFalse(JDTUtil.validateJavaTypeName("**xxx").isOK());
Assert.assertTrue(JDTUtil.validateJavaTypeName("NikonClass").isOK());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#validateMethodName(java.lang.String)}.
*/
@Test
public void testValidateMethodName() {
Assert.assertFalse(JDTUtil.validateMethodName("**xxx").isOK());
Assert.assertTrue(JDTUtil.validateMethodName("isNikonClass").isOK());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#validatePacakgeName(java.lang.String)}.
*/
@Test
public void testValidatePacakgeName() {
Assert.assertFalse(JDTUtil.validatePacakgeName("**xxx").isOK());
Assert.assertTrue(JDTUtil.validatePacakgeName("com.nikon.dslr").isOK());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#addJavaSupport(org.eclipse.core.resources.IProject, java.util.List, java.lang.String, java.lang.String, org.eclipse.core.runtime.IProgressMonitor)}.
* @throws CoreException
*/
@Test
public void testAddJavaSupport() throws CoreException {
JDTUtil.addJavaSupport(project, ListUtil.arrayList("src"), "1.6",
"build/classes", ProgressUtil.getDefaultMonitor(null));
Assert.assertTrue(project.hasNature(JavaCore.NATURE_ID));
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#resolveClasspathToURLs(org.eclipse.core.resources.IProject)}.
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#resolveClasspathToURLs(org.osgi.framework.Bundle, org.eclipse.core.resources.IProject)}.
* @throws Exception
*/
@Test
public void testResolveClasspathToURLsIProject() throws Exception {
Set<URL> urls = JDTUtil.resolveClasspathToURLs(Activator.getDefault().getBundle(), project);
Assert.assertNotNull(urls);
Assert.assertFalse(urls.isEmpty());
urls = JDTUtil.resolveClasspathToURLs(project);
Assert.assertNotNull(urls);
Assert.assertFalse(urls.isEmpty());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#addNatures(org.eclipse.core.resources.IProject, org.eclipse.core.runtime.IProgressMonitor, java.lang.String[])}.
* @throws CoreException
*/
@Test
public void testAddNatures() throws CoreException {
IProgressMonitor monitor = ProgressUtil.getDefaultMonitor(null);
if (project.hasNature(JavaCore.NATURE_ID)) {
ProjectUtil.removeNatures(project, monitor, JavaCore.NATURE_ID);
}
JDTUtil.addJavaNature(project, monitor);
Assert.assertTrue(project.hasNature(JavaCore.NATURE_ID));
ProjectUtil.removeNatures(project, monitor, JavaCore.NATURE_ID);
JDTUtil.addNatures(project, monitor, JavaCore.NATURE_ID);
Assert.assertTrue(project.hasNature(JavaCore.NATURE_ID));
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#rawClasspath(org.eclipse.core.resources.IProject, boolean)}.
* @throws JavaModelException
*/
@Test
public void testRawClasspathIProjectBoolean() throws JavaModelException {
List<IClasspathEntry> entries = JDTUtil.rawClasspath(project, true);
Assert.assertNotNull(entries);
Assert.assertFalse(entries.isEmpty());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#rawClasspath(org.eclipse.jdt.core.IJavaProject, boolean)}.
* @throws JavaModelException
*/
@Test
public void testRawClasspathIJavaProjectBoolean() throws JavaModelException {
List<IClasspathEntry> entries = JDTUtil.rawClasspath(JavaCore.create(project), true);
Assert.assertNotNull(entries);
Assert.assertFalse(entries.isEmpty());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#isClasspathContainer(org.eclipse.jdt.core.IClasspathEntry, java.lang.String)}.
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#isJREClasspathContainer(org.eclipse.jdt.core.IClasspathEntry)}.
* @throws JavaModelException
*/
@Test
public void testIsClasspathContainer() throws JavaModelException {
for (IClasspathEntry entry: JDTUtil.rawClasspath(project, true)) {
switch(entry.getContentKind()) {
case IClasspathEntry.CPE_CONTAINER:
Assert.assertTrue(JDTUtil.isClasspathContainer(entry, entry.getPath().toString()));
break;
default:
//Assert.assertFalse(JDTUtil.isClasspathContainer(entry, entry.getPath().toString()));
break;
}
}
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#getBundleInfo(org.osgi.framework.Bundle, boolean)}.
*/
@Test
public void testGetBundleInfo() {
String data = JDTUtil.getBundleInfo(Activator.getDefault().getBundle(), true);
Assert.assertNotNull(data);
Assert.assertTrue(data.length() > 0);
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#generateQualifiedClassNameUsingPathSeperator(java.lang.String, java.lang.String, java.lang.String)}.
*/
@Test
public void testGenerateQualifiedClassNameUsingPathSeperator() {
String serviceInterface = "org.ebayopensource.turmeric.service.Service";
String name = JDTUtil.generateQualifiedClassNameUsingPathSeperator(serviceInterface,
"gen",
"BaseServiceConsumer");
Assert.assertTrue("name should not be empty", StringUtils.isNotBlank(name));
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#getPluginProperties(org.osgi.framework.Bundle, java.lang.String)}.
* @throws IOException
*/
@Test
public void testGetPluginPropertiesBundleString() throws IOException {
PropertyResourceBundle bundle = JDTUtil.getPluginProperties(Activator.getDefault().getBundle(),
"plugin.properties");
Assert.assertNotNull(bundle);
Assert.assertFalse(bundle.keySet().isEmpty());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#getPluginProperties(org.osgi.framework.Bundle)}.
* @throws IOException
*/
@Test
public void testGetPluginPropertiesBundle() throws IOException {
PropertyResourceBundle bundle = JDTUtil.getPluginProperties(Activator.getDefault().getBundle());
Assert.assertNotNull(bundle);
Assert.assertFalse(bundle.keySet().isEmpty());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#getSourceDirectories(org.eclipse.core.resources.IProject)}.
*/
@Test
public void testGetSourceDirectories() {
List<IPath> srcDirs = JDTUtil.getSourceDirectories(project);
Assert.assertNotNull(srcDirs);
Assert.assertFalse(srcDirs.isEmpty());
}
/**
* Test method for {@link org.ebayopensource.turmeric.eclipse.utils.plugin.JDTUtil#convertClassNameToFilePath(java.lang.String)}.
*/
@Test
public void testConvertClassNameToFilePath() {
String javaName = "com.nikon.DSLR";
Assert.assertEquals(new Path("com/nikon/DSLR.java"), JDTUtil.convertClassNameToFilePath(javaName));
}
}