package fr.inria.diversify.ut.json.output;
import fr.inria.diversify.diversification.InputConfiguration;
import fr.inria.diversify.persistence.Header;
import fr.inria.diversify.persistence.MavenHeader;
import fr.inria.diversify.persistence.json.output.JsonHeaderOutput;
import fr.inria.diversify.transformation.ast.ASTDelete;
import fr.inria.diversify.transformation.ast.ASTReplace;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import static fr.inria.diversify.ut.json.SectionTestUtils.list;
import static org.junit.Assert.assertEquals;
/**
* Created by marodrig on 23/01/2015.
*/
public class JsonHeaderOutputTest {
public static final String SRC_POM = "/uzr/pr0j3ct/pom.xml";
//public static final String GEN_VER = "1.0-SNAPSHOT";
public static class JsonHeaderOutputForUT extends JsonHeaderOutput {
public JsonHeaderOutputForUT(String srcPOM, String generatorPOM) {
super(srcPOM, generatorPOM);
}
@Override
protected Reader getReader(String path) {
return new InputStreamReader(new ByteArrayInputStream(generatePOM(path).getBytes(StandardCharsets.UTF_8)));
}
}
public static String generatePOM(String path) {
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n");
sb.append("<project xmlns=\"http://maven.apache.org/POM/4.0.0\" \n");
sb.append("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n");
sb.append("xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"> \n");
sb.append("<parent> \n");
sb.append("<artifactId>Sosies-generator</artifactId> \n");
sb.append("<groupId>fr.irisa.diversify</groupId> \n");
sb.append("<version>1.2.1</version> \n");
sb.append("</parent> \n");
sb.append("<modelVersion>4.0.0</modelVersion> \n");
sb.append("<artifactId>generator</artifactId> \n");
sb.append("</project> ");
return sb.toString();
}
@Test
public void testWrite() throws JSONException {
JSONObject o = new JSONObject();
JsonHeaderOutputForUT h = new JsonHeaderOutputForUT(SRC_POM, InputConfiguration.LATEST_GENERATOR_VERSION);
h.setTransformations(list(new ASTDelete(), new ASTReplace()));
h.write(o);
o = o.getJSONObject(Header.HEADER);
assertEquals(o.getInt(Header.TRANSF_COUNT), 2);
assertEquals(o.getString(Header.PROJECT_TYPE), MavenHeader.MAVEN_TYPE);
assertEquals(o.getString(MavenHeader.GROUP_ID), "fr.irisa.diversify");
assertEquals(o.getString(MavenHeader.ARTIFACT_ID),"generator");
assertEquals(o.getString(MavenHeader.VERSION), "1.2.1");
assertEquals(o.getString(MavenHeader.GENERATOR_VERSION), InputConfiguration.LATEST_GENERATOR_VERSION);
}
}