package net.ayld.facade.resolver.impl;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.HashSet;
import java.util.Set;
import net.ayld.facade.dependency.resolver.DependencyResolver;
import net.ayld.facade.model.ClassName;
import net.ayld.facade.model.SourceFile;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.google.common.base.Charsets;
import com.google.common.collect.Sets;
import com.google.common.io.Resources;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:META-INF/test-contexts/testManualParseSourceDependencyResolverContext.xml"})
public class TestManualParseSourceDependencyResolver {
private static final String JAVA_IMPORT_KEYWOD = "import";
@Autowired
private DependencyResolver<SourceFile> sourceDependencyResolver;
@Test
public void testResolve() throws IOException, URISyntaxException {
final URL validSourceUrl = Resources.getResource("test-classes/ValidCoffee.java");
// get dependencies in a way different than the resolver
final String content = Resources.toString(validSourceUrl, Charsets.UTF_8);
final String[] lines = content.split("\\\n");
final Set<String> dependencies = new HashSet<>();
for (String line : lines) {
if (line.startsWith(JAVA_IMPORT_KEYWOD)) {
final String dependency = line.split(" ")[1].replaceAll(";", "").replaceAll("\r", ""); // not very pretty ...
dependencies.add(dependency);
}
}
// get dependencies through the resolver
final Set<ClassName> resolvedDependencies = sourceDependencyResolver.resolve(SourceFile.fromFile(new File(validSourceUrl.toURI())));
// result sets should match
Assert.assertEquals(dependencies, toStringSet(resolvedDependencies));
}
@Test
public void testValidate() throws URISyntaxException, IOException{
final URL invalidSourceUrl = Resources.getResource("test-classes/InvalidCoffee.java");
try {
sourceDependencyResolver.resolve(SourceFile.fromFile(new File(invalidSourceUrl.toURI()))); // should blow up
} catch (IllegalArgumentException e) {
// party :)
return;
}
Assert.fail(); // no party :(
}
private Set<String> toStringSet(Set<ClassName> toConvert) {
final Set<String> result = Sets.newHashSet();
for (ClassName name : toConvert) {
result.add(name.toString());
}
return result;
}
}