/**
* Copyright 2006-2016 the original author or authors.
*
* 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
*
* 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 org.mybatis.generator.eclipse.core.tests.callback;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat;
import static org.mybatis.generator.eclipse.core.tests.callback.WorkspaceUtilities.createJavaProject;
import static org.mybatis.generator.eclipse.core.tests.callback.WorkspaceUtilities.deleteProject;
import static org.mybatis.generator.eclipse.core.tests.callback.WorkspaceUtilities.getWorkspace;
import java.io.File;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jdt.core.IJavaProject;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mybatis.generator.eclipse.core.callback.EclipseShellCallback;
import org.mybatis.generator.exception.ShellException;
public class EclipseShellCallbackTest {
private static IJavaProject javaProject;
@BeforeClass
public static void setup() throws CoreException {
javaProject = createJavaProject("P", new String[] { "src/main/java", "generatedsrc" }, "bin", "1.5");
}
@AfterClass
public static void tearDown() throws CoreException {
deleteProject("P");
}
@Test
public void testCalculatingDirectoryOnDefaultSourceFolder() throws ShellException {
EclipseShellCallback callback = new EclipseShellCallback();
File directory = callback.getDirectory(javaProject.getElementName(), "org.mybatis.test");
assertThat(directory, is(notNullValue()));
assertThat(directory.exists(), is(true));
IPath actualPath = new Path(directory.getAbsolutePath());
IPath workspacePath = getWorkspace().getRoot().getLocation();
IPath expectedPath = workspacePath.append(javaProject.getElementName())
.append("src")
.append("main")
.append("java")
.append("org")
.append("mybatis")
.append("test");
assertThat(expectedPath, is(equalTo(actualPath)));
}
@Test
public void testCalculatingDirectoryOnSpecificSourceFolder() throws ShellException {
EclipseShellCallback callback = new EclipseShellCallback();
File directory = callback.getDirectory(javaProject.getElementName() + "/generatedsrc", "org.mybatis.test");
assertThat(directory, is(notNullValue()));
assertThat(directory.exists(), is(true));
IPath actualPath = new Path(directory.getAbsolutePath());
IPath workspacePath = getWorkspace().getRoot().getLocation();
IPath expectedPath = workspacePath.append(javaProject.getElementName())
.append("generatedsrc")
.append("org")
.append("mybatis")
.append("test");
assertThat(expectedPath, is(equalTo(actualPath)));
}
@Test(expected=ShellException.class)
public void testCalculatingDirectoryOnNonExistingSourceFolder() throws ShellException {
EclipseShellCallback callback = new EclipseShellCallback();
callback.getDirectory(javaProject.getElementName() + "/othersrc", "org.mybatis.test");
}
}