package org.netbeans.gradle.project.java.model;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.netbeans.gradle.model.GenericProjectProperties;
import org.netbeans.gradle.model.java.JavaCompatibilityModel;
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.JavaTestModel;
import org.netbeans.gradle.model.util.SerializationCache;
import org.netbeans.gradle.model.util.SerializationUtils;
import org.netbeans.gradle.project.model.NbGradleProjectTreeTest;
import org.netbeans.gradle.project.util.GradleVersions;
import static org.junit.Assert.*;
public class NbJavaModelTest {
private static JavaSourceGroup createSourceGroup(String name) {
return new JavaSourceGroup(JavaSourceGroupName.JAVA, Arrays.asList(new File(name + "-src-java")));
}
private static JavaSourceSet createSources(String name) {
JavaSourceSet.Builder result = new JavaSourceSet.Builder(
name,
new JavaOutputDirs(new File(name + "-out-classes"), new File(name + "-out-res"), Collections.<File>emptySet()));
result.addSourceGroup(createSourceGroup(name));
return result.create();
}
private static NbJavaModule createModule(String name) {
String fullName = ":apps:" + name;
GenericProjectProperties properties = NbGradleProjectTreeTest.createProperties(name, fullName);
JavaCompatibilityModel compatibility = new JavaCompatibilityModel("1.6", "1.7");
List<JavaSourceSet> sources = Arrays.asList(createSources("main"), createSources("test"));
List<NbListedDir> listedDirs = Arrays.asList(
new NbListedDir("my-listed-dir", new File("listed-dir")));
JavaTestModel testModel = JavaTestModel.getDefaulTestModel(properties.getProjectDir());
List<NbJarOutput> jarOutputs = Arrays.asList(
new NbJarOutput("jar",
new File(properties.getBuildDir(), "myproject.jar"),
Arrays.asList(sources.get(0).getOutputDirs().getClassesDir()))
);
return new NbJavaModule(properties, compatibility, sources, listedDirs, jarOutputs, testModel, NbCodeCoverage.NO_CODE_COVERAGE);
}
@Test
public void testSerialization() throws ClassNotFoundException {
NbJavaModule mainModule = createModule("mainModule");
NbJavaModel source = NbJavaModel.createModel(
GradleVersions.DEFAULT_TARGET,
JavaModelSource.GRADLE_1_8_API,
mainModule);
byte[] serialized = SerializationUtils.serializeObject(source);
NbJavaModel deserialized = (NbJavaModel)SerializationUtils.deserializeObject(serialized, SerializationCache.NO_CACHE);
assertEquals(
source.getMainModule().getModuleDir().toString(),
deserialized.getMainModule().getModuleDir().toString());
}
}