package org.netbeans.gradle.model.util;
import java.util.Collection;
import java.util.EnumMap;
import java.util.Map;
import org.netbeans.gradle.model.java.JavaOutputDirs;
import org.netbeans.gradle.model.java.JavaSourceGroup;
import org.netbeans.gradle.model.java.JavaSourceGroupName;
import org.netbeans.gradle.model.java.JavaSourceSet;
import org.netbeans.gradle.model.java.JavaSourcesModel;
import static org.junit.Assert.*;
public final class SourceSetVerification {
private static Map<String, JavaSourceSet> sourceSetMap(JavaSourcesModel sources) {
Collection<JavaSourceSet> sourceSets = sources.getSourceSets();
Map<String, JavaSourceSet> result = CollectionUtils.newHashMap(sourceSets.size());
for (JavaSourceSet sourceSet: sourceSets) {
result.put(sourceSet.getName(), sourceSet);
}
return result;
}
private static Map<JavaSourceGroupName, JavaSourceGroup> sourceGroupMap(
Collection<JavaSourceGroup> sourceGroups) {
Map<JavaSourceGroupName, JavaSourceGroup> result
= new EnumMap<JavaSourceGroupName, JavaSourceGroup>(JavaSourceGroupName.class);
for (JavaSourceGroup sourceGroup: sourceGroups) {
result.put(sourceGroup.getGroupName(), sourceGroup);
}
return result;
}
public static void verifyOutputDirs(
JavaOutputDirs expected,
JavaOutputDirs actual) {
assertEquals(expected.getClassesDir(), actual.getClassesDir());
assertEquals(expected.getResourcesDir(), actual.getResourcesDir());
}
public static void verifySourceGroups(
Collection<JavaSourceGroup> expected,
Collection<JavaSourceGroup> actual) {
Map<JavaSourceGroupName, JavaSourceGroup> expectedMap = sourceGroupMap(expected);
for (JavaSourceGroup sourceGroup: actual) {
JavaSourceGroupName name = sourceGroup.getGroupName();
JavaSourceGroup expectedSourceGroup = expectedMap.get(name);
expectedMap.remove(name);
if (expectedSourceGroup == null) {
throw new AssertionError("Unexpected source group: " + name);
}
assertEquals("Source groups (" + name + ") must contain the same source roots.",
expectedSourceGroup.getSourceRoots(), sourceGroup.getSourceRoots());
}
if (!expectedMap.isEmpty()) {
fail("Missing expected source groups: " + expectedMap.keySet().toString());
}
}
public static void verifySourceSetWithoutDependencies(
JavaSourceSet expected,
JavaSourceSet actual) {
assertEquals("Source set names must match.", expected.getName(), actual.getName());
verifyOutputDirs(expected.getOutputDirs(), actual.getOutputDirs());
expected.getSourceGroups();
}
public static void verifySourcesModelWithoutDependencies(
JavaSourcesModel expected,
JavaSourcesModel actual) {
Map<String, JavaSourceSet> expectedMap = sourceSetMap(expected);
for (JavaSourceSet sourceSet: actual.getSourceSets()) {
JavaSourceSet expectedSourceSet = expectedMap.get(sourceSet.getName());
expectedMap.remove(sourceSet.getName());
if (expectedSourceSet == null) {
fail("Unexpected source set: " + sourceSet.getName());
}
verifySourceSetWithoutDependencies(expectedSourceSet, sourceSet);
}
if (!expectedMap.isEmpty()) {
fail("Missing expected source sets: " + expectedMap.keySet().toString());
}
}
private SourceSetVerification() {
throw new AssertionError();
}
}