Skip to content

Commit

Permalink
Switch to parameterized tests
Browse files Browse the repository at this point in the history
  • Loading branch information
koppor committed Oct 3, 2017
1 parent a721a2f commit 71b38e1
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 143 deletions.
Expand Up @@ -15,6 +15,7 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.nio.file.Path;

import org.eclipse.winery.model.tosca.yaml.TImportDefinition;
import org.eclipse.winery.model.tosca.yaml.TServiceTemplate;
Expand Down Expand Up @@ -42,6 +43,17 @@ public Reader() {
this.yaml = new Yaml();
}

/**
* @param fileName the file to parse
*/
public TServiceTemplate parse(Path fileName) throws MultiException {
return this.readServiceTemplate(fileName.getParent().toString(), fileName.getFileName().toString(), Namespaces.DEFAULT_NS);
}

/**
* @deprecated Use {@link Reader#parse(java.nio.file.Path)}
*/
@Deprecated
public TServiceTemplate parse(String path, String file) throws MultiException {
return this.readServiceTemplate(path, file, Namespaces.DEFAULT_NS);
}
Expand Down
Expand Up @@ -11,9 +11,11 @@
*******************************************************************************/
package org.eclipse.winery.yaml.common.writer.yaml;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
import java.util.Objects;
Expand Down Expand Up @@ -72,7 +74,13 @@
import org.eclipse.winery.yaml.common.Namespaces;
import org.eclipse.winery.yaml.common.writer.yaml.support.Printer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Writer extends AbstractVisitor<Printer, Writer.Parameter> {

private static final Logger LOGGER = LoggerFactory.getLogger(AbstractVisitor.class);

private final int INDENT_SIZE;

public Writer() {
Expand All @@ -83,19 +91,29 @@ public Writer(int indentSize) {
this.INDENT_SIZE = indentSize;
}

public void write(TServiceTemplate serviceTemplate, String fileName) {
public void write(TServiceTemplate serviceTemplate, Path fileName) {
Objects.requireNonNull(serviceTemplate);
try {
File file = new File(fileName);
file.getParentFile().mkdir();
FileWriter fileWriter = new FileWriter(file);
Files.createDirectories(Objects.requireNonNull(fileName).getParent());
} catch (IOException e) {
LOGGER.debug("Could not create directory", e);
return;
}
try (FileWriter fileWriter = new FileWriter(fileName.toFile())) {
fileWriter.write(this.visit(serviceTemplate, new Parameter(0)).toString());
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
LOGGER.debug("Could write to file", e);
}
}

/**
* @deprecated Use {@link Writer#write(org.eclipse.winery.model.tosca.yaml.TServiceTemplate, java.nio.file.Path)}
*/
@Deprecated
public void write(TServiceTemplate serviceTemplate, String fileName) {
this.write(serviceTemplate, Paths.get(fileName));
}

public Printer visit(TServiceTemplate node, Parameter parameter) {
return new Printer(parameter.getIndent())
.printKeyValue("tosca_definitions_version", node.getToscaDefinitionsVersion())
Expand Down
Expand Up @@ -11,7 +11,12 @@
*******************************************************************************/
package org.eclipse.winery.yaml.common.writer;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collection;
import java.util.Map;

import org.eclipse.winery.model.tosca.yaml.TServiceTemplate;
import org.eclipse.winery.yaml.common.reader.BuilderTests;
Expand All @@ -20,158 +25,69 @@

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

@RunWith(Parameterized.class)
public class YamlWriterTest {

private static final String PATH = "src/test/resources/writer/tmp";
private static final String FILE_TYPE = ".yml";

private Writer writer = new Writer();
private Reader reader = new Reader();
private BuilderTests builderTests = new BuilderTests();

private String getName(String name) {
return PATH + File.separator + name;
}

@Test
public void toscaDefinitionsVersion() throws Exception {
String name = builderTests.toscaDefinitionsVersion().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.toscaDefinitionsVersion().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
}

@Test
public void metadata() throws Exception {
String name = builderTests.metadata().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.metadata().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
}

@Test
public void description() throws Exception {
String name = builderTests.description().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.description().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
}

@Test
public void dslDefinitions() throws Exception {
String name = builderTests.dslDefinitions().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.dslDefinitions().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
private final Path yamlPath;
private final TServiceTemplate serviceTemplate;

@Parameterized.Parameters
public static Collection<Object[]> data() throws Exception {
return Arrays.asList(new Object[][]{
getParameter(builderTests.toscaDefinitionsVersion()),
getParameter(builderTests.metadata()),
getParameter(builderTests.description()),
getParameter(builderTests.dslDefinitions()),
getParameter(builderTests.repositories()),
getParameter(builderTests.artifactTypes()),
getParameter(builderTests.dataTypes()),
getParameter(builderTests.capabilityTypes()),
getParameter(builderTests.interfaceTypes()),
getParameter(builderTests.relationshipTypes()),
getParameter(builderTests.nodeTypes()),
getParameter(builderTests.groupTypes()),
getParameter(builderTests.policyTypes()),
getParameter(builderTests.example16())
});
}

@Test
public void repositories() throws Exception {
String name = builderTests.repositories().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.repositories().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
public static Object[] getParameter(Map.Entry<String, TServiceTemplate> entry) throws Exception {
return new Object[]{getYamlPath(entry.getKey()), entry.getValue()};
}

@Test
public void artifactTypes() throws Exception {
String name = builderTests.artifactTypes().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.artifactTypes().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
}

@Test
public void dataTypes() throws Exception {
String name = builderTests.dataTypes().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.dataTypes().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
}

@Test
public void capabilityTypes() throws Exception {
String name = builderTests.capabilityTypes().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.capabilityTypes().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
}

@Test
public void interfaceTypes() throws Exception {
String name = builderTests.interfaceTypes().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.interfaceTypes().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
}

@Test
public void relationshipTypes() throws Exception {
String name = builderTests.relationshipTypes().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.relationshipTypes().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);
private static final String FILE_TYPE = ".yml";

Assert.assertEquals(serviceTemplate, out);
}
private static final BuilderTests builderTests = new BuilderTests();

@Test
public void nodeTypes() throws Exception {
String name = builderTests.nodeTypes().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.nodeTypes().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);
private static Path temporaryFolder;

Assert.assertEquals(serviceTemplate, out);
static {
try {
temporaryFolder = Files.createTempDirectory("winery-yaml");
} catch (IOException e) {
e.printStackTrace();
}
}

@Test
public void groupTypes() throws Exception {
String name = builderTests.groupTypes().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.groupTypes().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);
private Writer writer = new Writer();
private Reader reader = new Reader();

Assert.assertEquals(serviceTemplate, out);
private static Path getYamlPath(String name) throws Exception {
return temporaryFolder.resolve(name + FILE_TYPE);
}

@Test
public void policyTypes() throws Exception {
String name = builderTests.policyTypes().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.policyTypes().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

Assert.assertEquals(serviceTemplate, out);
public YamlWriterTest(Path yamlPath, TServiceTemplate serviceTemplate) {
this.yamlPath = yamlPath;
this.serviceTemplate = serviceTemplate;
}

@Test
public void example16() throws Exception {

String name = builderTests.example16().getKey() + FILE_TYPE;
TServiceTemplate serviceTemplate = builderTests.example16().getValue();
writer.write(serviceTemplate, getName(name));
TServiceTemplate out = reader.parse(PATH, name);

public void roundtrip() throws Exception {
writer.write(serviceTemplate, yamlPath);
TServiceTemplate out = reader.parse(yamlPath);
Assert.assertEquals(serviceTemplate, out);
}
}

0 comments on commit 71b38e1

Please sign in to comment.