BaseCompilationTest should be used as the baseline for creating
tests which create source code. Refactor it a bit, to allow for
wider reuse.
Change-Id: I69a9d779222439813efb70b25cf88e5b03ac4f7e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
bindingGenerator = new BindingGeneratorImpl();
}
bindingGenerator = new BindingGeneratorImpl();
}
- protected final void generateTestSources(final String resourceDirPath, final File sourcesOutputDir)
+ protected static final void generateTestSources(final List<Type> types, final File sourcesOutputDir)
+ throws IOException {
+ Collections.sort(types, (o1, o2) -> o2.getName().compareTo(o1.getName()));
+
+ final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types));
+ generator.generateToFile(sourcesOutputDir);
+ }
+
+ protected final List<Type> generateTestSources(final String resourceDirPath, final File sourcesOutputDir)
throws IOException, URISyntaxException {
final List<File> sourceFiles = CompilationTestUtils.getSourceFiles(resourceDirPath);
final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles);
final List<Type> types = bindingGenerator.generateTypes(context);
throws IOException, URISyntaxException {
final List<File> sourceFiles = CompilationTestUtils.getSourceFiles(resourceDirPath);
final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles);
final List<Type> types = bindingGenerator.generateTypes(context);
- Collections.sort(types, (o1, o2) -> o2.getName().compareTo(o1.getName()));
- final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types));
- generator.generateToFile(sourcesOutputDir);
+ generateTestSources(types, sourcesOutputDir);
// Also generate YangModuleInfo
for (Module module : context.getModules()) {
// Also generate YangModuleInfo
for (Module module : context.getModules()) {
BindingMapping.MODULE_INFO_CLASS_NAME + ".java");
Files.asCharSink(file, StandardCharsets.UTF_8).write(template.generate());
}
BindingMapping.MODULE_INFO_CLASS_NAME + ".java");
Files.asCharSink(file, StandardCharsets.UTF_8).write(template.generate());
}
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
-import java.util.HashSet;
-import org.opendaylight.mdsal.binding.java.api.generator.GeneratorJavaFile;
import org.opendaylight.mdsal.binding.model.api.GeneratedType;
import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
import org.opendaylight.mdsal.binding.model.api.GeneratedType;
import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
import org.opendaylight.mdsal.binding.model.util.Types;
import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTypeBuilder;
import org.opendaylight.mdsal.binding.model.util.Types;
import org.opendaylight.mdsal.binding.model.util.generated.type.builder.CodegenGeneratedTypeBuilder;
-public class GeneratorJavaFileTest {
+public class GeneratorJavaFileTest extends BaseCompilationTest {
private static final String FS = File.separator;
private static final String PATH = "target/test/test-dir";
@Test
public void test() throws IOException {
private static final String FS = File.separator;
private static final String PATH = "target/test/test-dir";
@Test
public void test() throws IOException {
- final Set<GeneratedType> types = new HashSet<>();
- GeneratedType t1 = createGeneratedType("org.opendaylight.controller.gen", "Type1");
- GeneratedType t2 = createGeneratedType("org.opendaylight.controller.gen", "Type2");
- GeneratedType t3 = createGeneratedType("org.opendaylight.controller.gen", "Type3");
- types.add(t1);
- types.add(t2);
- types.add(t3);
- GeneratedTypeBuilder gtb = new CodegenGeneratedTypeBuilder(
- JavaTypeName.create("org.opendaylight.controller.gen", "Type4"));
+ final GeneratedTypeBuilder gtb = new CodegenGeneratedTypeBuilder(JavaTypeName.create(
+ "org.opendaylight.controller.gen", "Type4"));
gtb.addImplementsType(Types.augmentableTypeFor(gtb));
gtb.addImplementsType(Types.augmentableTypeFor(gtb));
- types.add(gtb.build());
- GeneratorJavaFile generator = new GeneratorJavaFile(types);
- generator.generateToFile(new File(PATH));
- String[] files = new File(PATH + FS + "org" + FS + "opendaylight" + FS + "controller" + FS + "gen").list();
- List<String> filesList = Arrays.asList(files);
+ generateTestSources(Arrays.asList(
+ createGeneratedType("org.opendaylight.controller.gen", "Type1"),
+ createGeneratedType("org.opendaylight.controller.gen", "Type2"),
+ createGeneratedType("org.opendaylight.controller.gen", "Type3"),
+ gtb.build()), new File(PATH));
+
+ List<String> filesList = Arrays.asList(
+ new File(PATH + FS + "org" + FS + "opendaylight" + FS + "controller" + FS + "gen").list());
// assertEquals(5, files.length);
assertTrue(filesList.contains("Type1.java"));
// assertEquals(5, files.length);
assertTrue(filesList.contains("Type1.java"));
builder.addImplementsType(BindingTypes.DATA_OBJECT);
return builder.build();
}
builder.addImplementsType(BindingTypes.DATA_OBJECT);
return builder.build();
}
import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.FS;
import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.GENERATOR_OUTPUT_PATH;
import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.cleanUp;
import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.FS;
import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.GENERATOR_OUTPUT_PATH;
import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.cleanUp;
-import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.getSourceFiles;
import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.testCompilation;
import java.io.File;
import static org.opendaylight.mdsal.binding.java.api.generator.test.CompilationTestUtils.testCompilation;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
-import java.util.HashSet;
import java.util.List;
import org.junit.Test;
import java.util.List;
import org.junit.Test;
-import org.opendaylight.mdsal.binding.java.api.generator.GeneratorJavaFile;
import org.opendaylight.mdsal.binding.model.api.Type;
import org.opendaylight.mdsal.binding.model.api.Type;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
public class UnionTypedefUnusedImportTest extends BaseCompilationTest {
@Test
public void testUnionTypedefUnusedImport() throws Exception {
final File sourcesOutputDir = CompilationTestUtils.generatorOutput("union-typedef");
public class UnionTypedefUnusedImportTest extends BaseCompilationTest {
@Test
public void testUnionTypedefUnusedImport() throws Exception {
final File sourcesOutputDir = CompilationTestUtils.generatorOutput("union-typedef");
- final File compiledOutputDir = CompilationTestUtils.compilerOutput("union-typedef");
- final List<File> sourceFiles = getSourceFiles("/compilation/union-typedef");
- final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles);
- final List<Type> types = bindingGenerator.generateTypes(context);
- final GeneratorJavaFile generator = new GeneratorJavaFile(new HashSet<>(types));
- generator.generateToFile(sourcesOutputDir);
+ final List<Type> types = generateTestSources("/compilation/union-typedef", sourcesOutputDir);
+
final boolean isUsedImport = containsImport("org.opendaylight.yang.gen.v1.org.opendaylight.yangtools.union.typedef.rev130208.TypedefUnion");
assertFalse(String.format("Class shouldn't contain import for this type '%s'", types.get(1).getName()),
isUsedImport);
final boolean isUsedImport = containsImport("org.opendaylight.yang.gen.v1.org.opendaylight.yangtools.union.typedef.rev130208.TypedefUnion");
assertFalse(String.format("Class shouldn't contain import for this type '%s'", types.get(1).getName()),
isUsedImport);
+ final File compiledOutputDir = CompilationTestUtils.compilerOutput("union-typedef");
testCompilation(sourcesOutputDir, compiledOutputDir);
cleanUp(sourcesOutputDir, compiledOutputDir);
}
testCompilation(sourcesOutputDir, compiledOutputDir);
cleanUp(sourcesOutputDir, compiledOutputDir);
}