package net.jangaroo.exml.test;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import java.io.File;
import java.net.URISyntaxException;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
public class ExmlToConfigClassParserTest extends AbstractExmlTest {
@Test
public void testGenerateConfig() throws Exception {
setUp("testNamespace.config");
File result = new File(outputFolder.getRoot(), "testNamespace/config/testComponent.as");
File source = getFile("/testPackage/TestComponent.exml");
File outputFile = getExmlc().generateConfigClass(source);
assertNotNull(outputFile);
assertTrue("Exml config file does not exist", result.exists());
assertEquals("The files differ!", FileUtils.readFileToString(getExpected("/testNamespace/config/testComponent.as")), FileUtils.readFileToString(result));
}
@Test
public void testGenerateConfigExcludeClassFalse() throws Exception {
setUp("testNamespace.config");
File result = new File(outputFolder.getRoot(), "testNamespace/config/testComponentPublicApiFalse.as");
File source = getFile("/testPackage/TestComponentPublicApiFalse.exml");
File outputFile = getExmlc().generateConfigClass(source);
assertNotNull(outputFile);
assertTrue("Exml config file does not exist", result.exists());
assertEquals("The files differ!", FileUtils.readFileToString(getExpected("/testNamespace/config/testComponentPublicApiFalse.as")), FileUtils.readFileToString(result));
}
@Test
public void testGenerateConfigExcludeClassTrue() throws Exception {
setUp("testNamespace.config");
File result = new File(outputFolder.getRoot(), "testNamespace/config/testComponentPublicApiTrue.as");
File source = getFile("/testPackage/TestComponentPublicApiTrue.exml");
File outputFile = getExmlc().generateConfigClass(source);
assertNotNull(outputFile);
assertTrue("Exml config file does not exist", result.exists());
assertEquals("The files differ!", FileUtils.readFileToString(getExpected("/testNamespace/config/testComponentPublicApiTrue.as")), FileUtils.readFileToString(result));
}
@Test
public void testGenerateWithExisitingNewOutputFile() throws Exception {
setUp("testNamespace.config");
File packageFolder = new File(outputFolder.getRoot(), "testNamespace/config/");
packageFolder.mkdirs();
File result = new File(packageFolder, "TestComponent.as");
result.createNewFile();
File source = getFile("/testPackage/TestComponent.exml");
getExmlc().generateConfigClass(source);
assertFalse("The files should differ because it was not written!", FileUtils.readFileToString(getExpected("/testNamespace/config/testComponent.as")).equals(FileUtils.readFileToString(result)));
}
@Test
public void testGenerateWithExisitingOldOutputFile() throws Exception {
setUp("testNamespace.config");
File packageFolder = new File(outputFolder.getRoot(), "testNamespace/config/");
packageFolder.mkdirs();
File result = new File(packageFolder, "testComponent.as");
result.createNewFile();
File source = getFile("/testPackage/TestComponent.exml");
//change modification date to 'old'
result.setLastModified(source.lastModified()-1000);
getExmlc().generateConfigClass(source);
assertEquals("The files differ!", FileUtils.readFileToString(getExpected("/testNamespace/config/testComponent.as")), FileUtils.readFileToString(result));
}
@Test
public void testGenerateActionConfig() throws Exception {
setUp("testNamespace.config");
File result = new File(outputFolder.getRoot(), "testNamespace/config/testAction.as");
File source = getFile("/testPackage/TestAction.exml");
File outputFile = getExmlc().generateConfigClass(source);
assertNotNull(outputFile);
assertTrue("Exml config file does not exist", result.exists());
assertEquals("The files differ!", FileUtils.readFileToString(getExpected("/testNamespace/config/testAction.as")), FileUtils.readFileToString(result));
}
@Test
public void testGeneratePluginConfig() throws Exception {
setUp("testNamespace.config");
File result = new File(outputFolder.getRoot(), "testNamespace/config/testPlugin.as");
File source = getFile("/testPackage/TestPlugin.exml");
File outputFile = getExmlc().generateConfigClass(source);
assertNotNull(outputFile);
assertTrue("Exml config file does not exist", result.exists());
assertEquals("The files differ!", FileUtils.readFileToString(getExpected("/testNamespace/config/testPlugin.as")), FileUtils.readFileToString(result));
}
private File getFile(String path) throws URISyntaxException {
return new File(ExmlToConfigClassParserTest.class.getResource("/test-module" + path).toURI());
}
private File getExpected(String path) throws URISyntaxException {
return new File(ExmlToConfigClassParserTest.class.getResource("/expected" + path).toURI());
}
}