Loading plugins/org.etsi.mts.tdl.tx.tests/.classpath +10 −4 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" output="target/classes" path="src"> <attributes> <attribute name="test" value="true"/> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> <attributes> <attribute name="module" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="output" path="target/classes"/> </classpath> plugins/org.etsi.mts.tdl.tx.tests/.settings/org.eclipse.jdt.core.prefs +2 −0 Original line number Diff line number Diff line eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 org.eclipse.jdt.core.compiler.compliance=21 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.source=21 plugins/org.etsi.mts.tdl.tx.tests/src/org/etsi/mts/tdl/tx/tests/TDLtxAbstractTest.java 0 → 100644 +112 −0 Original line number Diff line number Diff line package org.etsi.mts.tdl.tx.tests; import java.io.File; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Scanner; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.ocl.xtext.completeocl.CompleteOCLStandaloneSetup; import org.eclipse.xtext.testing.InjectWith; import org.eclipse.xtext.testing.extensions.InjectionExtension; import org.eclipse.xtext.testing.util.ParseHelper; import org.eclipse.xtext.testing.validation.ValidationTestHelper; import org.etsi.mts.tdl.Package; import org.etsi.mts.tdl.Validator; import org.etsi.mts.tdl.tdlPackage; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.extension.ExtendWith; import com.google.inject.Inject; @ExtendWith(InjectionExtension.class) @InjectWith(TDLtxInjectorProvider.class) public abstract class TDLtxAbstractTest { static { org.etsi.mts.tdl.tdlPackage.eINSTANCE.getName(); org.etsi.mts.tdl.structuredobjectives.StructuredObjectivesPackage.eINSTANCE.getName(); org.etsi.mts.tdl.extendedconfigurations.ExtendedConfigurationsPackage.eINSTANCE.getName(); CompleteOCLStandaloneSetup.doSetup(); Validator.registerValidator("model/tdl-constraints.ocl", tdlPackage.eINSTANCE); } @Inject protected ParseHelper<Package> parseHelper; @Inject protected ValidationTestHelper validationHelper; @Inject protected ResourceSet rs; public Collection<DynamicTest> dynamicTestsFromFiles() throws Exception { List<DynamicTest> tests = new ArrayList<>(); File modelsFolder = findModelsFolder(); if (modelsFolder != null && modelsFolder.exists()) { File[] files = modelsFolder.listFiles((dir, name) -> name.endsWith(".tdltx")); if (files != null) { for (File file : files) { String fileName = file.getName(); tests.add(DynamicTest.dynamicTest("Verify: " + fileName, () -> verifySingleModel(file))); } } } return tests; } protected File findModelsFolder() { URL url = getClass().getResource("/models"); if (url != null) { try { return new File(url.toURI()); } catch (Exception e) {} } String userDir = System.getProperty("user.dir"); File f = new File(userDir, "src/models"); if (f.exists()) return f; f = new File(userDir, "org.etsi.mts.tdl.tx.tests/src/models"); if (f.exists()) return f; return new File("plugins/org.etsi.mts.tdl.tx.tests/src/models"); } protected String loadModelContent(String resourcePath) throws Exception { try (InputStream is = getClass().getResourceAsStream(resourcePath)) { if (is == null) { File f = new File("src" + resourcePath); if (f.exists()) { //TODO: delimiters are platform specific? try (Scanner s = new Scanner(f).useDelimiter("\\A")) { return s.hasNext() ? s.next() : ""; } } throw new RuntimeException("Model not found: " + resourcePath); } try (Scanner s = new Scanner(is).useDelimiter("\\A")) { return s.hasNext() ? s.next() : ""; } } } protected void dumpStructure(EObject obj, StringBuilder sb, int indent) { for (int i = 0; i < indent; i++) sb.append(" "); sb.append(obj.eClass().getName()); EAttribute nameAttr = (EAttribute) obj.eClass().getEStructuralFeature("name"); if (nameAttr != null) { Object value = obj.eGet(nameAttr); if (value != null) sb.append(": ").append(value); } sb.append("\n"); for (EObject child : obj.eContents()) { dumpStructure(child, sb, indent + 1); } } public abstract void verifySingleModel(File file) throws Exception; } plugins/org.etsi.mts.tdl.tx.tests/src/org/etsi/mts/tdl/tx/tests/TDLtxParsingTest.java +3 −96 Original line number Diff line number Diff line package org.etsi.mts.tdl.tx.tests; import java.io.File; import java.io.InputStream; import java.net.URL; import java.nio.file.Files; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Scanner; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.ocl.xtext.completeocl.CompleteOCLStandaloneSetup; import org.eclipse.xtext.testing.InjectWith; import org.eclipse.xtext.testing.extensions.InjectionExtension; import org.eclipse.xtext.testing.util.ParseHelper; import org.eclipse.xtext.testing.validation.ValidationTestHelper; import org.etsi.mts.tdl.Package; import org.etsi.mts.tdl.Validator; import org.etsi.mts.tdl.tdlPackage; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestFactory; import org.junit.jupiter.api.extension.ExtendWith; import com.google.inject.Inject; @ExtendWith(InjectionExtension.class) @InjectWith(TDLtxInjectorProvider.class) //Generated by Xtext //@InjectWith(TDLtxInjectorProviderGenerated.class) public class TDLtxParsingTest { static { org.etsi.mts.tdl.tdlPackage.eINSTANCE.getName(); org.etsi.mts.tdl.structuredobjectives.StructuredObjectivesPackage.eINSTANCE.getName(); org.etsi.mts.tdl.extendedconfigurations.ExtendedConfigurationsPackage.eINSTANCE.getName(); CompleteOCLStandaloneSetup.doSetup(); Validator.registerValidator("model/tdl-constraints.ocl", tdlPackage.eINSTANCE); } @Inject private ParseHelper<Package> parseHelper; @Inject private ValidationTestHelper validationHelper; @Inject private ResourceSet rs; private String loadModelContent(String resourcePath) throws Exception { try (InputStream is = getClass().getResourceAsStream(resourcePath)) { if (is == null) { File f = new File("src" + resourcePath); if (f.exists()) { //TODO: delimiters are platform specific? try (Scanner s = new Scanner(f).useDelimiter("\\A")) { return s.hasNext() ? s.next() : ""; } } throw new RuntimeException("Model not found: " + resourcePath); } try (Scanner s = new Scanner(is).useDelimiter("\\A")) { return s.hasNext() ? s.next() : ""; } } } private void dumpStructure(EObject obj, StringBuilder sb, int indent) { for (int i = 0; i < indent; i++) sb.append(" "); sb.append(obj.eClass().getName()); EAttribute nameAttr = (EAttribute) obj.eClass().getEStructuralFeature("name"); if (nameAttr != null) { Object value = obj.eGet(nameAttr); if (value != null) sb.append(": ").append(value); } sb.append("\n"); public class TDLtxParsingTest extends TDLtxAbstractTest { for (EObject child : obj.eContents()) { dumpStructure(child, sb, indent + 1); } } @TestFactory public Collection<DynamicTest> dynamicTestsFromFiles() throws Exception { List<DynamicTest> tests = new ArrayList<>(); File modelsFolder = findModelsFolder(); if (modelsFolder != null && modelsFolder.exists()) { File[] files = modelsFolder.listFiles((dir, name) -> name.endsWith(".tdltx")); if (files != null) { for (File file : files) { String fileName = file.getName(); tests.add(DynamicTest.dynamicTest("Verify: " + fileName, () -> verifySingleModel(file))); } } } return tests; return super.dynamicTestsFromFiles(); } private File findModelsFolder() { URL url = getClass().getResource("/models"); if (url != null) { try { return new File(url.toURI()); } catch (Exception e) {} } String userDir = System.getProperty("user.dir"); File f = new File(userDir, "src/models"); if (f.exists()) return f; f = new File(userDir, "org.etsi.mts.tdl.tx.tests/src/models"); if (f.exists()) return f; return new File("plugins/org.etsi.mts.tdl.tx.tests/src/models"); } @Test public void verifyLoadModelAttributes() throws Exception { Loading @@ -137,6 +43,7 @@ public class TDLtxParsingTest { } @Override public void verifySingleModel(File file) throws Exception { String fileName = file.getName(); System.out.println("Verifying: "+fileName); Loading plugins/org.etsi.mts.tdl.tx.tests/src/org/etsi/mts/tdl/tx/tests/TDLtxSerialisationTest.java 0 → 100644 +86 −0 Original line number Diff line number Diff line package org.etsi.mts.tdl.tx.tests; import java.io.File; import java.io.OutputStream; import java.nio.file.Files; import java.util.Collection; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.util.EcoreUtil; import org.etsi.mts.tdl.Package; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestFactory; //Generated by Xtext //@InjectWith(TDLtxInjectorProviderGenerated.class) public class TDLtxSerialisationTest extends TDLtxAbstractTest { @TestFactory public Collection<DynamicTest> dynamicTestsFromFiles() throws Exception { return super.dynamicTestsFromFiles(); } @Test public void verifyLoadModelAttributes() throws Exception { Package result = parseHelper.parse(loadModelContent("/models/loadModel.tdltx")); Assertions.assertNotNull(result); Assertions.assertEquals("testP", result.getName()); } // @Test public void verifyAllModels() throws Exception { File modelsFolder = findModelsFolder(); if (modelsFolder != null && modelsFolder.exists()) { File[] files = modelsFolder.listFiles((dir, name) -> name.endsWith(".tdltx")); if (files != null) { for (File file : files) { verifySingleModel(file); } } } } @Override public void verifySingleModel(File file) throws Exception { String extension = "tdltx"; String fileName = file.getName(); if (fileName.endsWith(".tdltx."+extension)) { return; } System.out.println("Verifying: "+fileName); String content = loadModelContent("/models/" + fileName); URI uri = URI.createFileURI(file.getAbsolutePath()); // Package result = parseHelper.parse(content, uri, rs); Package result = parseHelper.parse(content); Assertions.assertNotNull(result, "Parser returned null for " + fileName); Assertions.assertTrue(result.eResource().getErrors().isEmpty(), "Syntax errors in " + fileName + ": " + result.eResource().getErrors()); //NOTE: this requires manual registration of validator when running in eclipse, completeOCL initialisation when running in maven validationHelper.assertNoErrors(result); URI targetURI = URI.createURI(uri.toString()+"."+extension); // XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class); // resourceSet = rs; Resource tr = rs.createResource(targetURI); tr.getContents().add(EcoreUtil.copy(result)); try { EcoreUtil.resolveAll(tr); tr.save(OutputStream.nullOutputStream(), null); } catch (Exception e1) { System.err.println(" Translation: "+e1.getMessage()); //e1.printStackTrace(); Assertions.fail(e1.getMessage(), e1); //TODO: provide an error dialog, fall back to XF, indicate approximate location based on error message / details } } } Loading
plugins/org.etsi.mts.tdl.tx.tests/.classpath +10 −4 Original line number Diff line number Diff line <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> <attributes> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" output="target/classes" path="src"> <attributes> <attribute name="test" value="true"/> <attribute name="optional" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21"> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> <attributes> <attribute name="module" value="true"/> <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="output" path="target/classes"/> </classpath>
plugins/org.etsi.mts.tdl.tx.tests/.settings/org.eclipse.jdt.core.prefs +2 −0 Original line number Diff line number Diff line eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 org.eclipse.jdt.core.compiler.compliance=21 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.source=21
plugins/org.etsi.mts.tdl.tx.tests/src/org/etsi/mts/tdl/tx/tests/TDLtxAbstractTest.java 0 → 100644 +112 −0 Original line number Diff line number Diff line package org.etsi.mts.tdl.tx.tests; import java.io.File; import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Scanner; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.ocl.xtext.completeocl.CompleteOCLStandaloneSetup; import org.eclipse.xtext.testing.InjectWith; import org.eclipse.xtext.testing.extensions.InjectionExtension; import org.eclipse.xtext.testing.util.ParseHelper; import org.eclipse.xtext.testing.validation.ValidationTestHelper; import org.etsi.mts.tdl.Package; import org.etsi.mts.tdl.Validator; import org.etsi.mts.tdl.tdlPackage; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.extension.ExtendWith; import com.google.inject.Inject; @ExtendWith(InjectionExtension.class) @InjectWith(TDLtxInjectorProvider.class) public abstract class TDLtxAbstractTest { static { org.etsi.mts.tdl.tdlPackage.eINSTANCE.getName(); org.etsi.mts.tdl.structuredobjectives.StructuredObjectivesPackage.eINSTANCE.getName(); org.etsi.mts.tdl.extendedconfigurations.ExtendedConfigurationsPackage.eINSTANCE.getName(); CompleteOCLStandaloneSetup.doSetup(); Validator.registerValidator("model/tdl-constraints.ocl", tdlPackage.eINSTANCE); } @Inject protected ParseHelper<Package> parseHelper; @Inject protected ValidationTestHelper validationHelper; @Inject protected ResourceSet rs; public Collection<DynamicTest> dynamicTestsFromFiles() throws Exception { List<DynamicTest> tests = new ArrayList<>(); File modelsFolder = findModelsFolder(); if (modelsFolder != null && modelsFolder.exists()) { File[] files = modelsFolder.listFiles((dir, name) -> name.endsWith(".tdltx")); if (files != null) { for (File file : files) { String fileName = file.getName(); tests.add(DynamicTest.dynamicTest("Verify: " + fileName, () -> verifySingleModel(file))); } } } return tests; } protected File findModelsFolder() { URL url = getClass().getResource("/models"); if (url != null) { try { return new File(url.toURI()); } catch (Exception e) {} } String userDir = System.getProperty("user.dir"); File f = new File(userDir, "src/models"); if (f.exists()) return f; f = new File(userDir, "org.etsi.mts.tdl.tx.tests/src/models"); if (f.exists()) return f; return new File("plugins/org.etsi.mts.tdl.tx.tests/src/models"); } protected String loadModelContent(String resourcePath) throws Exception { try (InputStream is = getClass().getResourceAsStream(resourcePath)) { if (is == null) { File f = new File("src" + resourcePath); if (f.exists()) { //TODO: delimiters are platform specific? try (Scanner s = new Scanner(f).useDelimiter("\\A")) { return s.hasNext() ? s.next() : ""; } } throw new RuntimeException("Model not found: " + resourcePath); } try (Scanner s = new Scanner(is).useDelimiter("\\A")) { return s.hasNext() ? s.next() : ""; } } } protected void dumpStructure(EObject obj, StringBuilder sb, int indent) { for (int i = 0; i < indent; i++) sb.append(" "); sb.append(obj.eClass().getName()); EAttribute nameAttr = (EAttribute) obj.eClass().getEStructuralFeature("name"); if (nameAttr != null) { Object value = obj.eGet(nameAttr); if (value != null) sb.append(": ").append(value); } sb.append("\n"); for (EObject child : obj.eContents()) { dumpStructure(child, sb, indent + 1); } } public abstract void verifySingleModel(File file) throws Exception; }
plugins/org.etsi.mts.tdl.tx.tests/src/org/etsi/mts/tdl/tx/tests/TDLtxParsingTest.java +3 −96 Original line number Diff line number Diff line package org.etsi.mts.tdl.tx.tests; import java.io.File; import java.io.InputStream; import java.net.URL; import java.nio.file.Files; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Scanner; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.ocl.xtext.completeocl.CompleteOCLStandaloneSetup; import org.eclipse.xtext.testing.InjectWith; import org.eclipse.xtext.testing.extensions.InjectionExtension; import org.eclipse.xtext.testing.util.ParseHelper; import org.eclipse.xtext.testing.validation.ValidationTestHelper; import org.etsi.mts.tdl.Package; import org.etsi.mts.tdl.Validator; import org.etsi.mts.tdl.tdlPackage; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestFactory; import org.junit.jupiter.api.extension.ExtendWith; import com.google.inject.Inject; @ExtendWith(InjectionExtension.class) @InjectWith(TDLtxInjectorProvider.class) //Generated by Xtext //@InjectWith(TDLtxInjectorProviderGenerated.class) public class TDLtxParsingTest { static { org.etsi.mts.tdl.tdlPackage.eINSTANCE.getName(); org.etsi.mts.tdl.structuredobjectives.StructuredObjectivesPackage.eINSTANCE.getName(); org.etsi.mts.tdl.extendedconfigurations.ExtendedConfigurationsPackage.eINSTANCE.getName(); CompleteOCLStandaloneSetup.doSetup(); Validator.registerValidator("model/tdl-constraints.ocl", tdlPackage.eINSTANCE); } @Inject private ParseHelper<Package> parseHelper; @Inject private ValidationTestHelper validationHelper; @Inject private ResourceSet rs; private String loadModelContent(String resourcePath) throws Exception { try (InputStream is = getClass().getResourceAsStream(resourcePath)) { if (is == null) { File f = new File("src" + resourcePath); if (f.exists()) { //TODO: delimiters are platform specific? try (Scanner s = new Scanner(f).useDelimiter("\\A")) { return s.hasNext() ? s.next() : ""; } } throw new RuntimeException("Model not found: " + resourcePath); } try (Scanner s = new Scanner(is).useDelimiter("\\A")) { return s.hasNext() ? s.next() : ""; } } } private void dumpStructure(EObject obj, StringBuilder sb, int indent) { for (int i = 0; i < indent; i++) sb.append(" "); sb.append(obj.eClass().getName()); EAttribute nameAttr = (EAttribute) obj.eClass().getEStructuralFeature("name"); if (nameAttr != null) { Object value = obj.eGet(nameAttr); if (value != null) sb.append(": ").append(value); } sb.append("\n"); public class TDLtxParsingTest extends TDLtxAbstractTest { for (EObject child : obj.eContents()) { dumpStructure(child, sb, indent + 1); } } @TestFactory public Collection<DynamicTest> dynamicTestsFromFiles() throws Exception { List<DynamicTest> tests = new ArrayList<>(); File modelsFolder = findModelsFolder(); if (modelsFolder != null && modelsFolder.exists()) { File[] files = modelsFolder.listFiles((dir, name) -> name.endsWith(".tdltx")); if (files != null) { for (File file : files) { String fileName = file.getName(); tests.add(DynamicTest.dynamicTest("Verify: " + fileName, () -> verifySingleModel(file))); } } } return tests; return super.dynamicTestsFromFiles(); } private File findModelsFolder() { URL url = getClass().getResource("/models"); if (url != null) { try { return new File(url.toURI()); } catch (Exception e) {} } String userDir = System.getProperty("user.dir"); File f = new File(userDir, "src/models"); if (f.exists()) return f; f = new File(userDir, "org.etsi.mts.tdl.tx.tests/src/models"); if (f.exists()) return f; return new File("plugins/org.etsi.mts.tdl.tx.tests/src/models"); } @Test public void verifyLoadModelAttributes() throws Exception { Loading @@ -137,6 +43,7 @@ public class TDLtxParsingTest { } @Override public void verifySingleModel(File file) throws Exception { String fileName = file.getName(); System.out.println("Verifying: "+fileName); Loading
plugins/org.etsi.mts.tdl.tx.tests/src/org/etsi/mts/tdl/tx/tests/TDLtxSerialisationTest.java 0 → 100644 +86 −0 Original line number Diff line number Diff line package org.etsi.mts.tdl.tx.tests; import java.io.File; import java.io.OutputStream; import java.nio.file.Files; import java.util.Collection; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.util.EcoreUtil; import org.etsi.mts.tdl.Package; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestFactory; //Generated by Xtext //@InjectWith(TDLtxInjectorProviderGenerated.class) public class TDLtxSerialisationTest extends TDLtxAbstractTest { @TestFactory public Collection<DynamicTest> dynamicTestsFromFiles() throws Exception { return super.dynamicTestsFromFiles(); } @Test public void verifyLoadModelAttributes() throws Exception { Package result = parseHelper.parse(loadModelContent("/models/loadModel.tdltx")); Assertions.assertNotNull(result); Assertions.assertEquals("testP", result.getName()); } // @Test public void verifyAllModels() throws Exception { File modelsFolder = findModelsFolder(); if (modelsFolder != null && modelsFolder.exists()) { File[] files = modelsFolder.listFiles((dir, name) -> name.endsWith(".tdltx")); if (files != null) { for (File file : files) { verifySingleModel(file); } } } } @Override public void verifySingleModel(File file) throws Exception { String extension = "tdltx"; String fileName = file.getName(); if (fileName.endsWith(".tdltx."+extension)) { return; } System.out.println("Verifying: "+fileName); String content = loadModelContent("/models/" + fileName); URI uri = URI.createFileURI(file.getAbsolutePath()); // Package result = parseHelper.parse(content, uri, rs); Package result = parseHelper.parse(content); Assertions.assertNotNull(result, "Parser returned null for " + fileName); Assertions.assertTrue(result.eResource().getErrors().isEmpty(), "Syntax errors in " + fileName + ": " + result.eResource().getErrors()); //NOTE: this requires manual registration of validator when running in eclipse, completeOCL initialisation when running in maven validationHelper.assertNoErrors(result); URI targetURI = URI.createURI(uri.toString()+"."+extension); // XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class); // resourceSet = rs; Resource tr = rs.createResource(targetURI); tr.getContents().add(EcoreUtil.copy(result)); try { EcoreUtil.resolveAll(tr); tr.save(OutputStream.nullOutputStream(), null); } catch (Exception e1) { System.err.println(" Translation: "+e1.getMessage()); //e1.printStackTrace(); Assertions.fail(e1.getMessage(), e1); //TODO: provide an error dialog, fall back to XF, indicate approximate location based on error message / details } } }