diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/.classpath b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.classpath new file mode 100644 index 0000000000..f0d0c735ff --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/.project b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.project new file mode 100644 index 0000000000..5cc3244b6e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.project @@ -0,0 +1,28 @@ + + + cipm.consistency.fitests + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/.settings/org.eclipse.jdt.core.prefs b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..cd8d089a19 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,15 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +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=disabled +org.eclipse.jdt.core.compiler.source=11 diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/META-INF/MANIFEST.MF b/commit-based-cipm/fi-tests/cipm.consistency.fitests/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..2e60c40bf7 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/META-INF/MANIFEST.MF @@ -0,0 +1,21 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: cipm.consistency.fitests +Bundle-SymbolicName: cipm.consistency.fitests +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: cipm.consistency.fitests +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Require-Bundle: junit-jupiter-api, + junit-jupiter-engine, + junit-jupiter-params, + org.eclipse.emf.common, + org.eclipse.emf.ecore, + org.eclipse.emf.compare, + org.eclipse.emf.ecore.xmi, + org.splevo.jamopp.diffing, + org.apache.log4j, + org.emftext.language.java, + jamopp.parser.jdt.singlefile, + jamopp.parser, + cipm.consistency.commitintegration.diff.util, + cipm.consistency.initialisers diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/build.properties b/commit-based-cipm/fi-tests/cipm.consistency.fitests/build.properties new file mode 100644 index 0000000000..34d2e4d2da --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/AddExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/AddExtendsClass.java new file mode 100644 index 0000000000..07c5cdd012 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/AddExtendsClass.java @@ -0,0 +1,3 @@ +public class AddExtendsClass { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/ChangedExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/ChangedExtendsClass.java new file mode 100644 index 0000000000..76e978341f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/ChangedExtendsClass.java @@ -0,0 +1,3 @@ +public class ChangedExtendsClass extends Integer { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/DeleteExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/DeleteExtendsClass.java new file mode 100644 index 0000000000..2613e4a68e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/a/DeleteExtendsClass.java @@ -0,0 +1,3 @@ +public class DeleteExtendsClass extends Integer { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/AddExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/AddExtendsClass.java new file mode 100644 index 0000000000..1874bf8058 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/AddExtendsClass.java @@ -0,0 +1,3 @@ +public class AddExtendsClass extends String { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/ChangedExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/ChangedExtendsClass.java new file mode 100644 index 0000000000..b98f57d98a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/ChangedExtendsClass.java @@ -0,0 +1,3 @@ +public class ChangedExtendsClass extends String { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/DeleteExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/DeleteExtendsClass.java new file mode 100644 index 0000000000..c7be3efb37 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/classextends/b/DeleteExtendsClass.java @@ -0,0 +1,3 @@ +public class DeleteExtendsClass { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/AddExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/AddExtends.java new file mode 100644 index 0000000000..104ec5c69a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/AddExtends.java @@ -0,0 +1,3 @@ +public interface AddExtends { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/ChangedExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/ChangedExtends.java new file mode 100644 index 0000000000..13d85ad96c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/ChangedExtends.java @@ -0,0 +1,3 @@ +public interface ChangedExtends extends Cloneable { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/DeleteExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/DeleteExtends.java new file mode 100644 index 0000000000..17410f6353 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/a/DeleteExtends.java @@ -0,0 +1,3 @@ +public interface DeleteExtends extends Cloneable { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/AddExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/AddExtends.java new file mode 100644 index 0000000000..38382913b4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/AddExtends.java @@ -0,0 +1,3 @@ +public interface AddExtends extends Runnable { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/ChangedExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/ChangedExtends.java new file mode 100644 index 0000000000..5397108edb --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/ChangedExtends.java @@ -0,0 +1,3 @@ +public interface ChangedExtends extends Runnable { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/DeleteExtends.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/DeleteExtends.java new file mode 100644 index 0000000000..60a4ed8fea --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ExtendsChange/interfaceextends/b/DeleteExtends.java @@ -0,0 +1,3 @@ +public interface DeleteExtends { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/AddExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/AddExtendsClass.java new file mode 100644 index 0000000000..07c5cdd012 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/AddExtendsClass.java @@ -0,0 +1,3 @@ +public class AddExtendsClass { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/ChangedExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/ChangedExtendsClass.java new file mode 100644 index 0000000000..6a46d289da --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/ChangedExtendsClass.java @@ -0,0 +1,3 @@ +public class ChangedExtendsClass implements InterfaceB { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/DeleteExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/DeleteExtendsClass.java new file mode 100644 index 0000000000..84bd2beda1 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/DeleteExtendsClass.java @@ -0,0 +1,3 @@ +public class DeleteExtendsClass implements InterfaceB { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceA.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceA.java new file mode 100644 index 0000000000..1b719f4c24 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceA.java @@ -0,0 +1,3 @@ +public interface InterfaceA { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceB.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceB.java new file mode 100644 index 0000000000..aebd65024e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/a/InterfaceB.java @@ -0,0 +1,3 @@ +public interface InterfaceB { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/AddExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/AddExtendsClass.java new file mode 100644 index 0000000000..c70764165b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/AddExtendsClass.java @@ -0,0 +1,3 @@ +public class AddExtendsClass implements InterfaceA { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/ChangedExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/ChangedExtendsClass.java new file mode 100644 index 0000000000..9621ef269f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/ChangedExtendsClass.java @@ -0,0 +1,3 @@ +public class ChangedExtendsClass implements InterfaceA { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/DeleteExtendsClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/DeleteExtendsClass.java new file mode 100644 index 0000000000..c7be3efb37 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/DeleteExtendsClass.java @@ -0,0 +1,3 @@ +public class DeleteExtendsClass { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceA.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceA.java new file mode 100644 index 0000000000..1b719f4c24 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceA.java @@ -0,0 +1,3 @@ +public interface InterfaceA { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceB.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceB.java new file mode 100644 index 0000000000..aebd65024e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/ImplementsChange/classimplements/b/InterfaceB.java @@ -0,0 +1,3 @@ +public interface InterfaceB { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/a/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/a/MyClass.java new file mode 100644 index 0000000000..718a36cf53 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/a/MyClass.java @@ -0,0 +1,7 @@ +public class MyClass { + + private void someMethod() { + System.out.println(1); + System.out.println(2); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/b/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/b/MyClass.java new file mode 100644 index 0000000000..261cb7b633 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MatchWithDifferentNeighbors/b/MyClass.java @@ -0,0 +1,7 @@ +public class MyClass { + + private void someMethod() { + System.out.println(2); + System.out.println(1); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/a/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/a/MyClass.java new file mode 100644 index 0000000000..927ee607f2 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/a/MyClass.java @@ -0,0 +1,7 @@ +public class MyClass { + + public void doSth() { + int a = 0; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/b/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/b/MyClass.java new file mode 100644 index 0000000000..b84df8188f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/MethodsWithChangedBody/b/MyClass.java @@ -0,0 +1,7 @@ +public class MyClass { + + public void doSth() { + int a = 1; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/a/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/a/MyClass.java new file mode 100644 index 0000000000..9d34a4f0a7 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/a/MyClass.java @@ -0,0 +1,7 @@ +public class MyClass { + + public void doSth() { + System.out.println(1); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/b/MyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/b/MyClass.java new file mode 100644 index 0000000000..21162812ef --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/JaMoPPElementComparison/NotMatchingStatements/b/MyClass.java @@ -0,0 +1,9 @@ +public class MyClass { + + public void doSth() { + if(true) { + System.out.println(1); + } + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/a/ExternalTypeAccess.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/a/ExternalTypeAccess.java new file mode 100644 index 0000000000..c6d0d8ed19 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/a/ExternalTypeAccess.java @@ -0,0 +1,35 @@ +package org.splevo.jamopp.diffing.tests.access; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.xpath.XPath; + +public class ExternalTypeAccess { + + @SuppressWarnings("unused") + private XPath path; + + public void typeAsListType() { + List paths = new ArrayList(); + System.out.println(paths); + } + + public void typeAsArrayParameter(XPath[] extents){ + System.out.println(extents); + } + + /** + * An unresolveable reference in a java doc comment tag that is not changed. + * + * @see org.netbeans.lib.jmi.xmi.XmiContext#XmiContext(javax.xml.xpath.XPath[], org.netbeans.api.xmi.XMIInputConfig) + */ + public void typeInJavaDocTag(){ + } + + @SuppressWarnings("unused") + public void typeInMethod(){ + XPath path; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/b/ExternalTypeAccess.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/b/ExternalTypeAccess.java new file mode 100644 index 0000000000..d328f0dc8d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/access/b/ExternalTypeAccess.java @@ -0,0 +1,35 @@ +package org.splevo.jamopp.diffing.tests.access; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.xpath.XPath; + +public class ExternalTypeAccess { + + @SuppressWarnings("unused") + private XPath path; + + public void typeAsListType() { + List paths = new ArrayList(); + System.out.println(paths); + } + + public void typeAsArrayParameter(XPath[] extents){ + System.out.println(extents); + } + + /** + * An unresolveable reference in a java doc comment tag that is not changed. + * + * @see org.netbeans.lib.jmi.xmi.XmiContext#XmiContext(javax.xml.xpath.XPath[], org.netbeans.api.xmi.XMIInputConfig) + */ + public void typeInJavaDocTag(){ + } + + @SuppressWarnings("unused") + public void typeInMethod(){ + XPath path; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/lib/jscience.jar b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/lib/jscience.jar new file mode 100644 index 0000000000..4712f3a9df Binary files /dev/null and b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/lib/jscience.jar differ diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorGCD.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorGCD.java new file mode 100644 index 0000000000..090a39047e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorGCD.java @@ -0,0 +1,26 @@ +package org.splevo.examples.calculator; + +import org.jscience.mathematics.number.LargeInteger; + +/** + * The calculator to perform numeric calculations. + * This makes use of the LargeInteger class of the + * JScience mathematics library (www.jscience.org) + */ +public class CalculatorGCD { + + /** + * Calculate the greatest common denominator (divider) (GCD) of an integer + * @param value1 The first number to get the gcd. + * @param value2 The second number to get the gcd. + * @return + */ + public String gcd(String value1, String value2){ + + LargeInteger integerValue1 = LargeInteger.valueOf(value1); + LargeInteger integerValue2 = LargeInteger.valueOf(value2); + LargeInteger gcd = integerValue1.gcd(integerValue2); + + return gcd.toString(); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorSqrt.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorSqrt.java new file mode 100644 index 0000000000..5263fbd725 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorSqrt.java @@ -0,0 +1,26 @@ +package org.splevo.examples.calculator; + +import org.jscience.mathematics.number.FloatingPoint; + +/** + * Calculator to get the positive square root of + * a floating point number. + * This makes use of the FloatingPoint class of the + * JScience mathematics library (www.jscience.org) + */ +public class CalculatorSqrt { + + /** + * Calculate the square root (sqrt) of a floating point number. + * @param value1 The number to get the square root for. + * @return The calculated square root. + */ + public String sqrt(String value1){ + + FloatingPoint floatingPointValue = FloatingPoint.valueOf(value1); + FloatingPoint sqrt = floatingPointValue.sqrt(); + + return sqrt.toString(); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorTool.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorTool.java new file mode 100644 index 0000000000..1dd4590769 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/a/src/org/splevo/examples/calculator/CalculatorTool.java @@ -0,0 +1,33 @@ +package org.splevo.examples.calculator; + +/** + * The command line tool to run the calculator. + */ +public class CalculatorTool { + + /** + * Executing the calculator tool. + * + * @param args The command line args provided to the tooling. + */ + public static void main(String[] args) { + + if(args.length > 0 && args[0] == "sqrt"){ + String value = "13.25"; + + CalculatorSqrt calculator = new CalculatorSqrt(); + String sqrt = calculator.sqrt(value); + + System.out.println(sqrt); + + } else { + String value1 = "9876543210987654321098765432109876543210"; + String value2 = "1234567891234567891234567891234567891234"; + + CalculatorGCD calculator = new CalculatorGCD(); + String gcd = calculator.gcd(value1, value2); + + System.out.println(gcd); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorGCD.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorGCD.java new file mode 100644 index 0000000000..89d26f042a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorGCD.java @@ -0,0 +1,24 @@ +package org.splevo.examples.calculator; + +import java.math.BigInteger; + +/** + * The calculator to perform numeric calculations. + */ +public class CalculatorGCD { + + /** + * Calculate the greatest common denominator (divider) (GCD) of an integer + * @param value1 The first number to get the gcd. + * @param value2 The second number to get the gcd. + * @return + */ + public String gcd(String value1, String value2){ + + BigInteger integerValue1 = new BigInteger(value1); + BigInteger integerValue2 = new BigInteger(value2); + BigInteger gcd = integerValue1.gcd(integerValue2); + + return gcd.toString(); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorSqrt.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorSqrt.java new file mode 100644 index 0000000000..d17351bb69 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorSqrt.java @@ -0,0 +1,25 @@ +package org.splevo.examples.calculator; + + +/** + * Calculator to get the positive square root of + * a floating point number. + * This makes use of the FloatingPoint class of the + * JScience mathematics library (www.jscience.org) + */ +public class CalculatorSqrt { + + /** + * Calculate the square root (sqrt) of a floating point number. + * @param value1 The number to get the square root for. + * @return The calculated square root. + */ + public String sqrt(String value1){ + + Double floatingPointValue = Double.valueOf(value1); + Double sqrt = Math.sqrt(floatingPointValue); + + return sqrt.toString(); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorTool.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorTool.java new file mode 100644 index 0000000000..1dd4590769 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/calculator/b/src/org/splevo/examples/calculator/CalculatorTool.java @@ -0,0 +1,33 @@ +package org.splevo.examples.calculator; + +/** + * The command line tool to run the calculator. + */ +public class CalculatorTool { + + /** + * Executing the calculator tool. + * + * @param args The command line args provided to the tooling. + */ + public static void main(String[] args) { + + if(args.length > 0 && args[0] == "sqrt"){ + String value = "13.25"; + + CalculatorSqrt calculator = new CalculatorSqrt(); + String sqrt = calculator.sqrt(value); + + System.out.println(sqrt); + + } else { + String value1 = "9876543210987654321098765432109876543210"; + String value2 = "1234567891234567891234567891234567891234"; + + CalculatorGCD calculator = new CalculatorGCD(); + String gcd = calculator.gcd(value1, value2); + + System.out.println(gcd); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/EnumClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/EnumClass.java new file mode 100644 index 0000000000..a86502c7b6 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/EnumClass.java @@ -0,0 +1,10 @@ +package org.splevo.tests.fielddeclaration; + +public class EnumClass { + + public enum EnumChange { + A, + B + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/package-info.java new file mode 100644 index 0000000000..8f2747cde6 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/a/src/org/splevo/tests/fielddeclaration/package-info.java @@ -0,0 +1,4 @@ +/** + * Class declaration diffing test code. + */ +package org.splevo.tests.fielddeclaration; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/AddedClassDeclaration.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/AddedClassDeclaration.java new file mode 100644 index 0000000000..68056c9e40 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/AddedClassDeclaration.java @@ -0,0 +1,8 @@ +package org.splevo.tests.fielddeclaration; + +public class AddedClassDeclaration { + + public void doSth(){ + + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/EnumClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/EnumClass.java new file mode 100644 index 0000000000..823f32646a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/EnumClass.java @@ -0,0 +1,11 @@ +package org.splevo.tests.fielddeclaration; + +public class EnumClass { + + public enum EnumChange { + A, + NEW, + B + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/NewPackageClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/NewPackageClass.java new file mode 100644 index 0000000000..a08c381306 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/NewPackageClass.java @@ -0,0 +1,5 @@ +package org.splevo.tests.fielddeclaration.newpackage; + +public class NewPackageClass { + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/package-info.java new file mode 100644 index 0000000000..d768683954 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/package-info.java @@ -0,0 +1,4 @@ +/** + * An added package. + */ +package org.splevo.tests.fielddeclaration.newpackage; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/NewSubPackageClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/NewSubPackageClass.java new file mode 100644 index 0000000000..fd38724614 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/NewSubPackageClass.java @@ -0,0 +1,5 @@ +package org.splevo.tests.fielddeclaration.newpackage.sub; + +public class NewSubPackageClass { + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/package-info.java new file mode 100644 index 0000000000..d47e026405 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/newpackage/sub/package-info.java @@ -0,0 +1,4 @@ +/** + * An added sub package. + */ +package org.splevo.tests.fielddeclaration.newpackage.sub; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/package-info.java new file mode 100644 index 0000000000..8f2747cde6 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/classdeclaration/b/src/org/splevo/tests/fielddeclaration/package-info.java @@ -0,0 +1,4 @@ +/** + * Class declaration diffing test code. + */ +package org.splevo.tests.fielddeclaration; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/a/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..f03e0fa57b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/a/de/splevo/test/BaseClass.java @@ -0,0 +1,5 @@ +package de.splevo.test; + +public class BaseClass { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..f03e0fa57b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClass.java @@ -0,0 +1,5 @@ +package de.splevo.test; + +public class BaseClass { + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClassCustom.java new file mode 100644 index 0000000000..68456e0445 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopy/b/de/splevo/test/BaseClassCustom.java @@ -0,0 +1,4 @@ +package de.splevo.test; + +public class BaseClassCustom extends BaseClass { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/a/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..b69c4d358f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/a/de/splevo/test/BaseClass.java @@ -0,0 +1,8 @@ +package de.splevo.test; + +public class BaseClass { + + public BaseClass() { + return; + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..b69c4d358f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClass.java @@ -0,0 +1,8 @@ +package de.splevo.test; + +public class BaseClass { + + public BaseClass() { + return; + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClassCustom.java new file mode 100644 index 0000000000..68456e0445 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyconstructor/b/de/splevo/test/BaseClassCustom.java @@ -0,0 +1,4 @@ +package de.splevo.test; + +public class BaseClassCustom extends BaseClass { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/a/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..054224d33b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/a/de/splevo/test/BaseClass.java @@ -0,0 +1,12 @@ +package de.splevo.test; + +public class BaseClass { + + public int field; + + private int oldField; + + public void doSth(){} + + public void hookMethod(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..054224d33b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClass.java @@ -0,0 +1,12 @@ +package de.splevo.test; + +public class BaseClass { + + public int field; + + private int oldField; + + public void doSth(){} + + public void hookMethod(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClassCustom.java new file mode 100644 index 0000000000..1357771355 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyfield/b/de/splevo/test/BaseClassCustom.java @@ -0,0 +1,8 @@ +package de.splevo.test; + +public class BaseClassCustom extends BaseClass { + + public int newField; + + public void hookMethod(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/a/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..e7f5a2af71 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/a/de/splevo/test/BaseClass.java @@ -0,0 +1,7 @@ +package de.splevo.test; + +import java.lang.Math; +import java.util.List; + +public class BaseClass { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..e7f5a2af71 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClass.java @@ -0,0 +1,7 @@ +package de.splevo.test; + +import java.lang.Math; +import java.util.List; + +public class BaseClass { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClassCustom.java new file mode 100644 index 0000000000..68456e0445 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopyimport/b/de/splevo/test/BaseClassCustom.java @@ -0,0 +1,4 @@ +package de.splevo.test; + +public class BaseClassCustom extends BaseClass { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/a/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/a/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..cb05bfc24c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/a/de/splevo/test/BaseClass.java @@ -0,0 +1,10 @@ +package de.splevo.test; + +public class BaseClass { + + public void doPublic(){} + + private void doPrivate(){} + + public void hookMethod(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClass.java new file mode 100644 index 0000000000..cb05bfc24c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClass.java @@ -0,0 +1,10 @@ +package de.splevo.test; + +public class BaseClass { + + public void doPublic(){} + + private void doPrivate(){} + + public void hookMethod(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClassCustom.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClassCustom.java new file mode 100644 index 0000000000..02fd69c4b3 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/derivedcopymethod/b/de/splevo/test/BaseClassCustom.java @@ -0,0 +1,8 @@ +package de.splevo.test; + +public class BaseClassCustom extends BaseClass { + + public void hookMethod(){ + System.out.println("Hello World"); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/ArrayFieldDeclarationChange.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/ArrayFieldDeclarationChange.java new file mode 100644 index 0000000000..180121b1b5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/ArrayFieldDeclarationChange.java @@ -0,0 +1,10 @@ +package org.splevo.tests.fielddeclaration; + +public class ArrayFieldDeclarationChange { + + public Object[] newValueArray = new Object[]{ + "value1", + "value2" + }; + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/NewInTheMiddle.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/NewInTheMiddle.java new file mode 100644 index 0000000000..4ac5adbffd --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/NewInTheMiddle.java @@ -0,0 +1,13 @@ +package org.splevo.tests.fielddeclaration; + +/** + * Class with new field declaration surrounded by two unchanged ones. + */ +public class NewInTheMiddle { + + /** Field not to change. */ + private String similar1 = "similar1"; + + /** Field not to change. */ + private String similar2 = "similar2"; +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/RemovedFromTheMiddle.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/RemovedFromTheMiddle.java new file mode 100644 index 0000000000..13fe986bc5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/a/RemovedFromTheMiddle.java @@ -0,0 +1,16 @@ +package org.splevo.tests.fielddeclaration; + +/** + * Class with new field declaration surrounded by two unchanged ones. + */ +public class RemovedFromTheMiddle { + + /** Field not to change. */ + private String similar1 = "similar1"; + + /** Remove Field. */ + private String removeField = "removeField"; + + /** Field not to change. */ + private String similar2 = "similar2"; +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/ArrayFieldDeclarationChange.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/ArrayFieldDeclarationChange.java new file mode 100644 index 0000000000..260453996a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/ArrayFieldDeclarationChange.java @@ -0,0 +1,11 @@ +package org.splevo.tests.fielddeclaration; + +public class ArrayFieldDeclarationChange { + + public Object[] newValueArray = new Object[]{ + "value1", + "valueInTheMiddle", + "value2" + }; + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/NewInTheMiddle.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/NewInTheMiddle.java new file mode 100644 index 0000000000..87fa764f56 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/NewInTheMiddle.java @@ -0,0 +1,16 @@ +package org.splevo.tests.fielddeclaration; + +/** + * Class with new field declaration surrounded by two unchanged ones. + */ +public class NewInTheMiddle { + + /** Field not to change. */ + private String similar1 = "similar1"; + + /** New Field. */ + private String newField = "newField"; + + /** Field not to change. */ + private String similar2 = "similar2"; +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/RemovedFromTheMiddle.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/RemovedFromTheMiddle.java new file mode 100644 index 0000000000..72e437a2c5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/fielddeclaration/b/RemovedFromTheMiddle.java @@ -0,0 +1,13 @@ +package org.splevo.tests.fielddeclaration; + +/** + * Class with new field declaration surrounded by two unchanged ones. + */ +public class RemovedFromTheMiddle { + + /** Field not to change. */ + private String similar1 = "similar1"; + + /** Field not to change. */ + private String similar2 = "similar2"; +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/a/ImportDiffing.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/a/ImportDiffing.java new file mode 100644 index 0000000000..38cb4bfd2e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/a/ImportDiffing.java @@ -0,0 +1,10 @@ +package org.splevo.tests.importdeclaration; + +import java.math.BigInteger; + +public class ImportDiffing { + + public void helloWorld(){ + + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/b/ImportDiffing.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/b/ImportDiffing.java new file mode 100644 index 0000000000..677c700523 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/import/b/ImportDiffing.java @@ -0,0 +1,10 @@ +package org.splevo.tests.importdeclaration; + +import java.math.BigDecimal; + +public class ImportDiffing { + + public void helloWorld(){ + + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitClassDiagram.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitClassDiagram.java new file mode 100644 index 0000000000..0d41902a1b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitClassDiagram.java @@ -0,0 +1,4 @@ +package org.splevo.test; + +public class InitClassDiagram { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUmlUI.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUmlUI.java new file mode 100644 index 0000000000..dda43b6e56 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUmlUI.java @@ -0,0 +1,4 @@ +package org.splevo.test; + +public class InitUmlUI { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUseCaseDiagram.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUseCaseDiagram.java new file mode 100644 index 0000000000..52b488c543 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/InitUseCaseDiagram.java @@ -0,0 +1,4 @@ +package org.splevo.test; + +public class InitUseCaseDiagram { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/SubsystemUtility.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/SubsystemUtility.java new file mode 100644 index 0000000000..acf804dd74 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/SubsystemUtility.java @@ -0,0 +1,5 @@ +package org.splevo.test; + +public class SubsystemUtility { + public static void initSubsystem(Object targetObject){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/TestClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/TestClass.java new file mode 100644 index 0000000000..b7f0f8271f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/a/org/splevo/test/TestClass.java @@ -0,0 +1,11 @@ +package org.splevo.test; + +public class TestClass { + private static void initializeSubsystems() { + + SubsystemUtility.initSubsystem(new InitClassDiagram()); + + SubsystemUtility.initSubsystem(new InitUmlUI()); + + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitClassDiagram.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitClassDiagram.java new file mode 100644 index 0000000000..0d41902a1b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitClassDiagram.java @@ -0,0 +1,4 @@ +package org.splevo.test; + +public class InitClassDiagram { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUmlUI.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUmlUI.java new file mode 100644 index 0000000000..dda43b6e56 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUmlUI.java @@ -0,0 +1,4 @@ +package org.splevo.test; + +public class InitUmlUI { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUseCaseDiagram.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUseCaseDiagram.java new file mode 100644 index 0000000000..52b488c543 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/InitUseCaseDiagram.java @@ -0,0 +1,4 @@ +package org.splevo.test; + +public class InitUseCaseDiagram { +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/SubsystemUtility.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/SubsystemUtility.java new file mode 100644 index 0000000000..acf804dd74 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/SubsystemUtility.java @@ -0,0 +1,5 @@ +package org.splevo.test; + +public class SubsystemUtility { + public static void initSubsystem(Object targetObject){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/TestClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/TestClass.java new file mode 100644 index 0000000000..7900416ca6 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methodcalls/b/org/splevo/test/TestClass.java @@ -0,0 +1,14 @@ +package org.splevo.test; + +public class TestClass { + private static void initializeSubsystems() { + + SubsystemUtility.initSubsystem(new InitClassDiagram()); + + //@#$LPS-USECASEDIAGRAM:GranularityType:Statement + SubsystemUtility.initSubsystem(new InitUseCaseDiagram()); + + SubsystemUtility.initSubsystem(new InitUmlUI()); + + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/ClassA.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/ClassA.java new file mode 100644 index 0000000000..12ed02ab53 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/ClassA.java @@ -0,0 +1,24 @@ +package org.splevo.tests.methoddeclaration; + + +public class ClassA { + + + /** + * Method to check the matching of an invocation of + * an anonymous' class method. + */ + public void anonymousClassMethodInvocation(){ + + Comparable comp = new Comparable() { + @Override + public int compareTo(String arg0) { + return 0; + } + }; + + comp.compareTo("Hello"); + + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/Constructor.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/Constructor.java new file mode 100644 index 0000000000..3f88e2622a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/a/Constructor.java @@ -0,0 +1,10 @@ +package org.splevo.tests.methoddeclaration; + + +public class Constructor { + + public Constructor(){ + + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/ClassA.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/ClassA.java new file mode 100644 index 0000000000..f704ea3de6 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/ClassA.java @@ -0,0 +1,26 @@ +package org.splevo.tests.methoddeclaration; + +public class ClassA { + + public void newMethod(){ + System.out.println("a"); + } + + /** + * Method to check the matching of an invocation of + * an anonymous' class method. + */ + public void anonymousClassMethodInvocation(){ + + Comparable comp = new Comparable() { + @Override + public int compareTo(String arg0) { + return 0; + } + }; + + comp.compareTo("Hello"); + + } + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/Constructor.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/Constructor.java new file mode 100644 index 0000000000..0a5b27e597 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/methoddeclaration/b/Constructor.java @@ -0,0 +1,10 @@ +package org.splevo.tests.methoddeclaration; + + +public class Constructor { + + public Constructor(String newParam){ + + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/a/Primitives.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/a/Primitives.java new file mode 100644 index 0000000000..edfd5fcd8c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/a/Primitives.java @@ -0,0 +1,12 @@ +package org.splevo.tests.importdeclaration; + +public class Primitives { + + public void doVoid() { + int a = 1; + } + + public int doNumeric() { + return 1; + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/b/Primitives.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/b/Primitives.java new file mode 100644 index 0000000000..02c8e01e96 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/primitives/b/Primitives.java @@ -0,0 +1,12 @@ +package org.splevo.tests.importdeclaration; + +public class Primitives { + + public void doVoid() { + double a = 1; + } + + public double doNumeric() { + return 1; + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/DummyClass.java new file mode 100644 index 0000000000..42502b938b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/DummyClass.java @@ -0,0 +1,3 @@ +public DummyClass { + public void doSth(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/Test.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/Test.java new file mode 100644 index 0000000000..8a1d741683 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/a/de/splevo/test/Test.java @@ -0,0 +1,11 @@ +package de.splevo.test; + +/** + * Testcode to test mapping configurations. + */ +public class Test { + + public void doSth(){ + + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/DummyClass.java new file mode 100644 index 0000000000..42502b938b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/DummyClass.java @@ -0,0 +1,3 @@ +public DummyClass { + public void doSth(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/TestCust.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/TestCust.java new file mode 100644 index 0000000000..11c7e8359c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/renaming/b/de/splevo/cust/test/TestCust.java @@ -0,0 +1,11 @@ +package de.splevo.cust.test; + +/** + * Testcode to test mapping configurations. + */ +public class Test { + + public void doSth(){ + + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/DummyClass.java new file mode 100644 index 0000000000..d45c39ba5f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/DummyClass.java @@ -0,0 +1,5 @@ +package org.splevo.test; + +public DummyClass { + public void doSth(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/sub/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/sub/DummyClass.java new file mode 100644 index 0000000000..3c003474b4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/a/org/splevo/test/sub/DummyClass.java @@ -0,0 +1,5 @@ +package org.splevo.test.sub; + +public DummyClass { + public void doSth(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/DummyClass.java new file mode 100644 index 0000000000..d45c39ba5f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/DummyClass.java @@ -0,0 +1,5 @@ +package org.splevo.test; + +public DummyClass { + public void doSth(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/sub/DummyClass.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/sub/DummyClass.java new file mode 100644 index 0000000000..3c003474b4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/similarclasses-differentpackages/b/org/splevo/test/sub/DummyClass.java @@ -0,0 +1,5 @@ +package org.splevo.test.sub; + +public DummyClass { + public void doSth(){} +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayAccesses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayAccesses.java new file mode 100644 index 0000000000..ae0c1ae46b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayAccesses.java @@ -0,0 +1,19 @@ +package org.splevo.tests.statements; + +public class ArrayAccesses { + + public static void main(String[] args) { + + @SuppressWarnings("unused") + String projectName; + for(int i = 0; i < args.length; i++){ + if (args[i].equalsIgnoreCase("-print") + && i + 1 < args.length) { + projectName = args[++i]; + } + } + + Object[] elements = new Object[args.length][2]; + + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccess.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccess.java new file mode 100644 index 0000000000..78ceb822e6 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccess.java @@ -0,0 +1,13 @@ +package org.splevo.tests.statements; + +public class ClassArrayItemAccess { + + public void newStatement(){ + + String[] = new String[4]; + + String[0] = new String("0"); + String[1] = new String("1"); + String[2] = new String("2"); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccessWithSameContainerIdentifier.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccessWithSameContainerIdentifier.java new file mode 100644 index 0000000000..74170de443 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ArrayItemAccessWithSameContainerIdentifier.java @@ -0,0 +1,11 @@ +package a; + +public class Loop { + + public void print() { + Object[] cache; + for (int i = 0; cache[i] != null; i++) { + } + } + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ChangeInsideSiblingBlock.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ChangeInsideSiblingBlock.java new file mode 100644 index 0000000000..fcd23e703e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ChangeInsideSiblingBlock.java @@ -0,0 +1,20 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class ChangeInsideSiblingBlock { + + protected void doSth() { + + if(true) { + 1 + 1; + + if(true) { + 3 + 3; + } + } + + } + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ClassStatementInsert.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ClassStatementInsert.java new file mode 100644 index 0000000000..0979786e4a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ClassStatementInsert.java @@ -0,0 +1,29 @@ +package org.splevo.tests.statements; + +public class ClassStatementInsert { + + public void newStatement(){ + + System.out.println(new Integer(0)); + + + + System.out.println(new Double(0)); + + Boolean f = null; + f = super.equals(new Object()); + + int i = 0; + int j = Integer.valueOf("0") + (i++); + } + + public void statementOrder(){ + + int x, y; + + x = 3; + x = 5; + y = 10; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchAndExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchAndExpression.java new file mode 100644 index 0000000000..ad3e7ccf84 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchAndExpression.java @@ -0,0 +1,18 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class ConditionMatchAndExpression { + + public String doSth(String[] a) { + + if (a.length() > 0 && true) { + return "existing conditional"; + } + + for (int i = 0; i < 10 && i >= 0; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchInstanceOfExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchInstanceOfExpression.java new file mode 100644 index 0000000000..31eba93ed2 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchInstanceOfExpression.java @@ -0,0 +1,15 @@ +package org.splevo.tests.statements; + +public class ConditionMatchInstanceOfExpression { + + public String doSth(Object a) { + + if(a instanceof Integer) { + return "existing instanceof"; + } + + for (int i = 0; i < 10 && i >= 0; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchOrExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchOrExpression.java new file mode 100644 index 0000000000..d95c52bb4a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchOrExpression.java @@ -0,0 +1,18 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class ConditionMatchOrExpression { + + public String doSth(String[] a) { + + if (a.length() > 0 || true) { + return "existing conditional"; + } + + for (int i = 0; i < 10 && i >= 0; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchRelationExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchRelationExpression.java new file mode 100644 index 0000000000..e4a95861f9 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchRelationExpression.java @@ -0,0 +1,18 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class ConditionMatchRelationExpression { + + public String doSth(String[] a) { + + if (a.length() > 0) { + return "existing conditional"; + } + + for (int i = 0; i < 10; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchUnaryExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchUnaryExpression.java new file mode 100644 index 0000000000..6b8271a9d0 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ConditionMatchUnaryExpression.java @@ -0,0 +1,18 @@ +package org.splevo.tests.statements; + +import java.util.List; + +public class ConditionMatchUnaryExpression { + + public String doSth(List a) { + + if(!(String.CASE_INSENSITIVE_ORDER.equals(a.iterator().next()) + && a.size() == ("test".length() + 1))) { + return "existing conditional"; + } + + for (int i = 0; i < 10 && i >= 0; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/EnumAccesses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/EnumAccesses.java new file mode 100644 index 0000000000..ab3b92c2dc --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/EnumAccesses.java @@ -0,0 +1,16 @@ +package org.splevo.tests.statements; + +public class EnumAccesses { + + public void doSth() { + Container.TestEnum var = Container.TestEnum.EnumItem1; + } +} + +class Container { + + public enum TestEnum { + EnumItem1, + EnumItem2 + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ForLoopWithIterator.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ForLoopWithIterator.java new file mode 100644 index 0000000000..afee1595fc --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ForLoopWithIterator.java @@ -0,0 +1,12 @@ +package org.splevo.tests.statements; + +public class ConditionalVariable { + + protected void doSth(Collection c) { + for (Iterator i = c.iterator(); i.hasNext(); ) { + Object o = i.next(); + System.out.println(o); + } + } + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseMultipleStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseMultipleStatements.java new file mode 100644 index 0000000000..507fda681e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseMultipleStatements.java @@ -0,0 +1,19 @@ +package org.splevo.tests.statements; + +public class IfElseMultipleStatements { + + public int elseIf(int a) { + if (a == 0) { + return 0 + 0; + + } else if (a == 1) { + return 1 + 1; + + } else if (a == 2) { + return 2 + 2; + + } else if (a == 3) { + return 3 + 3; + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseStatements.java new file mode 100644 index 0000000000..c443851838 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfElseStatements.java @@ -0,0 +1,13 @@ +package org.splevo.tests.statements; + +public class IfElseStatements { + + public void elseIf(int a) { + if (a == 1) { + 1 + 1; + + } else if (a == 2) { + 2 + 2; + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfIfStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfIfStatements.java new file mode 100644 index 0000000000..b44eb2d39b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfIfStatements.java @@ -0,0 +1,10 @@ +package org.splevo.tests.statements; + +public class IfIfStatements { + + public void ifIf() { + if (toString().equals("a")) { + 2 + 2; + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfStatements.java new file mode 100644 index 0000000000..01931188db --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/IfStatements.java @@ -0,0 +1,66 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class IfStatements { + + public void newIfStatementTest(String a) { + + if (a.length() > 1) { + System.out.println(); + } + } + + public void changedConditionIfStatementTest(String a) { + + if ("value1" == null) { + return; + } + + if ("valueA" == null) { + return; + } + } + + public void unChangedConditionIfStatementTest(String a) { + + if (true && (toString() instanceof Object)) { + return; + } + + for (int i = 0; i < a.toCharArray().length; i++) { + System.out.println(i); + } + + boolean result = true; + if (!result) { + System.out.println(result); + } + + int pos = 1; + if (pos == -1) { + return; + } + + if (new Object() == this) { + return; + } + + if (new Object() == String.class) { + + } + + LinkedList umlPredecessors = new LinkedList(); + Iterator it; + it = (umlPredecessors != null) ? umlPredecessors.iterator() : null; + } + + public void elseIf(int a) { + if (a == 1) { + System.out.println("1"); + } else if (a == 2) { + System.out.println("2"); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/LoopStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/LoopStatements.java new file mode 100644 index 0000000000..1f78fab814 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/LoopStatements.java @@ -0,0 +1,55 @@ +package org.splevo.tests.statements; + +import java.util.ArrayList; + +public class LoopStatements { + + public LoopStatements() { + } + + public void ForUnchanged(){ + + for (int i = 0; i < 10; i++) { + System.out.println(""+i); + } + } + + public void ForChanged(){ + + for (int i = 0; i < 10; i++) { + System.out.println(""+i); + } + } + + public void EnhancedForUnchanged(){ + + ArrayList items = new ArrayList(); + for (String item : items) { + System.out.println(item); + } + } + + public void EnhancedForChanged(){ + + ArrayList items = new ArrayList(); + ArrayList items2 = new ArrayList(); + for (String item : items) { + System.out.println(item); + } + } + + public void WhileUnchanged(int a){ + + while(a < 10){ + System.out.println("endlessLoop"); + } + } + + public void WhileChanged(int a){ + + while(a < 10){ + System.out.println("endlessLoop"); + } + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ReturnStatementChanges.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ReturnStatementChanges.java new file mode 100644 index 0000000000..59645626f5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ReturnStatementChanges.java @@ -0,0 +1,22 @@ +package org.splevo.tests.statements; + +public class ReturnStatementChanges { + + public void doSth(String a){ + + return; + } + + public void noReturn(){ + + } + + public String returnWithExpression(){ + return "Hello"; + } + + public String returnWithExpressionEqual(){ + return "Good Morning"; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/StaticInitialization.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/StaticInitialization.java new file mode 100644 index 0000000000..187cfc6f7e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/StaticInitialization.java @@ -0,0 +1,16 @@ +package org.splevo.tests.statements; + +public class StaticInitialization { + + public static final String ID1 = "ID1"; + + static{ + + putDefaultShortcut(ID1, null, new String()); + + } + + private static void putDefaultShortcut(String id, Object defaultValue, Object action){ + + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/Synchronized.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/Synchronized.java new file mode 100644 index 0000000000..2d5872b1eb --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/Synchronized.java @@ -0,0 +1,14 @@ +package org.splevo.tests.statements; + +public class Synchronized { + + private Object synchronizationObject = new Byte[0]; + + public void synchronizeOnField() { + + + synchronized (synchronizationObject) { + return "synchronizeOnField"; + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ThrowStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ThrowStatements.java new file mode 100644 index 0000000000..f442487481 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/ThrowStatements.java @@ -0,0 +1,28 @@ +package org.splevo.tests.statements; + +/** + * Class with methods containing different throw variations. + */ +public class ThrowStatements { + + public static void similarThrow(){ + throw new IllegalArgumentException(); + } + + public static void similarThrowWithParameter(){ + throw new IllegalArgumentException("Error"); + } + + public static void changedThrow(){ + throw new IllegalArgumentException(); + } + + public static void changedThrowWithParameter(){ + throw new IllegalArgumentException("Error"); + } + + public static void throwWithChangedParameter(){ + throw new IllegalArgumentException("Error"); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/TryCatch.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/TryCatch.java new file mode 100644 index 0000000000..79796dfb58 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/TryCatch.java @@ -0,0 +1,23 @@ +package org.splevo.tests.statements; + +public class TryCatch { + + public String similarTryCatch(){ + try{ + return "hello"; + } catch (RuntimeException e){ + return "e"; + } catch (Exception iea){ + return "iea"; + } + } + + public String changedTryCatch(){ + try{ + return "hello"; + } catch (Exception iea){ + return "iea"; + } + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/VariableDeclarationStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/VariableDeclarationStatements.java new file mode 100644 index 0000000000..9a531bc59b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/a/VariableDeclarationStatements.java @@ -0,0 +1,9 @@ +package org.splevo.tests.statements; + +public class VariableDeclarationStatements { + + public void doSth(){ + String var1, var2 = "Hello"; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayAccesses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayAccesses.java new file mode 100644 index 0000000000..46d4c2b1bf --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayAccesses.java @@ -0,0 +1,20 @@ +package org.splevo.tests.statements; + +public class ArrayAccesses { + + public static void main(String[] args) { + + @SuppressWarnings("unused") + String projectName; + for(int i = 0; i < args.length; i++){ + if (args[i].equalsIgnoreCase("-print") + && i + 1 < args.length) { + projectName = args[++i]; + } + } + + Object[] elements = new Object[args.length][2]; + + + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccess.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccess.java new file mode 100644 index 0000000000..9008e333dd --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccess.java @@ -0,0 +1,14 @@ +package org.splevo.tests.statements; + +public class ClassArrayItemAccess { + + public void newStatement(){ + + String[] = new String[4]; + + String[0] = new String("0"); + String[1] = new String("1"); + String[3] = new String("3"); + String[2] = new String("2"); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccessWithSameContainerIdentifier.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccessWithSameContainerIdentifier.java new file mode 100644 index 0000000000..7a3c91d18f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ArrayItemAccessWithSameContainerIdentifier.java @@ -0,0 +1,11 @@ +package a; + +public class Loop { + + public void print() { + Object[] cache; + for (int i = 0; cache[i] != null; i++) { + } + } + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ChangeInsideSiblingBlock.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ChangeInsideSiblingBlock.java new file mode 100644 index 0000000000..6f3eab0d12 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ChangeInsideSiblingBlock.java @@ -0,0 +1,22 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class ChangeInsideSiblingBlock { + + protected void doSth() { + + if(true) { + 1 + 1; + 2 + 2; // added + + if(true) { + 3 + 3; + 4 + 4; // added + } + } + + } + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ClassStatementInsert.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ClassStatementInsert.java new file mode 100644 index 0000000000..e69edf7fb4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ClassStatementInsert.java @@ -0,0 +1,29 @@ +package org.splevo.tests.statements; + +public class ClassStatementInsert { + + public void newStatement(){ + + System.out.println(new Integer(0)); + + System.out.println(new String()); + + System.out.println(new Double(0)); + + Boolean f = null; + f = super.equals(new Object()); + + int i = 0; + int j = Integer.valueOf("0") + (i++); + } + + public void statementOrder(){ + + int x, y; + + y = 10; + x = 5; + x = 3; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchAndExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchAndExpression.java new file mode 100644 index 0000000000..173ecbccfd --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchAndExpression.java @@ -0,0 +1,22 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class ConditionMatchAndExpression { + + public String doSth(String[] a) { + + if(true && a.length() > 0) { + return "new conditional"; + } + + if (a.length() > 0 && true) { + return "existing conditional"; + } + + for (int i = 0; i < 10 && i >= 0; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchInstanceOfExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchInstanceOfExpression.java new file mode 100644 index 0000000000..7b6a6dee98 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchInstanceOfExpression.java @@ -0,0 +1,19 @@ +package org.splevo.tests.statements; + +public class ConditionMatchInstanceOfExpression { + + public String doSth(Object a) { + + if(a instanceof String) { + return "new instanceof conditional"; + } + + if(a instanceof Integer) { + return "existing instanceof"; + } + + for (int i = 0; i < 10 && i >= 0; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchOrExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchOrExpression.java new file mode 100644 index 0000000000..37bd143c9c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchOrExpression.java @@ -0,0 +1,22 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class ConditionMatchOrExpression { + + public String doSth(String[] a) { + + if(true || a.length() > 0) { + return "new conditional"; + } + + if (a.length() > 0 || true) { + return "existing conditional"; + } + + for (int i = 0; i < 10 && i >= 0; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchRelationExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchRelationExpression.java new file mode 100644 index 0000000000..938bb77d03 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchRelationExpression.java @@ -0,0 +1,22 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class ConditionMatchRelationExpression { + + public String doSth(String[] a) { + + if(getClass().getName().length() + a.length > 0) { + return "new conditional"; + } + + if (a.length() > 0) { + return "existing conditional"; + } + + for (int i = 0; i < 10; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchUnaryExpression.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchUnaryExpression.java new file mode 100644 index 0000000000..8d9a2152bd --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ConditionMatchUnaryExpression.java @@ -0,0 +1,22 @@ +package org.splevo.tests.statements; + +import java.util.List; + +public class ConditionMatchUnaryExpression { + + public String doSth(List a) { + + if(!String.CASE_INSENSITIVE_ORDER.equals(a.iterator().next())) { + return "new unary conditional"; + } + + if(!(String.CASE_INSENSITIVE_ORDER.equals(a.iterator().next()) + && a.size() == ("test".length() + 1))) { + return "existing conditional"; + } + + for (int i = 0; i < 10 && i >= 0; i++) { + System.out.println(""+i); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/EnumAccesses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/EnumAccesses.java new file mode 100644 index 0000000000..ab3b92c2dc --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/EnumAccesses.java @@ -0,0 +1,16 @@ +package org.splevo.tests.statements; + +public class EnumAccesses { + + public void doSth() { + Container.TestEnum var = Container.TestEnum.EnumItem1; + } +} + +class Container { + + public enum TestEnum { + EnumItem1, + EnumItem2 + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ForLoopWithIterator.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ForLoopWithIterator.java new file mode 100644 index 0000000000..afee1595fc --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ForLoopWithIterator.java @@ -0,0 +1,12 @@ +package org.splevo.tests.statements; + +public class ConditionalVariable { + + protected void doSth(Collection c) { + for (Iterator i = c.iterator(); i.hasNext(); ) { + Object o = i.next(); + System.out.println(o); + } + } + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseMultipleStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseMultipleStatements.java new file mode 100644 index 0000000000..ec6e025c03 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseMultipleStatements.java @@ -0,0 +1,22 @@ +package org.splevo.tests.statements; + +public class IfElseMultipleStatements { + + public int elseIf(int a) { + if (a == 0) { + return 0 + 0; + + } else if (a == 1) { + return 1 + 1; + + } else if (a == 54) { + return 54 + 54; + + } else if (a == 2) { + return 2 + 2; + + } else if (a == 3) { + return 3 + 3; + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseStatements.java new file mode 100644 index 0000000000..8d0b508fae --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfElseStatements.java @@ -0,0 +1,16 @@ +package org.splevo.tests.statements; + +public class IfElseStatements { + + public void elseIf(int a) { + if (a == 1) { + 1 + 1; + + } else if (a == 54) { + 54 + 54; + + } else if (a == 2) { + 2 + 2; + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfIfStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfIfStatements.java new file mode 100644 index 0000000000..fd5acb4baf --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfIfStatements.java @@ -0,0 +1,13 @@ +package org.splevo.tests.statements; + +public class IfIfStatements { + + public void ifIf() { + if (toString().equals("b")) { + 1 + 1; + } + if (toString().equals("a")) { + 2 + 2; + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfStatements.java new file mode 100644 index 0000000000..fa7c42bdf4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/IfStatements.java @@ -0,0 +1,64 @@ +package org.splevo.tests.statements; + +import java.util.Iterator; +import java.util.LinkedList; + +public class IfStatements { + + public void newIfStatementTest(String a) { + + // new if statement before + if (a == null) { + return; + } + + if (a.length() > 1) { + System.out.println(); + } + } + + public void changedConditionIfStatementTest(String a) { + + if ("value1" == null) { + return; + } + + if ("valueB" == null) { + return; + } + } + + public void unChangedConditionIfStatementTest(String a) { + + if (true && (toString() instanceof Object)) { + return; + } + + for (int i = 0; i < a.toCharArray().length; i++) { + System.out.println(i); + } + + boolean result = true; + if (!result) { + System.out.println(result); + } + + int pos = 1; + if (pos == -1) { + return; + } + + if (new Object() == this) { + return; + } + + if (new Object() == String.class) { + + } + + LinkedList umlPredecessors = new LinkedList(); + Iterator it; + it = (umlPredecessors != null) ? umlPredecessors.iterator() : null; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/LoopStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/LoopStatements.java new file mode 100644 index 0000000000..e53d22c384 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/LoopStatements.java @@ -0,0 +1,55 @@ +package org.splevo.tests.statements; + +import java.util.ArrayList; + +public class LoopStatements { + + public LoopStatements() { + } + + public void ForUnchanged(){ + + for (int i = 0; i < 10; i++) { + System.out.println(""+i); + } + } + + public void ForChanged(){ + + for (int i = 5; i < 10; i++) { + System.out.println(""+i); + } + } + + public void EnhancedForUnchanged(){ + + ArrayList items = new ArrayList(); + for (String item : items) { + System.out.println(item); + } + } + + public void EnhancedForChanged(){ + + ArrayList items = new ArrayList(); + ArrayList items2 = new ArrayList(); + for (String item : items2) { + System.out.println(item); + } + } + + public void WhileUnchanged(int a){ + + while(a < 10){ + System.out.println("endlessLoop"); + } + } + + public void WhileChanged(int a){ + + while(a < 10 && a > 5){ + System.out.println("endlessLoop"); + } + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ReturnStatementChanges.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ReturnStatementChanges.java new file mode 100644 index 0000000000..27dcea25fa --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ReturnStatementChanges.java @@ -0,0 +1,26 @@ +package org.splevo.tests.statements; + +public class ReturnStatementChanges { + + public void doSth(String a){ + + if(a == null){ + return; + } + + return; + } + + public void noReturn(){ + return; + } + + public String returnWithExpression(){ + return "Good Bye"; + } + + public String returnWithExpressionEqual(){ + return "Good Morning"; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/StaticInitialization.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/StaticInitialization.java new file mode 100644 index 0000000000..76578a3baa --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/StaticInitialization.java @@ -0,0 +1,21 @@ +package org.splevo.tests.statements; + +public class StaticInitialization { + + public static final String ID0 = "ID0"; + + public static final String ID1 = "ID1"; + + + static{ + + putDefaultShortcut(ID2, null, new String()); + + putDefaultShortcut(ID1, null, new String()); + + } + + private static void putDefaultShortcut(String id, Object defaultValue, Object action){ + + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/Synchronized.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/Synchronized.java new file mode 100644 index 0000000000..2bd0e11bd8 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/Synchronized.java @@ -0,0 +1,16 @@ +package org.splevo.tests.statements; + +public class Synchronized { + + private Object synchronizationObject = new Byte[0]; + + public void synchronizeOnField() { + + + System.out.println("dummy change"); + + synchronized (synchronizationObject) { + return "synchronizeOnField"; + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ThrowStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ThrowStatements.java new file mode 100644 index 0000000000..edc5504924 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/ThrowStatements.java @@ -0,0 +1,28 @@ +package org.splevo.tests.statements; + +/** + * Class with methods containing different throw variations. + */ +public class ThrowStatements { + + public static void similarThrow(){ + throw new IllegalArgumentException(); + } + + public static void similarThrowWithParameter(){ + throw new IllegalArgumentException("Error"); + } + + public static void changedThrow(){ + throw new RuntimeException(); + } + + public static void changedThrowWithParameter(){ + throw new RuntimeException("Error"); + } + + public static void throwWithChangedParameter(){ + throw new IllegalArgumentException("Another Error"); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/TryCatch.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/TryCatch.java new file mode 100644 index 0000000000..e4a1a03e32 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/TryCatch.java @@ -0,0 +1,23 @@ +package org.splevo.tests.statements; + +public class TryCatch { + + public String similarTryCatch(){ + try{ + return "hello"; + } catch (RuntimeException e){ + return "e"; + } catch (Exception iea){ + return "iea"; + } + } + + public String changedTryCatch(){ + try{ + return "hello"; + } catch (RuntimeException e){ + return "e"; + } + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/VariableDeclarationStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/VariableDeclarationStatements.java new file mode 100644 index 0000000000..905b9355a3 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/statements/b/VariableDeclarationStatements.java @@ -0,0 +1,9 @@ +package org.splevo.tests.statements; + +public class VariableDeclarationStatements { + + public void doSth(){ + String var1, var3 = "Hello"; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/A.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/A.java new file mode 100644 index 0000000000..0c0e747850 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/A.java @@ -0,0 +1,11 @@ +package org.splevo.tests.variabledeclaration; + +import java.math.BigInteger; + +public class A { + + public void methodA() { + BigInteger integerValue1 = new BigInteger("1"); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/MultipleVariables.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/MultipleVariables.java new file mode 100644 index 0000000000..dc10e4a777 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/MultipleVariables.java @@ -0,0 +1,9 @@ +package org.splevo.tests; + +public class MultipleVariables { + + public void methodA() { + String varA = new String("1"); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/StringInitialization.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/StringInitialization.java new file mode 100644 index 0000000000..0607e7ab3a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/a/StringInitialization.java @@ -0,0 +1,27 @@ +package org.splevo.tests.variabledeclaration; + +public class StringInitialization { + + private static final String EXPORTER_NAME = "Test Exporter"; + private static final String EXPORTER_VERSION = "1.4"; + private static final String UML_VERSION = "1.4"; + + private String version = "1"; + + public void doSth() { + String header = + " \n" + + " ArgoUML" + + " (using " + EXPORTER_NAME + + " version " + EXPORTER_VERSION + + ")\n" + + " " + version + + " revised on " + + "$Date: 2010-09-26 00:23:13 +0200 (Sun, 26 Sep 2010) $ " + + "\n" + + " \n" + + " "; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/A.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/A.java new file mode 100644 index 0000000000..7c5bf63ed6 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/A.java @@ -0,0 +1,11 @@ +package org.splevo.tests.variabledeclaration; + +import java.math.BigDecimal; + +public class A { + + public void methodA() { + BigDecimal integerValue1 = new BigDecimal("1"); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/MultipleVariables.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/MultipleVariables.java new file mode 100644 index 0000000000..7ee41b1781 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/MultipleVariables.java @@ -0,0 +1,10 @@ +package org.splevo.tests; + +public class MultipleVariables { + + public void methodA() { + String newVarA = new String("0"); + String varA = new String("1"); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/StringInitialization.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/StringInitialization.java new file mode 100644 index 0000000000..0607e7ab3a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/splevo-testmodels/implementation/variabledeclaration/b/StringInitialization.java @@ -0,0 +1,27 @@ +package org.splevo.tests.variabledeclaration; + +public class StringInitialization { + + private static final String EXPORTER_NAME = "Test Exporter"; + private static final String EXPORTER_VERSION = "1.4"; + private static final String UML_VERSION = "1.4"; + + private String version = "1"; + + public void doSth() { + String header = + " \n" + + " ArgoUML" + + " (using " + EXPORTER_NAME + + " version " + EXPORTER_VERSION + + ")\n" + + " " + version + + " revised on " + + "$Date: 2010-09-26 00:23:13 +0200 (Sun, 26 Sep 2010) $ " + + "\n" + + " \n" + + " "; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/AbstractSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/AbstractSimilarityTest.java new file mode 100644 index 0000000000..93f9781b9d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/AbstractSimilarityTest.java @@ -0,0 +1,212 @@ +package cipm.consistency.fitests.similarity; + +import java.util.Collection; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestInfo; + +/** + * An abstract class for similarity checking tests to extend.
+ *
+ * Contains methods that provide information on the next test method to be run + * and various delegation methods that spare call chains. + * + * @author Alp Torac Genc + */ +public abstract class AbstractSimilarityTest { + /** + * @see {@link #getSCC()} + */ + private ISimilarityCheckerContainer scc; + /** + * @see {@link #getCurrentTestInfo()} + */ + private TestInfo currentTestInfo; + + /** + * Sets up the necessary variables before tests are run. The {@link TestInfo} + * parameter is included, so that test-specific set up can be performed.
+ *
+ * It is suggested to have a call to {@code super.setUp()} as the FIRST + * statement in overriding implementations. Doing so circumvents potential + * errors caused by the order of set up operations. + * + * @param info An object that contains information about the current test to be + * run (ex: the test method instance, test class, ...) + */ + @BeforeEach + public void setUp(TestInfo info) { + this.setTestInfo(info); + + this.setUpLogger(); + + this.setSCC(this.initSCC()); + } + + /** + * Cleans up the variables set up with {@link #setUp(TestInfo)} and performs + * other necessary clean up operations.
+ *
+ * It is suggested to have a call to {@code super.tearDown()} as the LAST + * statement in overriding implementations. Doing so circumvents potential + * errors caused by the order of clean up operations. + */ + @AfterEach + public void tearDown() { + this.cleanUpSCC(); + this.cleanUpTestInfo(); + } + + /** + * Sets the {@link TestInfo} belonging to the currently running test method to + * null. Used by {@link #tearDown()}, in order to make sure that the underlying + * {@link TestInfo} does not get carried over. + */ + protected void cleanUpTestInfo() { + this.currentTestInfo = null; + } + + /** + * Sets the information object belonging to the currently running test method. + */ + protected void setTestInfo(TestInfo info) { + this.currentTestInfo = info; + } + + /** + * Provides the implementors access to the underlying + * {@link ISimilarityCheckerContainer} (SCC). + * + * @return The {@link ISimilarityCheckerContainer} (SCC) that will be used to + * store the similarity checker under test. + */ + protected ISimilarityCheckerContainer getSCC() { + return this.scc; + } + + /** + * Sets the used {@link ISimilarityCheckerContainer} to null. Used by + * {@link #tearDown()}, in order to ensure that each test method starts with a + * fresh {@link ISimilarityCheckerContainer}. + */ + protected void cleanUpSCC() { + this.scc = null; + } + + /** + * @return An object that contains information on the currently running test. + */ + protected TestInfo getCurrentTestInfo() { + return this.currentTestInfo; + } + + /** + * @param info An object that contains information on a test. + * + * @return The name of the test method, to whom the info parameter belongs. + * Returns an empty String, if info is null or info does not contain a + * test method. + */ + private String getCurrentTestMethodName(TestInfo info) { + if (info != null) { + var met = info.getTestMethod().orElseGet(() -> null); + + if (met != null) { + return met.getName(); + } + } + + return ""; + } + + /** + * @return The logger of the current test class. + */ + protected Logger getLogger() { + return Logger.getLogger("cipm." + this.getClass().getSimpleName()); + } + + /** + * Prepares loggers.
+ *
+ * Enabling too many loggers (without limiting the console size) can cause + * Java memory issues. + */ + protected void setUpLogger() { + Logger logger = Logger.getLogger("cipm"); + logger.setLevel(Level.ALL); + + // Enable to receive log messages from similarity switches + // logger = Logger.getLogger("javaswitch"); + // logger.setLevel(Level.ALL); + + // logger = Logger.getLogger("jamopp"); + // logger.setLevel(Level.ALL); + logger = Logger.getRootLogger(); + logger.removeAllAppenders(); + ConsoleAppender ap = new ConsoleAppender(new PatternLayout("[%d{DATE}] %-5p: %c - %m%n"), + ConsoleAppender.SYSTEM_OUT); + logger.addAppender(ap); + } + + /** + * Creates the concrete {@link ISimilarityCheckerContainer} that will be used to + * store the similarity checker under test.
+ *
+ * If necessary, it can be overridden in tests to change the said similarity + * checker during set up. + */ + protected abstract ISimilarityCheckerContainer initSCC(); + + /** + * Sets the used {@link ISimilarityCheckerContainer} to the given one.
+ *
+ * If necessary, it can be called in tests to change the used similarity checker + * container to the given one. + * + * @see {@link #initSCC()} for setting the {@link ISimilarityCheckerContainer} + * during set up. + */ + protected void setSCC(ISimilarityCheckerContainer scc) { + this.scc = scc; + } + + /** + * Delegates similarity checking to the underlying + * {@link ISimilarityCheckerContainer}. + */ + public Boolean isSimilar(Object element1, Object element2) { + return this.getSCC().isSimilar(element1, element2); + } + + /** + * Delegates similarity checking to the underlying + * {@link ISimilarityCheckerContainer}. + */ + public Boolean areSimilar(Collection elements1, Collection elements2) { + return this.getSCC().areSimilar(elements1, elements2); + } + + /** + * @return The prefix of the {@link Resource} file names created from within the + * current test class. Defaults to the name of the current test class. + * + * @see {@link #getResourceFileName()} + */ + public String getCurrentTestClassName() { + return this.getClass().getSimpleName(); + } + + /** + * @return The name of the currently running test method + */ + public String getCurrentTestMethodName() { + return this.getCurrentTestMethodName(this.getCurrentTestInfo()); + } + +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/ISimilarityCheckerContainer.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/ISimilarityCheckerContainer.java new file mode 100644 index 0000000000..a9ccffab2c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/ISimilarityCheckerContainer.java @@ -0,0 +1,46 @@ +package cipm.consistency.fitests.similarity; + +import java.util.Collection; + +/** + * An interface meant to be implemented by classes that store the similarity + * checker under test, in order to spare other test classes the need to add that + * similarity checker as a dependency.
+ *
+ * This interface contains dependencies to neither similarity checker interfaces + * nor to concrete implementations, because doing so would reduce the + * re-usability.
+ *
+ * The underlying similarity checking mechanism(s) can be reset by using the + * {@link #newSimilarityChecker()} method. The similarity checking mechanism(s) + * are not automatically re-created upon calling similarity checking methods in + * this interface, because it might be desirable to keep using them. + * + * @author Alp Torac Genc + */ +public interface ISimilarityCheckerContainer { + /** + * If there are no similarity checking mechanism(s) present, this method creates + * and sets them up. Otherwise, replaces the currently stored similarity + * checking mechanism(s) with new ones.
+ *
+ * The similarity checking mechanism(s) are not automatically re-created upon + * calling similarity checking methods, because it might be desirable to keep + * using the existing similarity checking mechanism(s). + */ + public void newSimilarityChecker(); + + /** + * Delegates similarity checking to the similarity checking mechanism(s) within. + * Calls {@link #newSimilarityChecker()} beforehand, if there are no similarity + * checking mechanism(s) present. + */ + public Boolean isSimilar(Object element1, Object element2); + + /** + * Delegates similarity checking to the similarity checking mechanism(s) within. + * Calls {@link #newSimilarityChecker()} beforehand, if there are no similarity + * checking mechanism(s) present. + */ + public Boolean areSimilar(Collection elements1, Collection elements2); +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/JavaSimilarityCheckerContainer.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/JavaSimilarityCheckerContainer.java new file mode 100644 index 0000000000..b40a0416a0 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/JavaSimilarityCheckerContainer.java @@ -0,0 +1,43 @@ +package cipm.consistency.fitests.similarity.base; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.ecore.EObject; +import org.splevo.jamopp.diffing.similarity.SimilarityChecker; + +import cipm.consistency.fitests.similarity.ISimilarityCheckerContainer; + +/** + * A concrete implementation of {@link ISimilarityCheckerContainer} that creates + * and works with {@link JavaSimilarityChecker} instances. + * + * @author Alp Torac Genc + */ +public class JavaSimilarityCheckerContainer implements ISimilarityCheckerContainer { + private SimilarityChecker sc; + + private SimilarityChecker getSimilarityChecker() { + if (this.sc == null) { + this.newSimilarityChecker(); + } + return this.sc; + } + + @Override + public void newSimilarityChecker() { + this.sc = new SimilarityChecker(); + } + + @Override + public Boolean isSimilar(Object element1, Object element2) { + return this.getSimilarityChecker().isSimilar((EObject) element1, (EObject) element2); + } + + @SuppressWarnings("unchecked") + @Override + public Boolean areSimilar(Collection elements1, Collection elements2) { + return this.getSimilarityChecker().areSimilar((List) elements1, + (List) elements2); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/package-info.java new file mode 100644 index 0000000000..69404da23c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/base/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains test classes and interfaces that depend on + * {@link org.splevo.jamopp.diffing.similarity} and/or its sub-packages. + */ +package cipm.consistency.fitests.similarity.base; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractEObjectSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractEObjectSimilarityTest.java new file mode 100644 index 0000000000..add310bc50 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractEObjectSimilarityTest.java @@ -0,0 +1,306 @@ +package cipm.consistency.fitests.similarity.eobject; + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestInfo; + +import cipm.consistency.initialisers.eobject.IEObjectInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; +import cipm.consistency.fitests.similarity.params.InitialiserTestSettingsProvider; + +/** + * An abstract class that extends {@link AbstractResourceSimilarityTest} with + * various methods that can be used to test the similarity checking of + * {@link EObject} instances.
+ *
+ * Integrates {@link InitialiserTestSettingsProvider}, in order to grant access + * to expected similarity values. + * + * @author Alp Torac Genc + * @see {@link InitialiserTestSettingsProvider#getSimilarityValues()} and + * further related methods and classes for more information on expected + * similarity values. + */ +public abstract class AbstractEObjectSimilarityTest extends AbstractResourceSimilarityTest { + /** + * @see {@link #getEcoreUtilHelper()} + */ + private EcoreUtilHelper ecoreHelper; + + @BeforeEach + @Override + public void setUp(TestInfo info) { + super.setUp(info); + + this.setEcoreUtilHelper(new EcoreUtilHelper()); + } + + @AfterEach + @Override + public void tearDown() { + this.cleanUpEcoreUtilHelper(); + + this.resetInitialiserTestSettingsProvider(); + + super.tearDown(); + } + + /** + * Consider adding default initialisation for + * {@link InitialiserTestSettingsProvider} if plausible to spare code + * duplication. + * + * @return The {@link InitialiserTestSettingsProvider} that will be used in + * tests. + */ + public abstract InitialiserTestSettingsProvider getInitialiserTestSettingsProvider(); + + /** + * Sets up the {@link EcoreUtilHelper} instance that will be used with the given + * one. + */ + protected void setEcoreUtilHelper(EcoreUtilHelper ecoreHelper) { + this.ecoreHelper = ecoreHelper; + } + + /** + * Sets the used {@link EcoreUtilHelper} to null, in order to make sure that + * each test method has a fresh instance. + */ + protected void cleanUpEcoreUtilHelper() { + this.ecoreHelper = null; + } + + /** + * @return A helper class instance that can be used to perform various + * operations on {@link EObject} instances. + */ + protected EcoreUtilHelper getEcoreUtilHelper() { + return this.ecoreHelper; + } + + /** + * Resets {@link #getInitialiserTestSettingsProvider()} after individual tests. + */ + protected void resetInitialiserTestSettingsProvider() { + this.getInitialiserTestSettingsProvider().reset(); + } + + /** + * @return The {@link IInitialiserPackage} that is used to generate initialiser + * parameters for tests. + */ + public IInitialiserPackage getUsedInitialiserPackage() { + return this.getInitialiserTestSettingsProvider().getUsedInitialiserPackage(); + } + + /** + * The variant of + * {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} that uses the + * type, which introduces attrKey to the {@link EObject} hierarchy first. + */ + public Boolean getExpectedSimilarityResult(EStructuralFeature attrKey) { + return this.getInitialiserTestSettingsProvider().getSimilarityValues().getExpectedSimilarityResult(attrKey); + } + + /** + * @param objCls The type of the {@link EObject} instances being compared + * @param attrKey The attribute, based on which the said instances are compared + * @return The expected similarity value for cases, where 2 instances of objCls + * are compared, whose attribute (attrKey) is different. + */ + public Boolean getExpectedSimilarityResult(Class objCls, EStructuralFeature attrKey) { + return this.getInitialiserTestSettingsProvider().getSimilarityValues().getExpectedSimilarityResult(objCls, + attrKey); + } + + /** + * See {@link EcoreUtilHelper#cloneEObj(EObject)} + */ + public T cloneEObj(T obj) { + return this.getEcoreUtilHelper().cloneEObj(obj); + } + + /** + * See {@link EcoreUtilHelper#cloneEObjWithContainers(EObject)} + */ + public T cloneEObjWithContainers(T obj) { + var clone = this.getEcoreUtilHelper().cloneEObjWithContainers(obj); + if (clone != null) + return clone; + + Assertions.fail("Cloning with cloneEObjWithContainers failed"); + return null; + } + + /** + * See {@link EcoreUtilHelper#cloneEObjList(Collection)} + */ + public Collection cloneEObjList(Collection objs) { + return this.getEcoreUtilHelper().cloneEObjList(objs); + } + + /** + * See {@link EcoreUtilHelper#getActualEquality(EObject, EObject)} + */ + public boolean getActualEquality(EObject elem1, EObject elem2) { + return this.getEcoreUtilHelper().getActualEquality(elem1, elem2); + } + + /** + * See {@link EcoreUtilHelper#getActualEquality(List, List)} + */ + public boolean getActualEquality(List elems1, List elems2) { + return this.getEcoreUtilHelper().getActualEquality(elems1, elems2); + } + + /** + * Clones elem and compares it with its clone. They are expected to be similar. + */ + public void assertSimilar(EObject elem) { + this.assertSimilarityResult(elem, elem, Boolean.TRUE); + } + + /** + * Compares elem1 with elem2, expects the similarity result to be the same with + * the given expected value.
+ *
+ * Note: All given {@link EObject} instances will be cloned before tests to + * make sure that there are no side effects caused by the given {@link EObject} + * instances changing their container. + * {@link #cloneEObjWithContainers(EObject)} is used to make sure that all + * potentially relevant containers are cloned as well. + */ + public void assertSimilarityResult(EObject elem1, EObject elem2, Boolean expectedSimilarityResult) { + if (expectedSimilarityResult == null) { + this.getLogger().debug("No expected similarity result present"); + } else if ((!expectedSimilarityResult.booleanValue() && this.getActualEquality(elem1, elem2))) { + this.getLogger().debug("Elements are expected to be different" + " in " + this.getCurrentTestMethodName() + + " but are similar according to EcoreUtilHelper"); + } + + var objOne = this.cloneEObjWithContainers(elem1); + var objTwo = this.cloneEObjWithContainers(elem2); + + var resOne = this.createResource(List.of(objOne)); + var resTwo = this.createResource(List.of(objTwo)); + + Assertions.assertEquals(expectedSimilarityResult, this.areSimilar(resOne.getContents(), resTwo.getContents()), + "EcoreUtilHelper comparison result: " + this.getActualEquality(objOne, objTwo)); + } + + /** + * Tests the similarity as follows: + *
    + *
  1. Clones elem1 and compares it with its clone, + *
  2. Clones elem2 and compares it with its clone, + *
  3. Compares elem1 with elem2 + *
  4. Compares elem2 with elem1 + *
+ * + * Note: All given {@link EObject} instances will be cloned before tests to + * make sure that there are no side effects caused by the given {@link EObject} + * instances changing their container. + * {@link #cloneEObjWithContainers(EObject)} is used to make sure that all + * potentially relevant containers are cloned as well.
+ *
+ * + * @param expectedSimilarityValue The expected result of the similarity + * checking. + */ + public void testSimilarity(EObject elem1, EObject elem2, Boolean expectedSimilarityValue) { + this.assertSimilar(elem1); + this.assertSimilar(elem2); + + this.assertSimilarityResult(elem1, elem2, expectedSimilarityValue); + this.assertSimilarityResult(elem2, elem1, expectedSimilarityValue); + } + + /** + * A variant of {@link #testSimilarity(EObject, EObject, Boolean)}, where the + * last parameter is computed using the given attrKey. + * + * @see {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} for + * objCls and attrKey. + */ + public void testSimilarity(EObject elem1, EObject elem2, Class objCls, + EStructuralFeature attrKey) { + this.testSimilarity(elem1, elem2, this.getExpectedSimilarityResult(objCls, (EStructuralFeature) attrKey)); + } + + /** + * The variant of + * {@link #testSimilarity(EObject, EObject, Class, EStructuralFeature)} that + * uses the same class as the given elems. + * + * @see {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} for + * attrKey. + */ + @SuppressWarnings("unchecked") + public void testSimilarity(EObject elem1, EObject elem2, EStructuralFeature attrKey) { + this.testSimilarity(elem1, elem2, (Class) elem1.eClass().getInstanceClass(), attrKey); + } + + /** + * A variant of {@link #testSimilarity(EObject, EObject, Boolean)} that + * constructs a minimal second element with the given initialiser instance init + * and uses it as the second parameter in the said method.
+ *
+ * If initialiseSecondElement is set to true, constructs the second element with + * {@code init.initialise(init.instantiate())}. Otherwise uses + * {@code init.instantiate()}.
+ *
+ * Can be used to summarise the null check tests. + * + * @param init The initialiser used in the construction of + * the second element + * @param initialiseSecondElement Denotes whether {@code init.initialise(...)} + * will be used in the construction of the second + * element. + */ + public void testSimilarityNullCheck(EObject elem, IEObjectInitialiser init, boolean initialiseSecondElement, + Boolean expectedSimilarityValue) { + var elem2 = init.instantiate(); + + if (initialiseSecondElement) { + Assertions.assertTrue(init.initialise(elem2)); + } + + this.testSimilarity(elem, elem2, expectedSimilarityValue); + } + + /** + * A variant of + * {@link #testSimilarityNullCheck(EObject, IEObjectInitialiser, boolean, Boolean)}, + * where the last parameter is computed using the given attrKey. + * + * @see {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} for + * objCls and attrKey. + */ + public void testSimilarityNullCheck(EObject elem, IEObjectInitialiser init, boolean initialiseSecondElement, + Class objCls, EStructuralFeature attrKey) { + this.testSimilarityNullCheck(elem, init, initialiseSecondElement, + this.getExpectedSimilarityResult(objCls, (EStructuralFeature) attrKey)); + } + + /** + * A variant of + * {@link #testSimilarityNullCheck(EObject, IEObjectInitialiser, boolean, Class, EStructuralFeature)} + * that computes the {@code objCls} parameter from the {@code elem} parameter. + * + * @see {@link #getExpectedSimilarityResult(Class, EStructuralFeature)} for + * attrKey. + */ + @SuppressWarnings("unchecked") + public void testSimilarityNullCheck(EObject elem, IEObjectInitialiser init, boolean initialiseSecondElement, + EStructuralFeature attrKey) { + this.testSimilarityNullCheck(elem, init, initialiseSecondElement, + (Class) elem.eClass().getInstanceClass(), attrKey); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractResourceSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractResourceSimilarityTest.java new file mode 100644 index 0000000000..eb045fdeca --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/AbstractResourceSimilarityTest.java @@ -0,0 +1,102 @@ +package cipm.consistency.fitests.similarity.eobject; + +import java.util.Collection; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestInfo; + +import cipm.consistency.fitests.similarity.AbstractSimilarityTest; + +/** + * An abstract class that extends {@link AbstractSimilarityTest} with additional + * methods regarding {@link Resource} instance creation. + * + * @author Alp Torac Genc + */ +public abstract class AbstractResourceSimilarityTest extends AbstractSimilarityTest { + /** + * @see {@link #getResourceHelper()} + */ + private ResourceHelper resHelper; + + @BeforeEach + @Override + public void setUp(TestInfo info) { + super.setUp(info); + + this.setResourceHelper(new ResourceHelper()); + + this.getResourceHelper().setResourceSaveRootPath(this.getAbsoluteResourceRootPath()); + this.getResourceHelper().setResourceFileExtension(this.getResourceFileExtension()); + } + + @AfterEach + @Override + public void tearDown() { + this.getResourceHelper().clean(); + this.cleanUpResourceHelper(); + + super.tearDown(); + } + + /** + * Sets the used {@link ResourceHelper} to null, in order to ensure that each + * test method has a fresh instance. + */ + protected void cleanUpResourceHelper() { + this.resHelper = null; + } + + /** + * Sets up the {@link ResourceHelper} instance that will be used with the given + * one. + */ + protected void setResourceHelper(ResourceHelper resHelper) { + this.resHelper = resHelper; + } + + /** + * The {@link ResourceHelper} instance that can be used for creating + * {@link Resource} instances. + */ + protected ResourceHelper getResourceHelper() { + return this.resHelper; + } + + /** + * Delegates the creation of a {@link Resource} instance to the underlying + * {@link ResourceHelper}.
+ *
+ * The name of the {@link Resource} instance will be the return value of + * {@link #getResourceFileName()}. + * + * @return A {@link Resource} instance with the given contents + */ + protected Resource createResource(Collection eos) { + return this.getResourceHelper().createResource(eos, this.getResourceFileName()); + } + + /** + * Uses the currently run test class and method to compute a name for the file + * of the {@link Resource} instance, should it be saved. + * + * @return A name for the file of the {@link Resource} instance. + */ + public String getResourceFileName() { + return this.getCurrentTestClassName() + "_" + this.getCurrentTestMethodName(); + } + + /** + * @return The absolute path, under which the {@link Resource} files will be + * saved. + */ + public abstract String getAbsoluteResourceRootPath(); + + /** + * @return The extension of the {@link Resource} files, if they are saved. + */ + public abstract String getResourceFileExtension(); +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/EcoreUtilHelper.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/EcoreUtilHelper.java new file mode 100644 index 0000000000..2aa29faefa --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/EcoreUtilHelper.java @@ -0,0 +1,114 @@ +package cipm.consistency.fitests.similarity.eobject; + +import java.util.Collection; +import java.util.List; + +import org.apache.log4j.Logger; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.util.EcoreUtil; + +/** + * A helper class that contains utility methods for {@link EObject}. This class + * encapsulates such methods, so that other classes can spare dependencies to + * various {@link EObject} related packages.
+ *
+ * Methods in this class include various cloning methods for {@link EObject} + * instances. Furthermore, there are methods that compare {@link EObject} + * instances at meta-metamodel level, without any other context (all their + * contents and attributes are checked). + * + * @author Alp Torac Genc + * @see {@link EcoreUtil} + */ +public class EcoreUtilHelper { + private final Logger LOGGER = Logger.getLogger("cipm." + EcoreUtilHelper.class.getSimpleName()); + + /** + * Creates a clone copy of the given obj and its contents.
+ *
+ * Note: DOES NOT clone the container {@code obj.eContainer()} of this + * object. Only copies the given object and the contents nested in it. + * + * @return A clone of obj without its container and clones of its contents. + * @see {@link EcoreUtil#copy(EObject)} + */ + public T cloneEObj(T obj) { + return EcoreUtil.copy(obj); + } + + /** + * Finds the topmost EObject (objTop) that can be reached from {@code obj}, + * clones objTop, finds the clone of {@code obj} among the contents of objTop + * and returns that clone. + * + * @return A clone of obj, which preserves obj's place in its hierarchy. The + * returned obj clone contains clones of original obj's contents. All + * objects containing obj are also implicitly cloned, so that obj + * clone's position (among object clones) matches to the original obj's + * position (among original objects). + * @see {@link EcoreUtil#copy(EObject)} + */ + @SuppressWarnings("unchecked") + public T cloneEObjWithContainers(T obj) { + if (obj.eContainer() == null) { + return this.cloneEObj(obj); + } + + EObject cObj = obj; + + while (cObj.eContainer() != null) { + cObj = cObj.eContainer(); + } + + EObject clone = this.cloneEObj(cObj); + var contents = clone.eAllContents(); + + while (contents.hasNext()) { + var cCloneObj = contents.next(); + if (this.getActualEquality(obj, cCloneObj)) { + return (T) cCloneObj; + } + } + + LOGGER.error("Cloning EObject with cloneEObjWithContainers failed"); + return null; + } + + /** + * Creates a clone copy of all given objs.
+ *
+ * Note: DOES NOT clone any containers {@code obj.eContainer()} of the + * objects. Only copies the given objects and the contents nested in them. + * + * @see {@link EcoreUtil#copyAll(Collection)} + */ + public Collection cloneEObjList(Collection objs) { + return EcoreUtil.copyAll(objs); + } + + /** + * Computes the equality of two {@link EObject} instances using + * {@link EcoreUtil}.
+ *
+ * Note: The equality here is not necessarily the same as similarity checking + * that is being tested. This form of equality is much stricter than similarity, + * since there might be some differences in attributes and/or nested content, + * which are irrelevant for similarity in certain cases. + */ + public boolean getActualEquality(EObject elem1, EObject elem2) { + return EcoreUtil.equals(elem1, elem2); + } + + /** + * Computes the equality of two lists of {@link EObject} using + * {@link EcoreUtil}.
+ *
+ * Note: The equality here is not necessarily the same as similarity checking + * that is being tested. This form of equality is much stricter than similarity, + * since there might be some differences in attributes and/or nested content, + * which are irrelevant for similarity in certain cases. + */ + public boolean getActualEquality(List elems1, List elems2) { + return EcoreUtil.equals(elems1, elems2); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/ResourceHelper.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/ResourceHelper.java new file mode 100644 index 0000000000..b9c0b86103 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/ResourceHelper.java @@ -0,0 +1,285 @@ +package cipm.consistency.fitests.similarity.eobject; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.log4j.Logger; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; + +/** + * A class that encapsulates the means to create {@link Resource} instances. + * + * @author Alp Torac Genc + */ +public class ResourceHelper { + private static final Logger LOGGER = Logger.getLogger("cipm." + ResourceHelper.class.getSimpleName()); + + /** + * The directory, where the created {@link Resource} instances will be stored, + * if they are saved. + */ + private String resourceSaveRootPath; + + /** + * The extension of {@link Resource} files, if they are saved. + */ + private String resourceFileExtension; + + /** + * The map that keeps track of the mapping inserted into + * {@link Resource.Factory.Registry}. Can be used to clean such mappings from + * the registry at the end of tests. + */ + private Map registryMappings = new HashMap(); + + /** + * The list of created {@link Resource} instances. Can be used to perform clean + * up after tests. + */ + private List createdResources = new ArrayList(); + + /** + * @return The {@link Logger} that can be used to log happenings in this + * instance. + */ + protected Logger getLogger() { + return LOGGER; + } + + /** + * Creates and returns a {@link Resource} instance, whose URI will be the given + * one.
+ *
+ * Does not save the created {@link Resource} instance. + */ + protected Resource initResource(URI resUri) { + ResourceSet rSet = new ResourceSetImpl(); + return rSet.createResource(resUri); + } + + /** + * Sets the directory, where the created {@link Resource} instances will be + * stored, if they are saved. + */ + public void setResourceSaveRootPath(String resourceSaveRootPath) { + this.resourceSaveRootPath = resourceSaveRootPath; + } + + /** + * Sets the extension of {@link Resource} files, if they are saved. + */ + public void setResourceFileExtension(String resourceFileExtension) { + this.removeFromRegistry(this.resourceFileExtension); + this.resourceFileExtension = resourceFileExtension; + this.setResourceRegistry(); + } + + /** + * @return The extension of the {@link Resource} files. + */ + public String getResourceFileExtension() { + return this.resourceFileExtension; + } + + /** + * @return The directory, where the created {@link Resource} instances will be + * stored, if they are saved. + */ + public String getResourceSaveRootPath() { + return resourceSaveRootPath; + } + + /** + * Complements {@link #getResourceSaveRootPath()} with the {@link Resource} file + * name and extension. The said file will only be created, if the + * {@link Resource} file is saved. + * + * @param resourceFileName The name of the file + * @param resourceFileExtension The extension of the file + * @return The {@link URI} for a {@link Resource} instance. + */ + protected URI createURI(String resourceFileName, String resourceFileExtension) { + return URI.createFileURI( + this.getResourceSaveRootPath() + File.separator + resourceFileName + "." + resourceFileExtension); + } + + /** + * The variant of {@link #createURI(String, String)}, which uses + * {@link #getResourceFileExtension()}. + */ + protected URI createURI(String resourceName) { + return this.createURI(resourceName, this.getResourceFileExtension()); + } + + /** + * @return The name of the {@link Resource} file with the count parameter added + * to it. + */ + protected String getResourceNameWithCount(String resourceName, int count) { + return resourceName + "-" + count; + } + + /** + * @return Computes a unique name for the {@link Resource} file, so that it is + * not overwritten if another resource file with the same name is to be + * created. + */ + protected String computeEffectiveResourceName(String resourceName) { + var resourceRoot = new File(this.getResourceSaveRootPath()); + + var count = 0; + + if (resourceRoot.exists()) { + var files = List.of( + List.of(resourceRoot.listFiles()).stream().map((file) -> file.getName()).toArray(String[]::new)); + + while (files.contains(this.getResourceNameWithCount(resourceName, count))) { + count++; + } + } + + return this.getResourceNameWithCount(resourceName, count); + } + + /** + * Creates a {@link Resource} instance for the given EObject instances. The + * Resource instances created with this method are tracked, so that they can be + * deleted later if necessary.
+ *
+ * !!! IMPORTANT !!!
+ *
+ * Using this method will cause the logger to log an error message, if some + * of the EObject instances (from eos) that are already in a Resource instance + * are attempted to be placed into another Resource. This should be avoided, + * since doing so will REMOVE the said EObject instances from their former + * Resource and cause side effects in tests. + */ + public Resource createResource(Collection eos, String resourceName) { + Resource res = this.initResource(this.createURI(this.computeEffectiveResourceName(resourceName))); + this.createdResources.add(res); + + if (eos != null) { + for (var eo : eos) { + + /* + * Make sure to not add an EObject, which has already been added to a Resource, + * to another Resource. Doing so will detach it from its former Resource and add + * it to the second one. + */ + if (eo.eResource() != null) { + this.getLogger().error("An EObject's resource was set and shifted during resource creation"); + } + res.getContents().add(eo); + } + } + + return res; + } + + /** + * Puts the necessary mapping for saving {@link Resource} files with the given + * file extension into {@link Resource.Factory.Registry}. The entry is also + * tracked so that it can be deleted later, if necessary. + */ + protected void setResourceRegistry() { + var resFileExtension = this.getResourceFileExtension(); + var fac = new XMIResourceFactoryImpl(); + + this.registryMappings.put(resFileExtension, fac); + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(resFileExtension, fac); + } + + /** + * Unloads the given {@link Resource} instance. + */ + public void unloadResource(Resource res) { + res.unload(); + } + + /** + * Unloads and deletes all created {@link Resource} instances, if they are + * created with {@link #createResource(Collection)}. Stops tracking them as + * well. + */ + public void cleanAllResources() { + this.createdResources.forEach((r) -> { + this.unloadResource(r); + + try { + r.delete(null); + } catch (IOException e) { + this.getLogger().debug("Resource either was not created as a file or has already been deleted: " + + r.getURI().toString()); + } + }); + + this.createdResources.clear(); + } + + /** + * Deletes the directory that contains all {@link Resource} instances, if it is + * empty. + */ + public void deleteResourceDir() { + new File(this.getResourceSaveRootPath()).delete(); + } + + /** + * Removes the entry matching to the given {@code resourceFileExtension} from + * the resource factory, if it was added by this instance. Stops tracking the + * said entry. + */ + protected void removeFromRegistry(String resourceFileExtension) { + if (resourceFileExtension == null) + return; + + var reg = Resource.Factory.Registry.INSTANCE; + var regMap = reg.getExtensionToFactoryMap(); + + if (regMap.containsKey(resourceFileExtension)) { + var val = regMap.get(resourceFileExtension); + + if (this.registryMappings.containsKey(resourceFileExtension)) { + var valTracked = this.registryMappings.get(resourceFileExtension); + + if (val.equals(valTracked)) { + regMap.remove(val); + this.registryMappings.remove(valTracked); + } + } + } + } + + /** + * Cleans the mapping(s) in {@link Resource.Factory.Registry} inserted by + * {@link #setResourceRegistry(String)}. Stops tracking them as well. + */ + protected void cleanRegistry() { + Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; + + for (var key : this.registryMappings.keySet()) { + reg.getExtensionToFactoryMap().remove(key); + } + + this.registryMappings.clear(); + } + + /** + * Cleans up the saved attributes and created {@link Resource} files. + */ + public void clean() { + this.cleanRegistry(); + this.cleanAllResources(); + this.deleteResourceDir(); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/package-info.java new file mode 100644 index 0000000000..422e0aa10f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/eobject/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link EObject} and {@link Resource} extensions for + * {@link cipm.consistency.fitests.similarity}. + */ +package cipm.consistency.fitests.similarity.eobject; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/AbstractJaMoPPSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/AbstractJaMoPPSimilarityTest.java new file mode 100644 index 0000000000..720aabc9ed --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/AbstractJaMoPPSimilarityTest.java @@ -0,0 +1,105 @@ +package cipm.consistency.fitests.similarity.jamopp; + +import java.io.File; +import java.util.stream.Stream; + +import org.junit.jupiter.params.provider.Arguments; + +import cipm.consistency.fitests.similarity.ISimilarityCheckerContainer; +import cipm.consistency.fitests.similarity.base.JavaSimilarityCheckerContainer; +import cipm.consistency.fitests.similarity.eobject.AbstractEObjectSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.params.JaMoPPInitialiserParameters; +import cipm.consistency.fitests.similarity.jamopp.params.JaMoPPSimilarityValues; +import cipm.consistency.fitests.similarity.params.IInitialiserParameters; +import cipm.consistency.fitests.similarity.params.InitialiserTestSettingsProvider; +import cipm.consistency.initialisers.jamopp.IJaMoPPEObjectInitialiser; + +/** + * An abstract test class that extends {@link AbstractEObjectSimilarityTest} + * with concrete method implementations for JaMoPP context, as well as static + * methods that can be used in parameterised tests to generate initialiser + * instances. + * + * @author Alp Torac Genc + */ +public abstract class AbstractJaMoPPSimilarityTest extends AbstractEObjectSimilarityTest { + @Override + protected ISimilarityCheckerContainer initSCC() { + return new JavaSimilarityCheckerContainer(); + } + + @Override + public String getAbsoluteResourceRootPath() { + return new File("").getAbsoluteFile().getAbsolutePath() + File.separator + "testModels"; + } + + @Override + public String getResourceFileExtension() { + return "javaxmi"; + } + + /** + * @return The {@link InitialiserTestSettingsProvider} that will be used in + * tests. Initialises the instance to be returned, if not properly + * initialised. + */ + public static InitialiserTestSettingsProvider getClassesInitialiserTestSettingsProvider() { + var instance = InitialiserTestSettingsProvider.getInstance(); + + if (instance == null) { + InitialiserTestSettingsProvider.initialise(); + instance = InitialiserTestSettingsProvider.getInstance(); + } + + if (instance.getParameters() == null) { + instance.setParameters(new JaMoPPInitialiserParameters()); + } + + if (instance.getSimilarityValues() == null) { + instance.setSimilarityValues(new JaMoPPSimilarityValues()); + } + + return instance; + } + + @Override + public InitialiserTestSettingsProvider getInitialiserTestSettingsProvider() { + return getClassesInitialiserTestSettingsProvider(); + } + + /** + * @see {@link IInitialiserParameters#getEachInitialiserOnceBySuper(Class)} + */ + public static Stream getEachInitialiserArgumentsOnceFor( + Class superType) { + return getClassesInitialiserTestSettingsProvider().getParameters().getEachInitialiserOnceBySuper(superType) + .stream().map((i) -> Arguments.of(i)); + } + + /** + * @see {@link IInitialiserParameters#getAllInitialisersBySuper(Class)} + */ + public static Stream getAllInitialiserArgumentsFor( + Class superType) { + return getClassesInitialiserTestSettingsProvider().getParameters().getAllInitialisersBySuper(superType).stream() + .map((i) -> Arguments.of(i)); + } + + /** + * @see {@link IInitialiserParameters#getAdaptedInitialisersBySuper(Class)} + */ + public static Stream getAdaptedInitialiserArgumentsFor( + Class superType) { + return getClassesInitialiserTestSettingsProvider().getParameters().getAdaptedInitialisersBySuper(superType) + .stream().map((i) -> Arguments.of(i)); + } + + /** + * @see {@link IInitialiserParameters#getNonAdaptedInitialisersBySuper(Class)} + */ + public static Stream getNonAdaptedInitialiserArgumentsFor( + Class superType) { + return getClassesInitialiserTestSettingsProvider().getParameters().getNonAdaptedInitialisersBySuper(superType) + .stream().map((i) -> Arguments.of(i)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/GeneralJaMoPPSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/GeneralJaMoPPSimilarityTest.java new file mode 100644 index 0000000000..aff61aa660 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/GeneralJaMoPPSimilarityTest.java @@ -0,0 +1,595 @@ +package cipm.consistency.fitests.similarity.jamopp; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +import org.eclipse.emf.ecore.EObject; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.initialisers.IInitialiserBase; +import cipm.consistency.initialisers.jamopp.IJaMoPPEObjectInitialiser; +import cipm.consistency.initialisers.jamopp.containers.ModuleInitialiser; +import cipm.consistency.initialisers.jamopp.containers.PackageInitialiser; + +import org.emftext.language.java.containers.Module; + +/** + * A test class dedicated to test the general control flow of similarity + * checking.
+ *
+ * Also contains some tests for lists, from which some abstract from + * {@link EObject} instances, whereas others make use of {@link Module} + * instances, as they can easily be compared after their name + * ({@code module.getName()}). + * + * @author Alp Torac Genc + */ +public class GeneralJaMoPPSimilarityTest extends AbstractJaMoPPSimilarityTest { + /** + * Provides all non-adapted versions of {@link IJaMoPPEObjectInitialiser} + * implementors. + */ + private static Stream provideNonAdaptedInitialisers() { + return AbstractJaMoPPSimilarityTest.getNonAdaptedInitialiserArgumentsFor(IJaMoPPEObjectInitialiser.class); + } + + /** + * Provides all adapted versions of {@link IJaMoPPEObjectInitialiser} + * implementors. + */ + private static Stream provideAdaptedInitialisers() { + return AbstractJaMoPPSimilarityTest.getAdaptedInitialiserArgumentsFor(IJaMoPPEObjectInitialiser.class); + } + + /** + * Provides all versions of {@link IJaMoPPEObjectInitialiser} implementors. + */ + private static Stream provideAllInitialisers() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IJaMoPPEObjectInitialiser.class); + } + + /** + * Provides one instance of each {@link IJaMoPPEObjectInitialiser} implementor. + * The initialiser instance will be adapted, if possible. + */ + private static Stream provideEachInitialiserOnce() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IJaMoPPEObjectInitialiser.class); + } + + /** + * @return An empty, immutable list + */ + private List toList() { + return List.of(); + } + + /** + * @return An immutable list containing the given elements + */ + private List toList(EObject... eos) { + return List.of(eos); + } + + /** + * Instantiates an object using init, initialises that object and returns it. + * Asserts that the initialisation is successful. + */ + private EObject instantiateAndInitialise(IJaMoPPEObjectInitialiser init) { + var obj = init.instantiate(); + Assertions.assertTrue(init.initialise(obj)); + return obj; + } + + /** + * @return A mutable list with a single null element. + */ + private List makeListWithSingleNullElement() { + var list = new ArrayList(); + list.add(null); + + // Make sure that the null element is in the list + Assertions.assertEquals(1, list.size()); + Assertions.assertNull(list.get(0)); + + return list; + } + + /** + * A variant of {@link #assertAreSimilar(List, List, Boolean)}, where the last + * parameter is true. + */ + private void assertAreSimilar(List eos1, List eos2) { + this.assertAreSimilar(eos1, eos2, Boolean.TRUE); + } + + /** + * Makes the following assertions: + * + *
    + *
  • The similarity value of both lists with respect to + * {@link #areSimilar(java.util.Collection, java.util.Collection)} is + * expectedResult. + *
  • The object within the lists are pairwise similar with respect to + * {@link #isSimilar(Object, Object)}, if expectedResult is true. Otherwise + * asserts that there is at least one pair, which is not similar. + *
  • The similarity checking is symmetrical, meaning that changing positions + * of parameters within similarity checking methods has no effect on the result. + *
+ */ + private void assertAreSimilar(List eos1, List eos2, Boolean expectedResult) { + Assertions.assertEquals(expectedResult, this.areSimilar(eos1, eos2)); + Assertions.assertEquals(expectedResult, this.areSimilar(eos2, eos1), "areSimilar is not symmetric"); + + if (eos1 != null && eos2 != null) { + int size = eos1.size() == eos2.size() ? eos1.size() : -1; + + if (expectedResult.booleanValue()) { + // Ensure that the objects are pairwise similar as well + for (int i = 0; i < size; i++) { + this.assertIsSimilar(eos1.get(i), eos2.get(i)); + } + } else if (size > 0) { + // Ensure that there is at least one object pair that is not similar, if list + // sizes are equal yet they not similar + for (int i = 0; i < size; i++) { + var eo1 = eos1.get(i); + var eo2 = eos2.get(i); + + var res1 = this.isSimilar(eo1, eo2); + var res2 = this.isSimilar(eo2, eo1); + + Assertions.assertEquals(res1, res2, "isSimilar checking is not symmetric"); + if (res1 == Boolean.FALSE) { + return; + } + } + Assertions.fail("areSimilar returns false, even though all objects are pairwise similar"); + } + } + } + + /** + * A variant of {@link #assertIsSimilar(EObject, EObject, Boolean)}, where the + * last parameter is true. + */ + private void assertIsSimilar(EObject obj1, EObject obj2) { + this.assertIsSimilar(obj1, obj2, Boolean.TRUE); + } + + /** + * Asserts that similarity checking obj1 and obj2 results in expectedResult. + * Additionally asserts that similarity checking is symmetrical, meaning that + * changing positions of obj1 and obj2 inside the similarity checking method has + * no effect on the result. + */ + private void assertIsSimilar(EObject obj1, EObject obj2, Boolean expectedResult) { + var res1 = this.isSimilar(obj1, obj2); + var res2 = this.isSimilar(obj2, obj1); + + // FIXME: Remove the null check and deal with the cause of the issues + + if (expectedResult == null || (res1 != null && res2 != null)) { + Assertions.assertEquals(expectedResult, res1); + Assertions.assertEquals(expectedResult, res2, "isSimilar is not symmetric"); + } else { + this.getLogger().warn("isSimilar returned null"); + } + } + + /** + * Ensure that the inherited {@link IJaMoPPEObjectInitialiser#newInitialiser()} + * returns an initialiser instance of the same type.
+ *
+ * All versions of initialisers are included to make sure that adapting + * initialisers does not break type equality of the returned initialiser. + */ + @ParameterizedTest + @MethodSource("provideAllInitialisers") + public void test_NewInitialiser_TypeCheck(IJaMoPPEObjectInitialiser initialiser) { + Assertions.assertEquals(initialiser.getClass(), initialiser.newInitialiser().getClass()); + } + + /** + * Ensure that the inherited {@link IJaMoPPEObjectInitialiser#newInitialiser()} + * does not consider adaptation strategies. + */ + @ParameterizedTest + @MethodSource("provideAdaptedInitialisers") + public void test_NewInitialiser_AdaptationStrategiesNotCopied(IInitialiserBase initialiser) { + var newInit = (IInitialiserBase) initialiser.newInitialiser(); + Assertions.assertFalse(newInit.isAdapted()); + } + + /** + * Ensure that adaptation strategies of adapted initialisers are copied for the + * new initialiser instance. Also make sure that the new adaptation strategies + * are not reference equal. + */ + @ParameterizedTest + @MethodSource("provideAdaptedInitialisers") + public void test_NewInitialiser_WithAdaptationStrategies(IInitialiserBase initialiser) { + var newInit = initialiser.newInitialiserWithStrategies(); + + Assertions.assertEquals(initialiser.getClass(), newInit.getClass()); + + if (initialiser.isAdapted()) { + Assertions.assertTrue(newInit.isAdapted()); + + var strats = initialiser.getAdaptingStrategies(); + var newStrats = newInit.getAdaptingStrategies(); + + Assertions.assertEquals(strats.size(), newStrats.size()); + + // Ensure that new adaptation strategies are not reference equal + for (var s : strats) { + Assertions.assertTrue(newStrats.stream().noneMatch((ns) -> ns == s)); + + // Approximate equality of contents by checking amount of elements of same type + Assertions.assertEquals(strats.stream().filter((s2) -> s2.getClass().equals(s.getClass())).count(), + newStrats.stream().filter((ns) -> ns.getClass().equals(s.getClass())).count()); + } + } else { + Assertions.assertFalse(newInit.isAdapted()); + } + } + + /** + * Checks if similarity checking causes issues, if the {@link EObject} instances + * on both sides are not properly initialised.
+ *
+ * Only non-adapted initialisers are used, since the generated instances should + * not be initialised. + */ + @ParameterizedTest + @Disabled("Disabled till null pointer exceptions are fixed") + @MethodSource("provideNonAdaptedInitialisers") + public void test_IsSimilar_Uninitialised_ObjectsEqual(IJaMoPPEObjectInitialiser initialiser) { + var obj1 = initialiser.instantiate(); + var obj2 = initialiser.instantiate(); + + this.assertIsSimilar(obj1, obj2); + } + + /** + * Checks if two minimally initialised {@link EObject} instances are + * similar.
+ *
+ * Only adapted initialisers are used, since the generated instances should be + * initialised. + */ + @ParameterizedTest + @MethodSource("provideAdaptedInitialisers") + public void test_IsSimilar_Initialised_ObjectsEqual(IJaMoPPEObjectInitialiser initialiser) { + var obj11 = this.instantiateAndInitialise(initialiser); + var obj12 = this.instantiateAndInitialise(initialiser); + + this.assertIsSimilar(obj11, obj12); + } + + /** + * Checks if the same {@link EObject} instance is similar to itself. + */ + @ParameterizedTest + @MethodSource("provideAllInitialisers") + public void test_IsSimilar_SameReference(IJaMoPPEObjectInitialiser initialiser) { + var obj11 = initialiser.instantiate(); + + this.assertIsSimilar(obj11, obj11); + } + + /** + * Checks if an {@link EObject} instance is similar to its clone. + */ + @ParameterizedTest + @Disabled("Disabled till null pointer exceptions are fixed") + @MethodSource("provideAllInitialisers") + public void test_IsSimilar_CloneEqual(IJaMoPPEObjectInitialiser initialiser) { + var obj11 = initialiser.instantiate(); + var objClone = this.cloneEObj(obj11); + + this.assertIsSimilar(obj11, objClone); + } + + /** + * Checks whether similarity checking causes issues, if one side is null. + */ + @Test + public void test_IsSimilar_OneSide_Null() { + var initialiser = new ModuleInitialiser(); + var obj = initialiser.instantiate(); + + this.assertIsSimilar(null, obj, Boolean.FALSE); + } + + /** + * Checks whether similarity checking causes issues, if both sides are null. + */ + @Test + public void test_IsSimilar_BothSides_Null() { + this.assertIsSimilar(null, null); + } + + /** + * Checks if two {@link EObject} instances that implement different interfaces + * are not similar. + */ + @Test + public void test_IsSimilar_ClassMismatch() { + var mod = new ModuleInitialiser().instantiate(); + var pac = new PackageInitialiser().instantiate(); + + this.assertIsSimilar(mod, pac, Boolean.FALSE); + } + + /** + * Checks whether similarity checking causes issues, if 2 lists each with 1 + * {@link EObject} instance cause issues, where the mentioned instances are not + * initialised properly.
+ *
+ * Only non-adapted initialisers are used, since the generated instances should + * not be initialised. + */ + @ParameterizedTest + @Disabled("Disabled till null pointer exceptions are fixed") + @MethodSource("provideNonAdaptedInitialisers") + public void test_AreSimilar_Uninitialised_SingleObject(IJaMoPPEObjectInitialiser initialiser) { + var obj1 = initialiser.instantiate(); + var obj2 = initialiser.instantiate(); + + this.assertAreSimilar(this.toList(obj1), this.toList(obj2)); + } + + /** + * Checks if similarity checking causes issues, if 2 lists each with 2 + * {@link EObject} instance cause issues, where the mentioned {@link EObject} + * instances are not initialised properly.
+ *
+ * Only non-adapted initialisers are used, since the generated instances should + * not be initialised. + */ + @ParameterizedTest + @Disabled("Disabled till null pointer exceptions are fixed") + @MethodSource("provideNonAdaptedInitialisers") + public void test_AreSimilar_Uninitialised_MultipleObjects(IJaMoPPEObjectInitialiser initialiser) { + var obj11 = initialiser.instantiate(); + var obj12 = initialiser.instantiate(); + var obj21 = initialiser.instantiate(); + var obj22 = initialiser.instantiate(); + + this.assertAreSimilar(this.toList(obj11, obj12), this.toList(obj21, obj22)); + } + + /** + * Checks whether similarity checking causes issues, if 2 lists each with 1 + * {@link EObject} instance cause issues, where the mentioned instances are not + * initialised properly.
+ *
+ * Only adapted initialisers are used, since the generated instances should be + * initialised. + */ + @ParameterizedTest + @MethodSource("provideAdaptedInitialisers") + public void test_AreSimilar_Initialised_SingleObject(IJaMoPPEObjectInitialiser initialiser) { + var obj1 = this.instantiateAndInitialise(initialiser); + var obj2 = this.instantiateAndInitialise(initialiser); + + this.assertAreSimilar(this.toList(obj1), this.toList(obj2)); + } + + /** + * Checks if similarity checking causes issues, if 2 lists each with 2 + * {@link EObject} instance cause issues, where the mentioned {@link EObject} + * instances are not initialised properly.
+ *
+ * Only adapted initialisers are used, since the generated instances should be + * initialised. + */ + @ParameterizedTest + @MethodSource("provideAdaptedInitialisers") + public void test_AreSimilar_Initialised_MultipleObjects(IJaMoPPEObjectInitialiser initialiser) { + var obj11 = this.instantiateAndInitialise(initialiser); + var obj12 = this.instantiateAndInitialise(initialiser); + var obj21 = this.instantiateAndInitialise(initialiser); + var obj22 = this.instantiateAndInitialise(initialiser); + + this.assertAreSimilar(this.toList(obj11, obj12), this.toList(obj21, obj22)); + } + + /** + * Checks if similarity checking returns true, when a list is compared to + * itself. The said list contains one {@link EObject} instance. + */ + @ParameterizedTest + @MethodSource("provideNonAdaptedInitialisers") + public void test_AreSimilar_SingleObject_SameReference(IJaMoPPEObjectInitialiser initialiser) { + var obj = initialiser.instantiate(); + var list = this.toList(obj); + + this.assertAreSimilar(list, list); + } + + /** + * Checks if a list containing only an {@link EObject} instance is similar to + * another list that contains only a clone of that {@link EObject} instance. + */ + @ParameterizedTest + @Disabled("Disabled till null pointer exceptions are fixed") + @MethodSource("provideAllInitialisers") + public void test_AreSimilar_SingleObject_CloneEqual(IJaMoPPEObjectInitialiser initialiser) { + var obj = initialiser.instantiate(); + var objCopy = this.cloneEObj(obj); + + this.assertAreSimilar(this.toList(obj), this.toList(objCopy)); + } + + /** + * Checks if similarity checking returns true, when a list is compared to + * itself. The said list contains two different {@link EObject} instances. + */ + @Test + public void test_AreSimilar_MultipleObjects_SameReference() { + var modInit = new ModuleInitialiser(); + + var obj1 = modInit.instantiate(); + Assertions.assertTrue(modInit.setName(obj1, "mod1")); + + var obj2 = modInit.instantiate(); + Assertions.assertTrue(modInit.setName(obj2, "mod2")); + + // Make sure both objects are different + this.assertIsSimilar(obj1, obj2, Boolean.FALSE); + + var list = this.toList(obj1, obj2); + + this.assertAreSimilar(list, list); + } + + /** + * Checks if a list containing 2 different {@link EObject} instances is similar + * to another list that is its clone. + */ + @Test + public void test_AreSimilar_MultipleObjects_CloneEqual() { + var initialiser = new ModuleInitialiser(); + + var obj1 = initialiser.instantiate(); + Assertions.assertTrue(initialiser.setName(obj1, "mod1")); + + var obj2 = initialiser.instantiate(); + Assertions.assertTrue(initialiser.setName(obj2, "mod2")); + + // Make sure both objects are different + this.assertIsSimilar(obj1, obj2, Boolean.FALSE); + + var obj1Copy = this.cloneEObj(obj1); + var obj2Copy = this.cloneEObj(obj2); + + this.assertAreSimilar(this.toList(obj1, obj2), this.toList(obj1Copy, obj2Copy)); + } + + /** + * Checks if similarity checking lists of {@link EObject} instances causes + * issues, if one side is null. + */ + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void test_AreSimilar_OneSide_Null() { + var initialiser = new ModuleInitialiser(); + var obj = initialiser.instantiate(); + + this.assertAreSimilar(null, this.toList(obj), Boolean.FALSE); + } + + /** + * Checks if two lists, where one list is empty and the other one is not, are + * not similar. + */ + @ParameterizedTest + @MethodSource("provideNonAdaptedInitialisers") + public void test_AreSimilar_OneSide_EmptyList(IJaMoPPEObjectInitialiser initialiser) { + var obj = initialiser.instantiate(); + + this.assertAreSimilar(this.toList(), this.toList(obj), Boolean.FALSE); + } + + /** + * Checks if similarity checking lists of {@link EObject} instances causes + * issues, if one of the lists contains a null element. + */ + @Test + public void test_AreSimilar_OneSide_ListWithNullElement() { + var initialiser = new ModuleInitialiser(); + var obj = initialiser.instantiate(); + + this.assertAreSimilar(this.toList(obj), this.makeListWithSingleNullElement(), Boolean.FALSE); + } + + /** + * Checks if two lists, where one of them is a sublist of another, are not + * similar. + */ + @Test + public void test_AreSimilar_OneSide_SubList() { + var modInit = new ModuleInitialiser(); + + var obj1 = modInit.instantiate(); + Assertions.assertTrue(modInit.setName(obj1, "mod1")); + + var obj2 = modInit.instantiate(); + Assertions.assertTrue(modInit.setName(obj2, "mod2")); + + // Make sure both objects are different + this.assertIsSimilar(obj1, obj2, Boolean.FALSE); + + this.assertAreSimilar(this.toList(obj1), this.toList(obj1, obj2), Boolean.FALSE); + } + + /** + * Checks if similarity checking lists of {@link EObject} instances causes + * issues, if both sides are null. + */ + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void test_AreSimilar_BothSides_Null() { + this.assertAreSimilar(null, null); + } + + /** + * Checks if two empty lists are similar. + */ + @Test + public void test_AreSimilar_BothSides_EmptyList() { + Assertions.assertTrue(this.areSimilar(this.toList(), this.toList())); + } + + /** + * Checks if similarity checking lists of {@link EObject} instances causes + * issues, if both lists each contain a null element. + */ + @Test + public void test_AreSimilar_BothSides_ListsWithNullElement() { + this.assertAreSimilar(this.makeListWithSingleNullElement(), this.makeListWithSingleNullElement()); + } + + /** + * Checks whether lists with the same size, same elements (clones of them) but + * in different order are successfully identified as different.
+ *
+ * Implemented by cloning and comparing 2 + * {@link org.emftext.language.java.containers.Module}. + */ + @Test + public void test_AreSimilar_SameObjectDifferentOrder() { + var modInit = new ModuleInitialiser(); + + var obj1 = modInit.instantiate(); + Assertions.assertTrue(modInit.setName(obj1, "mod1")); + + var obj2 = modInit.instantiate(); + Assertions.assertTrue(modInit.setName(obj2, "mod2")); + + // Make sure both objects are different + this.assertIsSimilar(obj1, obj2, Boolean.FALSE); + + this.assertAreSimilar(this.toList(obj1, obj2), this.toList(obj2, obj1), Boolean.FALSE); + } + + /** + * Checks if two {@link EObject} instances that implement different interfaces + * are not similar. + */ + @Test + public void test_AreSimilar_ClassMismatch() { + var mod = new ModuleInitialiser().instantiate(); + var pac = new PackageInitialiser().instantiate(); + + this.assertAreSimilar(this.toList(mod), this.toList(pac), Boolean.FALSE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/SPLevoModelsSimilarityTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/SPLevoModelsSimilarityTest.java new file mode 100644 index 0000000000..835b9207a6 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/SPLevoModelsSimilarityTest.java @@ -0,0 +1,373 @@ +package cipm.consistency.fitests.similarity.jamopp; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Collection; +import java.util.TreeSet; +import java.util.stream.Stream; + +import org.apache.log4j.Logger; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import jamopp.options.ParserOptions; +import jamopp.parser.jdt.singlefile.JaMoPPJDTSingleFileParser; + +/** + * A test class that attempts to parse and check similarity of {@link Resource} + * files. + * + * @author Alp Torac Genc + */ +public class SPLevoModelsSimilarityTest extends AbstractJaMoPPSimilarityTest { + private static final Logger LOGGER = Logger.getLogger("cipm." + SPLevoModelsSimilarityTest.class.getSimpleName()); + + /** + * The name of the root directory of the models from SPLevo + */ + private static final String splevoModelImplDirName = "splevo-testmodels"; + /** + * Path to the root folder of the models from SPLevo + */ + private static final String splevoModelImplPath = new File("").getAbsoluteFile().getAbsolutePath() + File.separator + + splevoModelImplDirName; + + /** + * List of the parent directory of the directories {@link #model1Name} and + * {@link #model2Name}. + */ + private static final Collection modelDirs = new ArrayList(); + + /** + * The first model to parse. + */ + private static final String model1Name = "a"; + /** + * The second model to parse. + */ + private static final String model2Name = "b"; + + /** + * The path, at which the resource file's URI will point at. + */ + private static Path targetPath = Path + .of(new File("").getAbsoluteFile().getAbsolutePath() + File.separator + "testModels"); + + /** + * Discovers the sub-directories under the root folder of SPLevo tests, which + * contain Java source files in folders with certain names, and adds them to a + * list. + */ + @BeforeAll + public static void setUpBeforeAll() { + modelDirs.addAll(discoverFiles(new File(splevoModelImplPath))); + } + + /** + * Reads the given file and removes line breaks and whitespaces. + */ + private static String readEffectiveCode(File f) throws IOException { + var content = Files.readString(f.toPath()); + + return content.replaceAll("\\n", "").replaceAll("\\r", "").replaceAll("\\s", ""); + } + + /** + * Compares the equality of the given files based on their effective content. + * + * @see {@link #readEffectiveCode(File)} + */ + private static boolean filesEqual(File f1, File f2) throws IOException { + var f1Content = readEffectiveCode(f1); + var f2Content = readEffectiveCode(f2); + + return f1Content.equals(f2Content); + } + + /** + * Recursively checks the equality of the given directories, based on their + * content (i.e. the files/sub-directories they contain and the contents of + * those files). + * + * @see {@link #filesEqual(File, File)}, {@link #readEffectiveCode(File)} + */ + private static boolean dirsEqual(File dir1, File dir2) throws IOException { + LOGGER.debug("Comparing: " + dir1.getName() + " and " + dir2.getName()); + + // There cannot be 2 files with the same path, name and extension + // so using TreeSet, which sorts the files spares doing so here + var files1 = new TreeSet(); + var files2 = new TreeSet(); + + for (var f : dir1.listFiles()) { + files1.add(f); + } + + for (var f : dir2.listFiles()) { + files2.add(f); + } + + if (files1.size() != files2.size()) { + return false; + } + + var fileIter1 = files1.iterator(); + var fileIter2 = files2.iterator(); + + for (int i = 0; i < files1.size(); i++) { + var f1 = fileIter1.next(); + var f2 = fileIter2.next(); + + if (f1.isDirectory() && f2.isDirectory()) { + if (!dirsEqual(f1, f2)) { + LOGGER.debug("Directories " + f1.getName() + " and " + f2.getName() + " are not equal"); + return false; + } + } else if (f1.isFile() && f2.isFile()) { + if (!filesEqual(f1, f2)) { + LOGGER.debug("Files " + f1.getName() + " and " + f2.getName() + " are not equal"); + return false; + } + } else { + LOGGER.debug("Unexpected case there is a file and a directory"); + return false; + } + } + + return true; + } + + /** + * Parses all Java-Model files under the given directory into a {@link Resource} + * instance. + * + * Note: This method will parse ALL such files. Therefore, the given model + * directory should only contain one Java-Model. + * + * @param modelDir The directory that contains the Java-model files + */ + private static Resource parseModelsDir(Path modelDir) { + // Leave out commented options + ParserOptions.CREATE_LAYOUT_INFORMATION.setValue(Boolean.FALSE); + ParserOptions.REGISTER_LOCAL.setValue(Boolean.TRUE); +// ParserOptions.RESOLVE_EVERYTHING.setValue(Boolean.TRUE); +// ParserOptions.RESOLVE_ALL_BINDINGS.setValue(Boolean.TRUE); + + JaMoPPJDTSingleFileParser parser = new JaMoPPJDTSingleFileParser(); + parser.setResourceSet(new ResourceSetImpl()); + ResourceSet resourceSet = parser.parseDirectory(modelDir); + + ResourceSet next = new ResourceSetImpl(); + Resource all = next.createResource(URI.createFileURI(targetPath.toAbsolutePath().toString())); + + var filteredResources = new ArrayList(); + resourceSet.getResources().stream().filter((r) -> r.getURI().path().contains(splevoModelImplDirName)) + .forEach((r) -> filteredResources.add(r)); + + for (Resource r : filteredResources) { + // Filter Resources in ResourceSet that belong in the modelDir (based on URI) + all.getContents().addAll(r.getContents()); + } + return all; + } + + /** + * Recursively searches for directories that contain Java-model files. All + * directories with pre-defined model names (currently {@link #model1Name} and + * {@link #model2name}) will be added to foundModelDirs, if not already there. + * + * @param dirToDiscover The directory, where the recursive search will begin + * @param foundModelDirs A collection of directories that contain Java-model + * files + */ + private static void discoverFiles(File dirToDiscover, Collection foundModelDirs) { + if (dirToDiscover != null && dirToDiscover.isDirectory()) { + var discovered = new ArrayList(); + + for (var f : dirToDiscover.listFiles()) { + if (!f.getName().equals(model1Name) && !f.getName().equals(model2Name)) { + discovered.add(f); + } else if (!foundModelDirs.contains(dirToDiscover.toPath())) { + foundModelDirs.add(dirToDiscover.toPath()); + } + } + + discovered.forEach((d) -> discoverFiles(d, foundModelDirs)); + } + } + + /** + * Recursively searches for directories containing Java-Model files, starting + * from the given directory, and returns a list of all such directories. + */ + private static Collection discoverFiles(File dirToDiscover) { + var foundModelDirs = new ArrayList(); + discoverFiles(dirToDiscover, foundModelDirs); + return foundModelDirs; + } + + private static String getDisplayName(Path path) { + var nameCount = path.getNameCount(); + + var startIndex = nameCount > 2 ? nameCount - 2 : nameCount - 1; + var endIndex = nameCount; + + return path.subpath(startIndex, endIndex).toString(); + } + + /** + * Creates and returns parameters for + * {@link #sameResourceSimilarityTest(Resource, Resource, Boolean, String)}. + */ + private static Stream generateReferenceEqualityTestParams() { + var args = new ArrayList(); + + modelDirs.forEach((md) -> { + var model1Path = Paths.get(md.toString(), model1Name); + var model2Path = Paths.get(md.toString(), model2Name); + + var res1 = parseModelsDir(model1Path); + var res2 = parseModelsDir(model2Path); + + args.add(Arguments.of(res1, res1, true, getDisplayName(model1Path))); + args.add(Arguments.of(res2, res2, true, getDisplayName(model2Path))); + }); + + return args.stream(); + } + + /** + * Creates and returns parameters for + * {@link #sameFileSimilarityTest(Resource, Resource, Boolean, String)}. + */ + private static Stream generateEqualityTestParams() { + var args = new ArrayList(); + + modelDirs.forEach((md) -> { + var model1Path = Paths.get(md.toString(), model1Name); + var model2Path = Paths.get(md.toString(), model2Name); + + var res11 = parseModelsDir(model1Path); + var res12 = parseModelsDir(model1Path); + + var res21 = parseModelsDir(model2Path); + var res22 = parseModelsDir(model2Path); + + args.add(Arguments.of(res11, res12, true, getDisplayName(model1Path))); + args.add(Arguments.of(res21, res22, true, getDisplayName(model2Path))); + }); + + return args.stream(); + } + + /** + * Creates and returns parameters for + * {@link #differentFileSimilarityTest(Resource, Resource, Boolean, String)}. + */ + private static Stream generateUnsimilarityTestParams() { + var args = new ArrayList(); + + modelDirs.forEach((md) -> { + var modelDirName = md.getName(md.getNameCount() - 1).toString(); + + var model1Path = Paths.get(md.toString(), model1Name); + var model2Path = Paths.get(md.toString(), model2Name); + + var contentEquality = false; + + try { + contentEquality = dirsEqual(model1Path.toFile(), model2Path.toFile()); + } catch (IOException e) { + LOGGER.debug("Could not read paths: " + model1Path.toString() + " and " + model2Path.toString()); + Assertions.fail(); + } + + LOGGER.debug(md.getFileName() + " contents equal: " + contentEquality); + + var res1 = parseModelsDir(model1Path); + var res2 = parseModelsDir(model2Path); + + args.add(Arguments.of(res1, res2, contentEquality, + modelDirName + " (" + model1Name + " and " + model2Name + ")")); + }); + + return args.stream(); + } + + /** + * Checks whether the given {@link Resource} instances are similar, based on + * {@code res_i.getAllContents()} + */ + protected void testSimilarity(Resource res1, Resource res2, Boolean areSimilar) { + var list1 = new ArrayList(); + var list2 = new ArrayList(); + + // Java files, which are not in proper project settings, + // can result in similarity checking issues, if resource.getContents() + // is used to return the EObject contents. + // getAllContents() bypasses this, as it makes sure that everything + // is visited. + res1.getAllContents().forEachRemaining((o) -> list1.add(o)); + res2.getAllContents().forEachRemaining((o) -> list2.add(o)); + + Assertions.assertEquals(areSimilar, this.areSimilar(list1, list2)); + } + + /** + * Checks if parsed {@link Resource} instances are detected as similar. Checks + * the similarity of res1 with itself (same reference) and res2 with itself + * (same reference). + * + * @param res1 The first {@link Resource} instance + * @param res2 The second {@link Resource} instance + * @param areSimilar Expected similarity value + * @param displayName The display name of the test + */ + @ParameterizedTest(name = "{3}") + @MethodSource({ "generateReferenceEqualityTestParams" }) + public void sameResourceSimilarityTest(Resource res1, Resource res2, Boolean areSimilar, String displayName) { + this.testSimilarity(res1, res2, areSimilar); + } + + /** + * Checks if parsed {@link Resource} instances are detected as similar. Checks + * the similarity of res1 with its clone and res2 with its clone. + * + * @param res1 The first {@link Resource} instance + * @param res2 The second {@link Resource} instance + * @param areSimilar Expected similarity value + * @param displayName The display name of the test + */ + @ParameterizedTest(name = "{3}") + @MethodSource({ "generateEqualityTestParams" }) + public void sameFileSimilarityTest(Resource res1, Resource res2, Boolean areSimilar, String displayName) { + this.testSimilarity(res1, res2, areSimilar); + } + + /** + * Checks if parsed {@link Resource} instances are detected as similar. Checks + * the similarity of res1 with res2. + * + * @param res1 The first {@link Resource} instance + * @param res2 The second {@link Resource} instance + * @param areSimilar Expected similarity value + * @param displayName The display name of the test + */ + @ParameterizedTest(name = "{3}") + @MethodSource({ "generateUnsimilarityTestParams" }) + public void differentFileSimilarityTest(Resource res1, Resource res2, Boolean areSimilar, String displayName) { + this.testSimilarity(res1, res2, areSimilar); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/package-info.java new file mode 100644 index 0000000000..a940456970 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/package-info.java @@ -0,0 +1,6 @@ +/** + * Contains test classes that can be used to test the similarity checking of + * Java-model elements, which are stored and represented by {@link EObject} + * implementors present in JaMoPP. + */ +package cipm.consistency.fitests.similarity.jamopp; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameterAdaptationStrategy.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameterAdaptationStrategy.java new file mode 100644 index 0000000000..2169814275 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameterAdaptationStrategy.java @@ -0,0 +1,58 @@ +package cipm.consistency.fitests.similarity.jamopp.params; + +import cipm.consistency.initialisers.IInitialiserBase; +import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser; +import cipm.consistency.initialisers.jamopp.classifiers.IConcreteClassifierInitialiser; +import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser; +import cipm.consistency.initialisers.jamopp.containers.CompilationUnitInitialiser; +import cipm.consistency.initialisers.jamopp.initadapters.BlockContainerInitialiserAdapter; +import cipm.consistency.initialisers.jamopp.initadapters.ClassMethodInitialiserAdapter; +import cipm.consistency.initialisers.jamopp.initadapters.ConcreteClassifierInitialiserAdapter; +import cipm.consistency.initialisers.jamopp.initadapters.IdentifierReferenceInitialiserAdapter; +import cipm.consistency.initialisers.jamopp.initadapters.MemberInitialiserAdapter; +import cipm.consistency.initialisers.jamopp.initadapters.NamedElementInitialiserAdapter; +import cipm.consistency.initialisers.jamopp.initadapters.NewConstructorCallInitialiserAdapter; +import cipm.consistency.initialisers.jamopp.instantiations.INewConstructorCallInitialiser; +import cipm.consistency.initialisers.jamopp.members.IClassMethodInitialiser; +import cipm.consistency.initialisers.jamopp.members.IMemberInitialiser; +import cipm.consistency.initialisers.jamopp.references.IIdentifierReferenceInitialiser; +import cipm.consistency.initialisers.jamopp.statements.BlockInitialiser; +import cipm.consistency.initialisers.jamopp.statements.IBlockContainerInitialiser; +import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser; +import cipm.consistency.fitests.similarity.params.IInitialiserParameterAdaptationStrategy; + +/** + * A concrete implementation of {@link IInitialiserParameterAdaptationStrategy}. + *
+ *
+ * Adapts the given {@link IInitialiserBase} instances in a way that interface + * tests can run without exceptions being thrown, due to objects they + * instantiate missing certain components. + */ +public class JaMoPPInitialiserParameterAdaptationStrategy implements IInitialiserParameterAdaptationStrategy { + @Override + public void adaptAdaptableInitialiser(IInitialiserBase init) { + if (INamedElementInitialiser.class.isAssignableFrom(init.getClass())) { + init.addAdaptingStrategy(new NamedElementInitialiserAdapter()); + } + if (IBlockContainerInitialiser.class.isAssignableFrom(init.getClass())) { + init.addAdaptingStrategy(new BlockContainerInitialiserAdapter(new BlockInitialiser())); + } + if (IMemberInitialiser.class.isAssignableFrom(init.getClass())) { + init.addAdaptingStrategy(new MemberInitialiserAdapter(new ClassInitialiser())); + } + if (IConcreteClassifierInitialiser.class.isAssignableFrom(init.getClass())) { + init.addAdaptingStrategy(new ConcreteClassifierInitialiserAdapter(new CompilationUnitInitialiser())); + } + if (INewConstructorCallInitialiser.class.isAssignableFrom(init.getClass())) { + init.addAdaptingStrategy(new NewConstructorCallInitialiserAdapter(new ClassifierReferenceInitialiser(), + new ClassInitialiser())); + } + if (IClassMethodInitialiser.class.isAssignableFrom(init.getClass())) { + init.addAdaptingStrategy(new ClassMethodInitialiserAdapter(new BlockInitialiser())); + } + if (IIdentifierReferenceInitialiser.class.isAssignableFrom(init.getClass())) { + init.addAdaptingStrategy(new IdentifierReferenceInitialiserAdapter()); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameters.java new file mode 100644 index 0000000000..40a26892e0 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPInitialiserParameters.java @@ -0,0 +1,23 @@ +package cipm.consistency.fitests.similarity.jamopp.params; + +import cipm.consistency.initialisers.IInitialiserPackage; +import cipm.consistency.initialisers.jamopp.JaMoPPInitialiserPackage; +import cipm.consistency.fitests.similarity.params.IInitialiserParameterAdaptationStrategy; +import cipm.consistency.fitests.similarity.params.IInitialiserParameters; + +/** + * A class that provides central access to concrete initialiser instances. + * + * @author Alp Torac Genc + */ +public class JaMoPPInitialiserParameters implements IInitialiserParameters { + @Override + public IInitialiserPackage getUsedInitialiserPackage() { + return new JaMoPPInitialiserPackage(); + } + + @Override + public IInitialiserParameterAdaptationStrategy getAdaptationStrategy() { + return new JaMoPPInitialiserParameterAdaptationStrategy(); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPSimilarityValues.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPSimilarityValues.java new file mode 100644 index 0000000000..c52d700499 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/JaMoPPSimilarityValues.java @@ -0,0 +1,296 @@ +package cipm.consistency.fitests.similarity.jamopp.params; + +import org.eclipse.emf.ecore.EStructuralFeature; +import org.emftext.language.java.annotations.AnnotationsPackage; +import org.emftext.language.java.arrays.ArrayInstantiation; +import org.emftext.language.java.arrays.ArraysPackage; +import org.emftext.language.java.classifiers.ClassifiersPackage; +import org.emftext.language.java.commons.CommonsPackage; +import org.emftext.language.java.containers.ContainersPackage; +import org.emftext.language.java.containers.Module; +import org.emftext.language.java.containers.EmptyModel; +import org.emftext.language.java.containers.Package; +import org.emftext.language.java.expressions.ExplicitlyTypedLambdaParameters; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.ImplicitlyTypedLambdaParameters; +import org.emftext.language.java.expressions.InstanceOfExpression; +import org.emftext.language.java.expressions.NestedExpression; +import org.emftext.language.java.expressions.SingleImplicitLambdaParameter; +import org.emftext.language.java.generics.GenericsPackage; +import org.emftext.language.java.generics.QualifiedTypeArgument; +import org.emftext.language.java.imports.ClassifierImport; +import org.emftext.language.java.imports.ImportsPackage; +import org.emftext.language.java.imports.PackageImport; +import org.emftext.language.java.imports.StaticClassifierImport; +import org.emftext.language.java.instantiations.Instantiation; +import org.emftext.language.java.instantiations.InstantiationsPackage; +import org.emftext.language.java.instantiations.NewConstructorCall; +import org.emftext.language.java.instantiations.NewConstructorCallWithInferredTypeArguments; +import org.emftext.language.java.members.AdditionalField; +import org.emftext.language.java.members.EnumConstant; +import org.emftext.language.java.members.MembersPackage; +import org.emftext.language.java.modifiers.ModifiersPackage; +import org.emftext.language.java.modules.ModulesPackage; +import org.emftext.language.java.modules.ProvidesModuleDirective; +import org.emftext.language.java.modules.UsesModuleDirective; +import org.emftext.language.java.parameters.ParametersPackage; +import org.emftext.language.java.references.MethodCall; +import org.emftext.language.java.references.PackageReference; +import org.emftext.language.java.references.PrimitiveTypeReference; +import org.emftext.language.java.references.ReferencesPackage; +import org.emftext.language.java.references.ReflectiveClassReference; +import org.emftext.language.java.references.SelfReference; +import org.emftext.language.java.references.StringReference; +import org.emftext.language.java.references.TextBlockReference; +import org.emftext.language.java.statements.Block; +import org.emftext.language.java.statements.StatementListContainer; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.types.InferableType; +import org.emftext.language.java.types.PrimitiveType; +import org.emftext.language.java.types.TypesPackage; +import org.emftext.language.java.variables.VariablesPackage; + +import cipm.consistency.fitests.similarity.params.AbstractSimilarityValues; +import cipm.consistency.fitests.similarity.params.ISimilarityValues; + +/** + * Contains expected similarity values for tests, in which a certain attribute + * is different.
+ *
+ * Entries for directly matching entries will take precedence over entries of + * their parent types. If the behaviour of a certain type differs from its + * parents' and/or sibling types, an entry can be created to account for it. + * This spares having to create explicit entries for everything in a part of the + * hierarchy, if there are small deviations.
+ *
+ * To spare creating entries for every possibility, a default similarity value + * can be defined by using {@link #setDefaultSimilarityResult(Boolean)}. If + * there are no entries for a specific attribute, the default similarity value + * will be assumed. The default value is null, if not explicitly defined. + * + * @see {@link ISimilarityValues} for more information on the methods used + * below. + * @see {@link AbstractSimilarityValues} + */ +public class JaMoPPSimilarityValues extends AbstractSimilarityValues { + public void addAnnotationsSimilarityEntries() { + this.addSimilarityEntry(AnnotationsPackage.Literals.ANNOTABLE__ANNOTATIONS, Boolean.TRUE); + this.addSimilarityEntry(AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__VALUE, Boolean.TRUE); + this.addSimilarityEntry(AnnotationsPackage.Literals.ANNOTATION_INSTANCE__PARAMETER, Boolean.TRUE); + this.addSimilarityEntry(AnnotationsPackage.Literals.ANNOTATION_PARAMETER_LIST__SETTINGS, Boolean.TRUE); + this.addSimilarityEntry(AnnotationsPackage.Literals.SINGLE_ANNOTATION_PARAMETER__VALUE, Boolean.TRUE); + } + + public void addArraysSimilarityEntries() { + this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_INITIALIZER__INITIAL_VALUES, Boolean.TRUE); + this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_SIZE__SIZES, Boolean.TRUE); + this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_VALUES__ARRAY_INITIALIZER, Boolean.TRUE); + this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_SELECTOR__POSITION, Boolean.TRUE); + this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_AFTER, Boolean.TRUE); + this.addSimilarityEntry(ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_BEFORE, Boolean.TRUE); + } + + public void addContainersSimilarityEntries() { + this.addSimilarityEntry(ContainersPackage.Literals.COMPILATION_UNIT__CLASSIFIERS, Boolean.TRUE); + this.addSimilarityEntry(ContainersPackage.Literals.MODULE__OPEN, Boolean.TRUE); + this.addSimilarityEntry(ContainersPackage.Literals.MODULE__PACKAGES, Boolean.TRUE); + this.addSimilarityEntry(ContainersPackage.Literals.MODULE__TARGET, Boolean.TRUE); + this.addSimilarityEntry(ContainersPackage.Literals.PACKAGE__CLASSIFIERS, Boolean.TRUE); + this.addSimilarityEntry(ContainersPackage.Literals.PACKAGE__MODULE, Boolean.TRUE); + this.addSimilarityEntry(ContainersPackage.Literals.JAVA_ROOT__ORIGIN, Boolean.TRUE); + } + + public void addCommonsSimilarityEntries() { + this.addSimilarityEntry(new Class[] { AdditionalField.class, Package.class, Block.class }, + CommonsPackage.Literals.NAMED_ELEMENT__NAME, Boolean.TRUE); + this.addSimilarityEntry(new Class[] { PackageImport.class, StaticClassifierImport.class, Module.class }, + CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES, Boolean.TRUE); + this.addSimilarityEntry(new Class[] { EmptyModel.class, PackageReference.class }, + new EStructuralFeature[] { CommonsPackage.Literals.NAMED_ELEMENT__NAME, + CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES }, + new Boolean[] { Boolean.TRUE, Boolean.TRUE }); + } + + public void addClassifiersSimilarityEntries() { + this.addSimilarityEntry(ClassifiersPackage.Literals.CLASS__DEFAULT_EXTENDS, Boolean.TRUE); + this.addSimilarityEntry(ClassifiersPackage.Literals.CLASS__EXTENDS, Boolean.TRUE); + this.addSimilarityEntry(ClassifiersPackage.Literals.CONCRETE_CLASSIFIER__PACKAGE, Boolean.TRUE); + this.addSimilarityEntry(ClassifiersPackage.Literals.ENUMERATION__CONSTANTS, Boolean.TRUE); + this.addSimilarityEntry(ClassifiersPackage.Literals.IMPLEMENTOR__IMPLEMENTS, Boolean.TRUE); + this.addSimilarityEntry(ClassifiersPackage.Literals.INTERFACE__DEFAULT_EXTENDS, Boolean.TRUE); + this.addSimilarityEntry(ClassifiersPackage.Literals.INTERFACE__EXTENDS, Boolean.TRUE); + } + + public void addExpressionsSimilarityEntries() { + this.addSimilarityEntry(ExpressionsPackage.Literals.CAST_EXPRESSION__ADDITIONAL_BOUNDS, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.CAST_EXPRESSION__GENERAL_CHILD, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__EXPRESSION_IF, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__GENERAL_EXPRESSION_ELSE, + Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.EXCLUSIVE_OR_EXPRESSION__CHILDREN, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.EXPRESSION_LIST__EXPRESSIONS, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.INCLUSIVE_OR_EXPRESSION__CHILDREN, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__CHILDREN, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS, + Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__CHILD, + Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__METHOD_REFERENCE, + Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.SHIFT_EXPRESSION__CHILDREN, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.SHIFT_EXPRESSION__SHIFT_OPERATORS, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__CHILD, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__OPERATOR, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.LAMBDA_EXPRESSION__BODY, Boolean.TRUE); + this.addSimilarityEntry(ExpressionsPackage.Literals.LAMBDA_EXPRESSION__PARAMETERS, Boolean.TRUE); + } + + public void addGenericsSimilarityEntries() { + this.addSimilarityEntry(GenericsPackage.Literals.CALL_TYPE_ARGUMENTABLE__CALL_TYPE_ARGUMENTS, Boolean.TRUE); + this.addSimilarityEntry(GenericsPackage.Literals.TYPE_ARGUMENTABLE__TYPE_ARGUMENTS, Boolean.TRUE); + this.addSimilarityEntry(GenericsPackage.Literals.TYPE_PARAMETRIZABLE__TYPE_PARAMETERS, Boolean.TRUE); + } + + public void addInstantiationsSimilarityEntries() { + this.addSimilarityEntry(InstantiationsPackage.Literals.NEW_CONSTRUCTOR_CALL__ANONYMOUS_CLASS, Boolean.TRUE); + this.addSimilarityEntry(InstantiationsPackage.Literals.INITIALIZABLE__INITIAL_VALUE, Boolean.TRUE); + } + + public void addImportsSimilarityEntries() { + this.addSimilarityEntry(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS, Boolean.TRUE); + this.addSimilarityEntry(ImportsPackage.Literals.IMPORT__CLASSIFIER, Boolean.TRUE); + this.addSimilarityEntry(ImportsPackage.Literals.STATIC_IMPORT__STATIC, Boolean.TRUE); + this.addSimilarityEntry(ClassifierImport.class, ImportsPackage.Literals.IMPORT__CLASSIFIER, Boolean.FALSE); + } + + public void addMembersSimilarityEntries() { + this.addSimilarityEntry(MembersPackage.Literals.ENUM_CONSTANT__ANONYMOUS_CLASS, Boolean.TRUE); + this.addSimilarityEntry(MembersPackage.Literals.FIELD__ADDITIONAL_FIELDS, Boolean.TRUE); + this.addSimilarityEntry(MembersPackage.Literals.INTERFACE_METHOD__DEFAULT_VALUE, Boolean.TRUE); + this.addSimilarityEntry(MembersPackage.Literals.EXCEPTION_THROWER__EXCEPTIONS, Boolean.TRUE); + this.addSimilarityEntry(MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS, Boolean.TRUE); + this.addSimilarityEntry(MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS, Boolean.TRUE); + } + + public void addModifiersSimilarityEntries() { + this.addSimilarityEntry(ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS, + Boolean.TRUE); + this.addSimilarityEntry(ModifiersPackage.Literals.MODIFIABLE__MODIFIERS, Boolean.TRUE); + } + + public void addModulesSimilarityEntries() { + this.addSimilarityEntry(ModulesPackage.Literals.MODULE_REFERENCE__TARGET, Boolean.TRUE); + this.addSimilarityEntry(ModulesPackage.Literals.PROVIDES_MODULE_DIRECTIVE__SERVICE_PROVIDERS, Boolean.TRUE); + this.addSimilarityEntry(ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__MODIFIER, Boolean.TRUE); + this.addSimilarityEntry(ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__ACCESSABLE_PACKAGE, + Boolean.TRUE); + this.addSimilarityEntry(ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__MODULES, Boolean.TRUE); + } + + public void addStatementsSimilarityEntries() { + this.addSimilarityEntry(StatementsPackage.Literals.ASSERT__ERROR_MESSAGE, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.CONDITION__ELSE_STATEMENT, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.FOR_EACH_LOOP__COLLECTION, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.FOR_EACH_LOOP__NEXT, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.FOR_LOOP__INIT, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.FOR_LOOP__UPDATES, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.NORMAL_SWITCH_CASE__ADDITIONAL_CONDITIONS, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.NORMAL_SWITCH_RULE__ADDITIONAL_CONDITIONS, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.SWITCH__CASES, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.THROW__THROWABLE, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.TRY_BLOCK__CATCH_BLOCKS, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.TRY_BLOCK__FINALLY_BLOCK, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.TRY_BLOCK__RESOURCES, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.YIELD_STATEMENT__YIELD_EXPRESSION, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.BLOCK_CONTAINER__BLOCK, Boolean.TRUE); + this.addSimilarityEntry(StatementsPackage.Literals.STATEMENT_CONTAINER__STATEMENT, Boolean.TRUE); + this.addSimilarityEntry(StatementListContainer.class, StatementsPackage.Literals.BLOCK__STATEMENTS, + Boolean.TRUE); + } + + public void addParametersSimilarityEntries() { + this.addSimilarityEntry(ParametersPackage.Literals.CATCH_PARAMETER__TYPE_REFERENCES, Boolean.TRUE); + this.addSimilarityEntry(ParametersPackage.Literals.RECEIVER_PARAMETER__THIS_REFERENCE, Boolean.TRUE); + this.addSimilarityEntry(ParametersPackage.Literals.RECEIVER_PARAMETER__OUTER_TYPE_REFERENCE, Boolean.TRUE); + this.addSimilarityEntry( + new Class[] { ExplicitlyTypedLambdaParameters.class, ImplicitlyTypedLambdaParameters.class, + SingleImplicitLambdaParameter.class }, + ParametersPackage.Literals.PARAMETRIZABLE__PARAMETERS, Boolean.TRUE); + } + + public void addReferencesSimilarityEntries() { + this.addSimilarityEntry(ReferencesPackage.Literals.PRIMITIVE_TYPE_REFERENCE__PRIMITIVE_TYPE, Boolean.TRUE); + this.addSimilarityEntry(ReferencesPackage.Literals.SELF_REFERENCE__SELF, Boolean.TRUE); + this.addSimilarityEntry(ReferencesPackage.Literals.TEXT_BLOCK_REFERENCE__VALUE, Boolean.TRUE); + this.addSimilarityEntry(ReferencesPackage.Literals.ELEMENT_REFERENCE__CONTAINED_TARGET, Boolean.TRUE); + this.addSimilarityEntry(EnumConstant.class, ReferencesPackage.Literals.ARGUMENTABLE__ARGUMENTS, Boolean.TRUE); + this.addSimilarityEntry(MethodCall.class, ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS, Boolean.TRUE); + this.addSimilarityEntry( + new Class[] { ArrayInstantiation.class, NestedExpression.class, Instantiation.class, + PrimitiveTypeReference.class, ReflectiveClassReference.class, SelfReference.class, + StringReference.class, TextBlockReference.class }, + new EStructuralFeature[] { ReferencesPackage.Literals.REFERENCE__NEXT, + ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS }, + new Boolean[] { Boolean.TRUE, Boolean.TRUE }); + } + + public void addTypesSimilarityEntries() { + this.addSimilarityEntry(new Class[] { InferableType.class, PrimitiveType.class }, + TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET, Boolean.TRUE); + this.addSimilarityEntry(TypesPackage.Literals.TYPED_ELEMENT_EXTENSION__ACTUAL_TARGETS, Boolean.TRUE); + this.addSimilarityEntry(TypesPackage.Literals.TYPED_ELEMENT__TYPE_REFERENCE, Boolean.TRUE); + this.addSimilarityEntry( + new Class[] { InstanceOfExpression.class, QualifiedTypeArgument.class, NewConstructorCall.class, + NewConstructorCallWithInferredTypeArguments.class, ProvidesModuleDirective.class, + UsesModuleDirective.class }, + TypesPackage.Literals.TYPED_ELEMENT__TYPE_REFERENCE, Boolean.FALSE); + } + + public void addVariablesSimilarityEntries() { + this.addSimilarityEntry(VariablesPackage.Literals.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES, Boolean.TRUE); + } + + public void setDefaultSimilarityResult() { + this.setDefaultSimilarityResult(Boolean.FALSE); + } + + public JaMoPPSimilarityValues() { + this.setDefaultSimilarityResult(); + + this.addAnnotationsSimilarityEntries(); + this.addArraysSimilarityEntries(); + this.addContainersSimilarityEntries(); + this.addCommonsSimilarityEntries(); + this.addClassifiersSimilarityEntries(); + this.addExpressionsSimilarityEntries(); + this.addGenericsSimilarityEntries(); + this.addInstantiationsSimilarityEntries(); + this.addImportsSimilarityEntries(); + this.addMembersSimilarityEntries(); + this.addModifiersSimilarityEntries(); + this.addModulesSimilarityEntries(); + this.addStatementsSimilarityEntries(); + this.addParametersSimilarityEntries(); + this.addReferencesSimilarityEntries(); + this.addTypesSimilarityEntries(); + this.addVariablesSimilarityEntries(); + } + + /** + * @return The type of the class that has the attribute attr. + */ + protected Class getClassFromStructuralFeature(Object attr) { + return (Class) ((EStructuralFeature) attr).getContainerClass(); + } + + @Override + public void addSimilarityEntry(Object attr, Boolean expectedSimResult) { + this.addSimilarityEntry(this.getClassFromStructuralFeature(attr), attr, expectedSimResult); + } + + @Override + public Boolean getExpectedSimilarityResult(Object attr) { + return this.getExpectedSimilarityResult(this.getClassFromStructuralFeature(attr), attr); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/package-info.java new file mode 100644 index 0000000000..b1dac455c5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/params/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains implementations of interfaces from + * {@link cipm.consistency.fitests.similarity.params} for JaMoPP. + */ +package cipm.consistency.fitests.similarity.jamopp.params; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalFields.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalFields.java new file mode 100644 index 0000000000..7750a7c33f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalFields.java @@ -0,0 +1,25 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.members.AdditionalField; + +import cipm.consistency.initialisers.jamopp.members.AdditionalFieldInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link AdditionalField} instances.
+ *
+ * Contains methods that can be used to create {@link AdditionalField} + * instances. + */ +public interface UsesAdditionalFields { + /** + * @param The name of the instance to be constructed + * @return A minimal {@link AdditionalField} instance with the given parameter. + */ + public default AdditionalField createMinimalAF(String afName) { + var afInit = new AdditionalFieldInitialiser(); + var af = afInit.instantiate(); + afInit.setName(af, afName); + return af; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalLocalVariables.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalLocalVariables.java new file mode 100644 index 0000000000..ebcff93ade --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAdditionalLocalVariables.java @@ -0,0 +1,26 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.variables.AdditionalLocalVariable; + +import cipm.consistency.initialisers.jamopp.variables.AdditionalLocalVariableInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link AdditionalLocalVariable} instances.
+ *
+ * Contains methods that can be used to create {@link AdditionalLocalVariable} + * instances. + */ +public interface UsesAdditionalLocalVariables { + /** + * @param alvName The name of the instance to be constructed + * @return A minimal {@link AdditionalLocalVariable} instance with the given + * parameter. + */ + public default AdditionalLocalVariable createMinimalALV(String alvName) { + var alvInit = new AdditionalLocalVariableInitialiser(); + var alv = alvInit.instantiate(); + alvInit.setName(alv, alvName); + return alv; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationAttributeSettings.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationAttributeSettings.java new file mode 100644 index 0000000000..51f3e1e87e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationAttributeSettings.java @@ -0,0 +1,59 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.annotations.AnnotationAttributeSetting; +import org.emftext.language.java.annotations.AnnotationValue; +import org.emftext.language.java.members.InterfaceMethod; + +import cipm.consistency.initialisers.jamopp.annotations.AnnotationAttributeSettingInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link AnnotationAttributeSetting} instances.
+ *
+ * Contains methods that can be used to create + * {@link AnnotationAttributeSetting} instances. + */ +public interface UsesAnnotationAttributeSettings extends UsesAnnotationValues { + /** + * @param im The attribute of the instance to be constructed. + * @param val The value of the instance to be constructed. + * + * @return An {@link AnnotationAttributeSetting} instance with the given + * attribute and value. + */ + public default AnnotationAttributeSetting createAAS(InterfaceMethod im, AnnotationValue val) { + var aasInit = new AnnotationAttributeSettingInitialiser(); + var aas = aasInit.instantiate(); + aasInit.setAttribute(aas, im); + aasInit.setValue(aas, val); + return aas; + } + + /** + * A variant of {@link #createAAS(InterfaceMethod, AnnotationValue)}, where the + * first parameter is null and the second parameter constructed using + * {@link #createMinimalSR(String)}. + * + * @param val See {@link #createMinimalSR(String)} + */ + public default AnnotationAttributeSetting createStringAAS(String val) { + return this.createAAS(null, this.createMinimalSR(val)); + } + + /** + * A variant of {@link #createAAS(InterfaceMethod, AnnotationValue)} where both + * parameters are null. + */ + public default AnnotationAttributeSetting createEmptyAAS() { + return this.createAAS(null, null); + } + + /** + * A variant of {@link #createAAS(InterfaceMethod, AnnotationValue)}, where the + * first parameter is null and the second parameter is constructed using + * {@link #createNullLiteral()}. + */ + public default AnnotationAttributeSetting createNullAAS() { + return this.createAAS(null, this.createNullLiteral()); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationInstances.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationInstances.java new file mode 100644 index 0000000000..a44838d358 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationInstances.java @@ -0,0 +1,39 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.annotations.AnnotationInstance; +import org.emftext.language.java.classifiers.Classifier; + +import cipm.consistency.initialisers.jamopp.annotations.AnnotationInstanceInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link AnnotationInstance} instances.
+ *
+ * Contains methods that can be used to create {@link AnnotationInstance} + * instances. + */ +public interface UsesAnnotationInstances extends UsesAnnotations { + /** + * @param aiNss The namespaces of the instance to be constructed. + * @param aiAnnotation The annotation of the instance to be constructed. + * @return An {@link AnnotationInstance} with the given parameters. + */ + public default AnnotationInstance createMinimalAI(String[] aiNss, Classifier aiAnnotation) { + var aii = new AnnotationInstanceInitialiser(); + AnnotationInstance ai = aii.instantiate(); + aii.addNamespaces(ai, aiNss); + aii.setAnnotation(ai, aiAnnotation); + return ai; + } + + /** + * A variant of {@link #createMinimalAI(String[], Classifier)}, where + * {@link #createMinimalAnnotation(String)} is used to construct + * {@link Classifier} parameter. + * + * @param annotationName See {@link #createMinimalAnnotation(String)} + */ + public default AnnotationInstance createMinimalAI(String[] aiNss, String annotationName) { + return this.createMinimalAI(aiNss, this.createMinimalAnnotation(annotationName)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationParameters.java new file mode 100644 index 0000000000..9338c848ad --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationParameters.java @@ -0,0 +1,48 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.annotations.AnnotationValue; +import org.emftext.language.java.annotations.SingleAnnotationParameter; + +import cipm.consistency.initialisers.jamopp.annotations.SingleAnnotationParameterInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link AnnotationParameter} instances.
+ *
+ * Contains methods that can be used to create {@link AnnotationParameter} + * instances. + */ +public interface UsesAnnotationParameters extends UsesAnnotationValues { + /** + * @param val The value of the instance to be constructed + * @return A {@link SingleAnnotationParameter} instance with the given + * parameter. + */ + public default SingleAnnotationParameter createSingleAnnoParam(AnnotationValue val) { + var init = new SingleAnnotationParameterInitialiser(); + SingleAnnotationParameter result = init.instantiate(); + init.setValue(result, val); + return result; + } + + /** + * A variant of {@link #createSingleAnnoParam(AnnotationValue)}, where the + * parameter is constructed using {@link #createMinimalSR(String)}. + * + * @param val See {@link #createMinimalSR(String)} + */ + public default SingleAnnotationParameter createSingleStrAnnoParam(String val) { + return this.createSingleAnnoParam(this.createMinimalSR(val)); + } + + /** + * A variant of {@link #createSingleAnnoParam(AnnotationValue)}, where the + * parameter is a {@link NullLiteral}. + * + * @see {@link #createNullLiteral()} + */ + public default SingleAnnotationParameter createSingleNullAnnoParam() { + return this.createSingleAnnoParam(this.createNullLiteral()); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationValues.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationValues.java new file mode 100644 index 0000000000..2cc1f7095e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotationValues.java @@ -0,0 +1,14 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.annotations.AnnotationValue; + +/** + * An interface that can be implemented by tests, which work with + * {@link AnnotationValue} instances.
+ *
+ * Contains methods that can be used to create {@link AnnotationValue} + * instances. + */ +public interface UsesAnnotationValues extends UsesReferences, UsesLiterals { + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotations.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotations.java new file mode 100644 index 0000000000..2872cc3c4d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnnotations.java @@ -0,0 +1,24 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.classifiers.Annotation; + +import cipm.consistency.initialisers.jamopp.classifiers.AnnotationInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link Annotation} instances.
+ *
+ * Contains methods that can be used to create {@link Annotation} instances. + */ +public interface UsesAnnotations { + /** + * @param annotationName The name of the instance to be constructed + * @return An {@link Annotation} instance with the given parameter. + */ + public default Annotation createMinimalAnnotation(String annotationName) { + var ai = new AnnotationInitialiser(); + Annotation result = ai.instantiate(); + ai.setName(result, annotationName); + return result; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnonymousClasses.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnonymousClasses.java new file mode 100644 index 0000000000..1362297003 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesAnonymousClasses.java @@ -0,0 +1,37 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.classifiers.AnonymousClass; + +import cipm.consistency.initialisers.jamopp.classifiers.AnonymousClassInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link AnonymousClass} instances.
+ *
+ * Contains methods that can be used to create {@link AnonymousClass} instances. + */ +public interface UsesAnonymousClasses extends UsesMethods { + /** + * @param methodName See {@link #createMinimalClsMethodWithNullReturn(String)} + * + * @return An {@link AnonymousClass} instance with a {@link Member} constructed + * using {@link #createMinimalClsMethodWithNullReturn(String)}. + * + */ + public default AnonymousClass createMinimalAnonymousClassWithMethod(String methodName) { + var acInit = new AnonymousClassInitialiser(); + var ac = this.createMinimalAnonymousClass(); + acInit.addMember(ac, this.createMinimalClsMethodWithNullReturn(methodName)); + return ac; + } + + /** + * @return A minimal {@link AnonymousClass} instance. + */ + public default AnonymousClass createMinimalAnonymousClass() { + var acInit = new AnonymousClassInitialiser(); + var ac = acInit.instantiate(); + return ac; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayDimensions.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayDimensions.java new file mode 100644 index 0000000000..7083aee070 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayDimensions.java @@ -0,0 +1,44 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.annotations.AnnotationInstance; +import org.emftext.language.java.arrays.ArrayDimension; + +import cipm.consistency.initialisers.jamopp.arrays.ArrayDimensionInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link ArrayDimension} instances.
+ *
+ * Contains methods that can be used to create {@link ArrayDimension} + * instances. + */ +public interface UsesArrayDimensions extends UsesAnnotationInstances { + /** + * @return An uninitialised {@link ArrayDimension} instance. + */ + public default ArrayDimension createMinimalArrayDimension() { + var init = new ArrayDimensionInitialiser(); + var result = init.instantiate(); + return result; + } + + /** + * @return An {@link ArrayDimension} instance with the given {@link AnnotationInstance} array. + */ + public default ArrayDimension createArrayDimension(AnnotationInstance[] ais) { + var result = this.createMinimalArrayDimension(); + var init = new ArrayDimensionInitialiser(); + init.addAnnotations(result, ais); + return result; + } + + /** + * @return An {@link ArrayDimension} instance that has an {@link AnnotationInstance} with + * the given namespace and instance name. + */ + public default ArrayDimension createArrayDimension(String[] annotationInstanceNamespaces, + String annotationInstanceName) { + return this.createArrayDimension(new AnnotationInstance[] { + this.createMinimalAI(annotationInstanceNamespaces, annotationInstanceName) }); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayInitializers.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayInitializers.java new file mode 100644 index 0000000000..e9afa89493 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArrayInitializers.java @@ -0,0 +1,36 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.arrays.ArrayInitializationValue; +import org.emftext.language.java.arrays.ArrayInitializer; +import org.emftext.language.java.expressions.Expression; + +import cipm.consistency.initialisers.jamopp.arrays.ArrayInitializerInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link ArrayInitializer} instances.
+ *
+ * Contains methods that can be used to create {@link ArrayInitializer} + * instances. + */ +public interface UsesArrayInitializers { + /** + * @param aivs The values of the instance to be constructed + * @return An {@link ArrayInitializer} with the given parameter + */ + public default ArrayInitializer createMinimalArrayInitializer(ArrayInitializationValue[] aivs) { + var init = new ArrayInitializerInitialiser(); + ArrayInitializer result = init.instantiate(); + init.addInitialValues(result, aivs); + return result; + } + + /** + * A variant of + * {@link #createMinimalArrayInitializer(ArrayInitializationValue[])}, where the + * parameter is an array containing only one {@link ArrayInitializationValue}. + */ + public default ArrayInitializer createMinimalArrayInitializer(Expression aiv) { + return this.createMinimalArrayInitializer(new ArrayInitializationValue[] { aiv }); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArraySelectors.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArraySelectors.java new file mode 100644 index 0000000000..c9745f7751 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesArraySelectors.java @@ -0,0 +1,33 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.expressions.Expression; + +import cipm.consistency.initialisers.jamopp.arrays.ArraySelectorInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link ArraySelector} instances.
+ *
+ * Contains methods that can be used to create {@link ArraySelector} instances. + */ +public interface UsesArraySelectors extends UsesExpressions { + /** + * @param asPos The position of the instance to be constructed + * @return An {@link ArraySelector} instance with the given parameter. + */ + public default ArraySelector createAS(Expression asPos) { + var init = new ArraySelectorInitialiser(); + var as = init.instantiate(); + init.setPosition(as, asPos); + return as; + } + + /** + * A variant of {@link #createAS(Expression)}, where the parameter is wrapped + * using {@link #createDecimalIntegerLiteral(int)}. + */ + public default ArraySelector createMinimalAS(int asPos) { + return this.createAS(this.createDecimalIntegerLiteral(asPos)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesCatchBlocks.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesCatchBlocks.java new file mode 100644 index 0000000000..b418f2ec5f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesCatchBlocks.java @@ -0,0 +1,39 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.parameters.OrdinaryParameter; +import org.emftext.language.java.statements.CatchBlock; + +import cipm.consistency.initialisers.jamopp.statements.CatchBlockInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link CatchBlock} instances.
+ *
+ * Contains methods that can be used to create {@link CatchBlock} instances. + */ +public interface UsesCatchBlocks extends UsesParameters { + /** + * @param cbParam The parameter of the instance to be constructed + * @return A {@link CatchBlock} instance with the given parameter + */ + public default CatchBlock createMinimalCB(OrdinaryParameter cbParam) { + var cbInit = new CatchBlockInitialiser(); + var cb = cbInit.instantiate(); + cbInit.setParameter(cb, cbParam); + return cb; + } + + /** + * A variant of {@link #createMinimalCB(OrdinaryParameter)}, where the parameter + * is constructed using + * {@link #createMinimalOrdParamWithClsTarget(String, String)}. + * + * @param paramName See + * {@link #createMinimalOrdParamWithClsTarget(String, String)} + * @param targetName See + * {@link #createMinimalOrdParamWithClsTarget(String, String)} + */ + public default CatchBlock createMinimalCB(String paramName, String targetName) { + return this.createMinimalCB(this.createMinimalOrdParamWithClsTarget(paramName, targetName)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesConcreteClassifiers.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesConcreteClassifiers.java new file mode 100644 index 0000000000..1940ad1498 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesConcreteClassifiers.java @@ -0,0 +1,129 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.classifiers.ConcreteClassifier; + +import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser; +import cipm.consistency.initialisers.jamopp.classifiers.IConcreteClassifierInitialiser; +import cipm.consistency.initialisers.jamopp.containers.CompilationUnitInitialiser; + +import org.emftext.language.java.classifiers.Class; + +/** + * An interface that can be implemented by tests, which work with + * {@link ConcreteClassifier} instances.
+ *
+ * Contains methods that can be used to create {@link ConcreteClassifier} + * instances. + */ +public interface UsesConcreteClassifiers extends UsesPackages, UsesNames { + /** + * @return A {@link Class} instance without setting any of its attributes + */ + public default Class createMinimalClass() { + return new ClassInitialiser().instantiate(); + } + + /** + * @return A {@link Class} instance contained in a {@link CompilationUnit} + * instance. Attributes of neither the {@link Class} instance nor the + * {@link CompilationUnit} instance are set. + */ + public default Class createMinimalClassWithCU() { + var cls = this.createMinimalClass(); + + var cuInit = new CompilationUnitInitialiser(); + var cu = cuInit.instantiate(); + cuInit.addClassifier(cu, cls); + + return cls; + } + + /** + * @param init The initialiser that will be used to create the instance + * @param clsName The name of the instance to be constructed + * @return A {@link ConcreteClassifier} instance with the given name. The + * concrete type of the instance depends on init. + */ + public default ConcreteClassifier createMinimalClassifier(IConcreteClassifierInitialiser init, String clsName) { + ConcreteClassifier result = init.instantiate(); + init.setName(result, clsName); + return result; + } + + /** + * @param init The initialiser that will be used to create the instance + * @param clsName The name of the instance to be constructed + * @param cuName The name of the {@link CompilationUnit} that will contain the + * created instance + * @return A {@link ConcreteClassifier} instance that is contained by a + * {@link CompilationUnit}. The given parameters are used during both of + * their construction. + */ + public default ConcreteClassifier createMinimalClassifierWithCU(IConcreteClassifierInitialiser init, String clsName, + String cuName) { + ConcreteClassifier result = init.instantiate(); + init.setName(result, clsName); + + var cuInit = new CompilationUnitInitialiser(); + var cu = cuInit.instantiate(); + cuInit.setName(cu, cuName); + cuInit.addClassifier(cu, result); + + return result; + } + + /** + * @param init The initialiser that will be used to create the instance + * @param clsName The name of the instance to be constructed + * @param pacNss See {@link #createMinimalPackage(String[])} + * @return A {@link ConcreteClassifier} instance that will be contained by a + * {@link Package} constructed by + * {@link #createMinimalPackage(String[])}. + */ + public default ConcreteClassifier createMinimalClassifierWithPac(IConcreteClassifierInitialiser init, + String clsName, String[] pacNss) { + ConcreteClassifier result = init.instantiate(); + init.setName(result, clsName); + init.setPackage(result, this.createMinimalPackage(pacNss)); + return result; + } + + /** + * A variant of + * {@link #createMinimalClassifierWithPac(IConcreteClassifierInitialiser, String, String[])}, + * where the constructed instance is of type {@link Class}. + */ + public default Class createMinimalClassWithPac(String clsName, String[] pacNss) { + return (Class) this.createMinimalClassifierWithPac(new ClassInitialiser(), clsName, pacNss); + } + + /** + * A variant of + * {@link #createMinimalClassifierWithCU(IConcreteClassifierInitialiser, String, String)}, + * where the name of the constructed {@link CompilationUnit} is + * {@link #getDefaultName()}. + */ + public default ConcreteClassifier createMinimalClassifierWithCU(IConcreteClassifierInitialiser init, + String clsName) { + return this.createMinimalClassifierWithCU(init, clsName, this.getDefaultName()); + } + + /** + * A variant of + * {@link #createMinimalClassifier(IConcreteClassifierInitialiser, String)}, + * where a {@link Class} instance with the given parameter is created. + */ + public default Class createMinimalClass(String clsName) { + return (Class) this.createMinimalClassifier(new ClassInitialiser(), clsName); + } + + /** + * A variant of + * {@link #createMinimalClassifierWithCU(IConcreteClassifierInitialiser, String)}, + * where the constructed instance is of type {@link Class} with the given + * parameter. + */ + public default Class createMinimalClassWithCU(String clsName) { + return (Class) this.createMinimalClassifierWithCU(new ClassInitialiser(), clsName); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesEnumConstants.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesEnumConstants.java new file mode 100644 index 0000000000..62d3efe57c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesEnumConstants.java @@ -0,0 +1,24 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.members.EnumConstant; + +import cipm.consistency.initialisers.jamopp.members.EnumConstantInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link EnumConstant} instances.
+ *
+ * Contains methods that can be used to create {@link EnumConstant} instances. + */ +public interface UsesEnumConstants { + /** + * @param ecName The name of the instance to be created + * @return An {@link EnumConstant} with the given parameter + */ + public default EnumConstant createMinimalEnumConstant(String ecName) { + var ecInit = new EnumConstantInitialiser(); + var ec = ecInit.instantiate(); + ecInit.setName(ec, ecName); + return ec; + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesExpressions.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesExpressions.java new file mode 100644 index 0000000000..7b37cb816e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesExpressions.java @@ -0,0 +1,118 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.expressions.EqualityExpression; +import org.emftext.language.java.expressions.EqualityExpressionChild; +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.expressions.ExpressionList; +import org.emftext.language.java.operators.EqualityOperator; + +import cipm.consistency.initialisers.jamopp.expressions.EqualityExpressionInitialiser; +import cipm.consistency.initialisers.jamopp.expressions.ExpressionListInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link Expression} instances.
+ *
+ * Contains methods that can be used to create {@link Expression} instances. + */ +public interface UsesExpressions extends UsesOperators, UsesLiterals, UsesStringReferences { + /** + * @param exprs The {@link Expression} instances the constructed instance will + * contain + * @return A {@link ExpressionList} instance with the given parameters + */ + public default ExpressionList createExprList(Expression... exprs) { + var elInit = new ExpressionListInitialiser(); + var el = this.createExprList(); + elInit.addExpressions(el, exprs); + return el; + } + + /** + * @param lhs The left hand side of the instance to be constructed + * @param eop The equality operator of the instance to be constructed + * @param rhs The right hand side of the instance to be constructed + * @return Constructs an {@link EqualityExpression} instance that represents + * {@code lhs eop rhs} + */ + public default EqualityExpression createMinimalEE(EqualityExpressionChild lhs, EqualityOperator eop, + EqualityExpressionChild rhs) { + var eqInit = new EqualityExpressionInitialiser(); + + EqualityExpression result = eqInit.instantiate(); + eqInit.addEqualityOperator(result, eop); + eqInit.addChild(result, lhs); + eqInit.addChild(result, rhs); + + return result; + } + + /** + * A variant of + * {@link #createMinimalEE(EqualityExpressionChild, EqualityOperator, EqualityExpressionChild)} + * that uses an operator generated by {@link #createEqualityOperator()}. + */ + public default EqualityExpression createMinimalEE(EqualityExpressionChild lhs, EqualityExpressionChild rhs) { + return this.createMinimalEE(lhs, this.createEqualityOperator(), rhs); + } + + /** + * A variant of + * {@link #createMinimalEE(EqualityExpressionChild, EqualityOperator, EqualityExpressionChild)} + * that uses an operator generated by {@link #createNotEqualOperator()}. + */ + public default EqualityExpression createMinimalNEE(EqualityExpressionChild lhs, EqualityExpressionChild rhs) { + return this.createMinimalEE(lhs, this.createNotEqualOperator(), rhs); + } + + /** + * @return A minimal {@link ExpressionList} instance + */ + public default ExpressionList createExprList() { + return new ExpressionListInitialiser().instantiate(); + } + + /** + * A variant of + * {@link #createMinimalEE(EqualityExpressionChild, EqualityExpressionChild)} + * that equates to {@code 1 == 1} in {@link Expression} form. + * + * @see {@link #createDecimalIntegerLiteral(int)} + */ + public default EqualityExpression createMinimalTrueEE() { + return this.createMinimalEE(this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(1)); + } + + /** + * A variant of + * {@link #createMinimalEE(EqualityExpressionChild, EqualityExpressionChild)} + * that equates to {@code 1 == 2} in {@link Expression} form. + * + * @see {@link #createDecimalIntegerLiteral(int)} + */ + public default EqualityExpression createMinimalFalseEE() { + return this.createMinimalEE(this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2)); + } + + /** + * A variant of + * {@link #createMinimalNEE(EqualityExpressionChild, EqualityExpressionChild)} + * that equates to {@code 1 =/= 1} in {@link Expression} form. + * + * @see {@link #createDecimalIntegerLiteral(int)} + */ + public default EqualityExpression createMinimalFalseNEE() { + return this.createMinimalNEE(this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(1)); + } + + /** + * A variant of + * {@link #createMinimalNEE(EqualityExpressionChild, EqualityExpressionChild)} + * that equates to {@code 1 =/= 2} in {@link Expression} form. + * + * @see {@link #createDecimalIntegerLiteral(int)} + */ + public default EqualityExpression createMinimalTrueNEE() { + return this.createMinimalNEE(this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesFields.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesFields.java new file mode 100644 index 0000000000..b2a0fb39c1 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesFields.java @@ -0,0 +1,25 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.members.Field; + +import cipm.consistency.initialisers.jamopp.members.FieldInitialiser; + +/** + * An interface that can be implemented by tests, which work with {@link Field} + * instances.
+ *
+ * Contains methods that can be used to create {@link Field} instances. + */ +public interface UsesFields { + /** + * @param fieldName The name of the instance to be constructed + * @return A {@link Field} instance with the given parameter + */ + public default Field createMinimalField(String fieldName) { + var init = new FieldInitialiser(); + Field result = init.instantiate(); + init.setName(result, fieldName); + + return result; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImportingElements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImportingElements.java new file mode 100644 index 0000000000..0291a7ab6d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImportingElements.java @@ -0,0 +1,39 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.imports.Import; +import org.emftext.language.java.imports.ImportingElement; + +import cipm.consistency.initialisers.jamopp.imports.IImportingElementInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link ImportingElement} instances.
+ *
+ * Contains methods that can be used to create {@link ImportingElement} + * instances. + */ +public interface UsesImportingElements extends UsesImports { + /** + * @param init The initialiser that will be used to construct the instance + * @param imp The {@link Import} that will be added to the constructed instance + * @return An {@link ImportingElement} instance with the given parameters + */ + public default ImportingElement createMinimalImportingElement(IImportingElementInitialiser init, Import imp) { + ImportingElement result = init.instantiate(); + init.addImport(result, imp); + + return result; + } + + /** + * A variant of + * {@link #createMinimalImportingElement(IImportingElementInitialiser, Import)}, + * where the {@link Import} parameter is constructed using + * {@link #createMinimalClsImport(String)}. + * + * @param clsName See {@link #createMinimalClsImport(String)} + */ + public default ImportingElement createMinimalImportingElement(IImportingElementInitialiser init, String clsName) { + return this.createMinimalImportingElement(init, this.createMinimalClsImport(clsName)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImports.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImports.java new file mode 100644 index 0000000000..739b57bb97 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesImports.java @@ -0,0 +1,52 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.emftext.language.java.imports.ClassifierImport; +import org.emftext.language.java.imports.Import; + +import cipm.consistency.initialisers.jamopp.imports.ClassifierImportInitialiser; +import cipm.consistency.initialisers.jamopp.imports.IImportInitialiser; + +/** + * An interface that can be implemented by tests, which work with {@link Import} + * instances.
+ *
+ * Contains methods that can be used to create {@link Import} instances. + */ +public interface UsesImports extends UsesConcreteClassifiers { + /** + * @param initialiser The initialiser that will be used to construct the + * instance + * @param cls The classifier of the instance to be constructed (what it + * will point at) + * @return An {@link Import} instance with the given parameters + */ + public default Import createMinimalImport(IImportInitialiser initialiser, ConcreteClassifier cls) { + Import result = initialiser.instantiate(); + initialiser.setClassifier(result, cls); + + return result; + } + + /** + * A variant of + * {@link #createMinimalImport(IImportInitialiser, ConcreteClassifier)}, where + * the constructed instance is of type {@link ClassifierImport}. + */ + public default ClassifierImport createMinimalClsImport(ConcreteClassifier cls) { + return (ClassifierImport) this.createMinimalImport(new ClassifierImportInitialiser(), cls); + } + + /** + * A variant of + * {@link #createMinimalImport(IImportInitialiser, ConcreteClassifier)}, where + * the constructed instance is of type {@link ClassifierImport} that points at a + * {@link Classifier} constructed with + * {@link #createMinimalClassWithCU(String)}. + * + * @param clsName See {@link #createMinimalClassWithCU(String)} + */ + public default ClassifierImport createMinimalClsImport(String clsName) { + return this.createMinimalClsImport(this.createMinimalClassWithCU(clsName)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLambdaParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLambdaParameters.java new file mode 100644 index 0000000000..99fbd83d36 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLambdaParameters.java @@ -0,0 +1,42 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.expressions.ExplicitlyTypedLambdaParameters; +import org.emftext.language.java.parameters.Parameter; + +import cipm.consistency.initialisers.jamopp.expressions.ExplicitlyTypedLambdaParametersInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link LambdaParameters} instances.
+ *
+ * Contains methods that can be used to create {@link LambdaParameters} + * instances. + */ +public interface UsesLambdaParameters extends UsesParameters { + /** + * @param params The parameters that will be added to the constructed instance + * @return An {@link ExplicitlyTypedLambdaParameters} instance with the given + * parameters + */ + public default ExplicitlyTypedLambdaParameters createETLP(Parameter[] params) { + var init = new ExplicitlyTypedLambdaParametersInitialiser(); + + var result = init.instantiate(); + init.addParameters(result, params); + + return result; + } + + /** + * A variant of {@link #createETLP(Parameter[])}, where a single + * {@link Parameter} instance is constructed and used. + * + * @param paramName See + * {@link #createMinimalOrdParamWithClsTarget(String, String)} + * @param targetName See + * {@link #createMinimalOrdParamWithClsTarget(String, String)} + */ + public default ExplicitlyTypedLambdaParameters createMinimalETLP(String paramName, String targetName) { + return this.createETLP(new Parameter[] { this.createMinimalOrdParamWithClsTarget(paramName, targetName) }); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLiterals.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLiterals.java new file mode 100644 index 0000000000..a068c42098 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLiterals.java @@ -0,0 +1,202 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.BinaryIntegerLiteral; +import org.emftext.language.java.literals.BinaryLongLiteral; +import org.emftext.language.java.literals.BooleanLiteral; +import org.emftext.language.java.literals.CharacterLiteral; +import org.emftext.language.java.literals.DecimalDoubleLiteral; +import org.emftext.language.java.literals.DecimalFloatLiteral; +import org.emftext.language.java.literals.DecimalIntegerLiteral; +import org.emftext.language.java.literals.DecimalLongLiteral; +import org.emftext.language.java.literals.HexDoubleLiteral; +import org.emftext.language.java.literals.HexFloatLiteral; +import org.emftext.language.java.literals.HexIntegerLiteral; +import org.emftext.language.java.literals.HexLongLiteral; +import org.emftext.language.java.literals.NullLiteral; +import org.emftext.language.java.literals.OctalIntegerLiteral; +import org.emftext.language.java.literals.OctalLongLiteral; +import org.emftext.language.java.literals.Super; +import org.emftext.language.java.literals.This; +import org.emftext.language.java.modifiers.Static; +import org.emftext.language.java.modifiers.Transitive; + +import cipm.consistency.initialisers.jamopp.literals.BinaryIntegerLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.BinaryLongLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.BooleanLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.CharacterLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.DecimalDoubleLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.DecimalFloatLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.DecimalIntegerLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.DecimalLongLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.HexDoubleLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.HexFloatLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.HexIntegerLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.HexLongLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.NullLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.OctalIntegerLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.OctalLongLiteralInitialiser; +import cipm.consistency.initialisers.jamopp.literals.SuperInitialiser; +import cipm.consistency.initialisers.jamopp.literals.ThisInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.StaticInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.TransitiveInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link Literal} instances.
+ *
+ * Contains methods that can be used to create {@link Literal} instances. The + * methods wrap primitive value provided to them for convenience. + */ +public interface UsesLiterals { + public default CharacterLiteral createCharacterLiteral(String val) { + var init = new CharacterLiteralInitialiser(); + var lit = init.instantiate(); + init.setValue(lit, val); + return lit; + } + + public default BooleanLiteral createBooleanLiteral(boolean val) { + var init = new BooleanLiteralInitialiser(); + var lit = init.instantiate(); + init.setValue(lit, val); + return lit; + } + + public default HexFloatLiteral createHexFloatLiteral(float val) { + var init = new HexFloatLiteralInitialiser(); + var lit = init.instantiate(); + init.setHexValue(lit, val); + return lit; + } + + public default DecimalFloatLiteral createDecimalFloatLiteral(float val) { + var init = new DecimalFloatLiteralInitialiser(); + var lit = init.instantiate(); + init.setDecimalValue(lit, val); + return lit; + } + + public default HexDoubleLiteral createHexDoubleLiteral(double val) { + var init = new HexDoubleLiteralInitialiser(); + var lit = init.instantiate(); + init.setHexValue(lit, val); + return lit; + } + + public default DecimalDoubleLiteral createDecimalDoubleLiteral(double val) { + var init = new DecimalDoubleLiteralInitialiser(); + var lit = init.instantiate(); + init.setDecimalValue(lit, val); + return lit; + } + + public default BinaryIntegerLiteral createBinaryIntegerLiteral(BigInteger val) { + var init = new BinaryIntegerLiteralInitialiser(); + var lit = init.instantiate(); + init.setBinaryValue(lit, val); + return lit; + } + + public default BinaryIntegerLiteral createBinaryIntegerLiteral(int val) { + return this.createBinaryIntegerLiteral(BigInteger.valueOf(val)); + } + + public default DecimalIntegerLiteral createDecimalIntegerLiteral(BigInteger val) { + var init = new DecimalIntegerLiteralInitialiser(); + var lit = init.instantiate(); + init.setDecimalValue(lit, val); + return lit; + } + + public default DecimalIntegerLiteral createDecimalIntegerLiteral(int val) { + return this.createDecimalIntegerLiteral(BigInteger.valueOf(val)); + } + + public default HexIntegerLiteral createHexIntegerLiteral(BigInteger val) { + var init = new HexIntegerLiteralInitialiser(); + var lit = init.instantiate(); + init.setHexValue(lit, val); + return lit; + } + + public default HexIntegerLiteral createHexIntegerLiteral(int val) { + return this.createHexIntegerLiteral(BigInteger.valueOf(val)); + } + + public default OctalIntegerLiteral createOctalIntegerLiteral(BigInteger val) { + var init = new OctalIntegerLiteralInitialiser(); + var lit = init.instantiate(); + init.setOctalValue(lit, val); + return lit; + } + + public default OctalIntegerLiteral createOctalIntegerLiteral(int val) { + return this.createOctalIntegerLiteral(BigInteger.valueOf(val)); + } + + public default BinaryLongLiteral createBinaryLongLiteral(BigInteger val) { + var init = new BinaryLongLiteralInitialiser(); + var lit = init.instantiate(); + init.setBinaryValue(lit, val); + return lit; + } + + public default BinaryLongLiteral createBinaryLongLiteral(int val) { + return this.createBinaryLongLiteral(BigInteger.valueOf(val)); + } + + public default DecimalLongLiteral createDecimalLongLiteral(BigInteger val) { + var init = new DecimalLongLiteralInitialiser(); + var lit = init.instantiate(); + init.setDecimalValue(lit, val); + return lit; + } + + public default DecimalLongLiteral createDecimalLongLiteral(int val) { + return this.createDecimalLongLiteral(BigInteger.valueOf(val)); + } + + public default HexLongLiteral createHexLongLiteral(BigInteger val) { + var init = new HexLongLiteralInitialiser(); + var lit = init.instantiate(); + init.setHexValue(lit, val); + return lit; + } + + public default HexLongLiteral createHexLongLiteral(int val) { + return this.createHexLongLiteral(BigInteger.valueOf(val)); + } + + public default OctalLongLiteral createOctalLongLiteral(BigInteger val) { + var init = new OctalLongLiteralInitialiser(); + var lit = init.instantiate(); + init.setOctalValue(lit, val); + return lit; + } + + public default OctalLongLiteral createOctalLongLiteral(int val) { + return this.createOctalLongLiteral(BigInteger.valueOf(val)); + } + + public default NullLiteral createNullLiteral() { + return new NullLiteralInitialiser().instantiate(); + } + + public default This createThis() { + return new ThisInitialiser().instantiate(); + } + + public default Super createSuper() { + return new SuperInitialiser().instantiate(); + } + + public default Static createStatic() { + return new StaticInitialiser().instantiate(); + } + + public default Transitive createTransitive() { + return new TransitiveInitialiser().instantiate(); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLocalVariables.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLocalVariables.java new file mode 100644 index 0000000000..711771ff1c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesLocalVariables.java @@ -0,0 +1,24 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.variables.LocalVariable; + +import cipm.consistency.initialisers.jamopp.variables.LocalVariableInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link LocalVariable} instances.
+ *
+ * Contains methods that can be used to create {@link LocalVariable} instances. + */ +public interface UsesLocalVariables { + /** + * @param lvName The name of the instance to be constructed + * @return A {@link LocalVariable} instance with the given parameter + */ + public default LocalVariable createMinimalLV(String lvName) { + var lvInit = new LocalVariableInitialiser(); + var lv = lvInit.instantiate(); + lvInit.setName(lv, lvName); + return lv; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesMethods.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesMethods.java new file mode 100644 index 0000000000..845326f437 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesMethods.java @@ -0,0 +1,64 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.members.ClassMethod; +import org.emftext.language.java.members.InterfaceMethod; + +import cipm.consistency.initialisers.jamopp.members.ClassMethodInitialiser; +import cipm.consistency.initialisers.jamopp.members.InterfaceMethodInitialiser; + +/** + * An interface that can be implemented by tests, which work with {@link Method} + * instances.
+ *
+ * Contains methods that can be used to create {@link Method} instances. + */ +public interface UsesMethods extends UsesStatements { + /** + * A variant of {@link #createMinimalClsMethodWithNullReturn()} with the given + * parameter + * + * @param methodName The name of the instance to be constructed + */ + public default ClassMethod createMinimalClsMethodWithNullReturn(String methodName) { + var init = new ClassMethodInitialiser(); + ClassMethod result = this.createMinimalClsMethodWithNullReturn(); + init.setName(result, methodName); + return result; + } + + /** + * @return A {@link ClassMethod} instance with only one {@link Statement} + * constructed by {@link #createMinimalNullReturn()}. + */ + public default ClassMethod createMinimalClsMethodWithNullReturn() { + var init = new ClassMethodInitialiser(); + ClassMethod result = init.instantiate(); + init.addStatement(result, this.createMinimalNullReturn()); + return result; + } + + /** + * A variant of {@link #createMinimalInterfaceMethodWithNullReturn()} with the + * given parameter + * + * @param methodName The name of the instance to be constructed + */ + public default InterfaceMethod createMinimalInterfaceMethodWithNullReturn(String methodName) { + var init = new InterfaceMethodInitialiser(); + InterfaceMethod result = this.createMinimalInterfaceMethodWithNullReturn(); + init.setName(result, methodName); + return result; + } + + /** + * @return A {@link InterfaceMethod} instance with only one {@link Statement} + * constructed by {@link #createNullLiteral()}. + */ + public default InterfaceMethod createMinimalInterfaceMethodWithNullReturn() { + var init = new InterfaceMethodInitialiser(); + InterfaceMethod result = init.instantiate(); + init.setDefaultValue(result, this.createNullLiteral()); + return result; + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModifiers.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModifiers.java new file mode 100644 index 0000000000..4de3bab2df --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModifiers.java @@ -0,0 +1,83 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.modifiers.Abstract; +import org.emftext.language.java.modifiers.Default; +import org.emftext.language.java.modifiers.Final; +import org.emftext.language.java.modifiers.Native; +import org.emftext.language.java.modifiers.Private; +import org.emftext.language.java.modifiers.Protected; +import org.emftext.language.java.modifiers.Public; +import org.emftext.language.java.modifiers.Static; +import org.emftext.language.java.modifiers.Strictfp; +import org.emftext.language.java.modifiers.Synchronized; +import org.emftext.language.java.modifiers.Transient; +import org.emftext.language.java.modifiers.Volatile; + +import cipm.consistency.initialisers.jamopp.modifiers.AbstractInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.DefaultInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.FinalInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.NativeInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.PrivateInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.ProtectedInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.PublicInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.StaticInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.StrictfpInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.SynchronizedInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.TransientInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.VolatileInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link Modifier} instances.
+ *
+ * Contains methods that can be used to create {@link Modifier} instances. + */ +public interface UsesModifiers { + public default Default createDefault() { + return new DefaultInitialiser().instantiate(); + } + + public default Final createFinal() { + return new FinalInitialiser().instantiate(); + } + + public default Native createNative() { + return new NativeInitialiser().instantiate(); + } + + public default Private createPrivate() { + return new PrivateInitialiser().instantiate(); + } + + public default Public createPublic() { + return new PublicInitialiser().instantiate(); + } + + public default Static createStatic() { + return new StaticInitialiser().instantiate(); + } + + public default Strictfp createStrictfp() { + return new StrictfpInitialiser().instantiate(); + } + + public default Transient createTransient() { + return new TransientInitialiser().instantiate(); + } + + public default Abstract createAbstract() { + return new AbstractInitialiser().instantiate(); + } + + public default Synchronized createSynchronized() { + return new SynchronizedInitialiser().instantiate(); + } + + public default Volatile createVolatile() { + return new VolatileInitialiser().instantiate(); + } + + public default Protected createProtected() { + return new ProtectedInitialiser().instantiate(); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleDirectives.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleDirectives.java new file mode 100644 index 0000000000..d6146c8024 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleDirectives.java @@ -0,0 +1,70 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.containers.Package; +import org.emftext.language.java.modules.AccessProvidingModuleDirective; +import org.emftext.language.java.modules.ExportsModuleDirective; +import org.emftext.language.java.modules.OpensModuleDirective; + +import cipm.consistency.initialisers.jamopp.modules.ExportsModuleDirectiveInitialiser; +import cipm.consistency.initialisers.jamopp.modules.IAccessProvidingModuleDirectiveInitialiser; +import cipm.consistency.initialisers.jamopp.modules.OpensModuleDirectiveInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link ModuleDirective} instances.
+ *
+ * Contains methods that can be used to create {@link ModuleDirective} + * instances. + */ +public interface UsesModuleDirectives extends UsesPackages, UsesModuleReferences { + /** + * @param init The initialiser that will be used to construct the instance + * @param pac The accessable package of the instance to be constructed + * @return An {@link AccessProvidingModuleDirective} instance with the given + * parameters + */ + public default AccessProvidingModuleDirective createMinimalAPMD(IAccessProvidingModuleDirectiveInitialiser init, + Package pac) { + var result = init.instantiate(); + init.setAccessablePackage(result, pac); + return result; + } + + /** + * A variant of + * {@link #createMinimalAPMD(IAccessProvidingModuleDirectiveInitialiser, Package)} + * that constructs a {@link ExportsModuleDirective} instance. + */ + public default ExportsModuleDirective createMinimalEMD(Package pac) { + return (ExportsModuleDirective) this.createMinimalAPMD(new ExportsModuleDirectiveInitialiser(), pac); + } + + /** + * A variant of + * {@link #createMinimalAPMD(IAccessProvidingModuleDirectiveInitialiser, Package)} + * that constructs a {@link OpensModuleDirective} instance. + */ + public default OpensModuleDirective createMinimalOMD(Package pac) { + return (OpensModuleDirective) this.createMinimalAPMD(new OpensModuleDirectiveInitialiser(), pac); + } + + /** + * A variant of {@link #createMinimalEMD(Package)}, where + * {@link #createMinimalPackage(String[])} is used to construct the parameter. + * + * @param pacNss See {@link #createMinimalPackage(String[])} + */ + public default ExportsModuleDirective createMinimalEMD(String[] pacNss) { + return this.createMinimalEMD(this.createMinimalPackage(pacNss)); + } + + /** + * A variant of {@link #createMinimalOMD(Package)}, where + * {@link #createMinimalPackage(String[])} is used to construct the parameter. + * + * @param pacNss See {@link #createMinimalPackage(String[])} + */ + public default OpensModuleDirective createMinimalOMD(String[] pacNss) { + return this.createMinimalOMD(this.createMinimalPackage(pacNss)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleReferences.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleReferences.java new file mode 100644 index 0000000000..a570c903a3 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModuleReferences.java @@ -0,0 +1,39 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.modules.ModuleReference; + +import cipm.consistency.initialisers.jamopp.modules.ModuleReferenceInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link ModuleReference} instances.
+ *
+ * Contains methods that can be used to create {@link ModuleReference} + * instances. + */ +public interface UsesModuleReferences extends UsesModules { + /** + * @param modName See {@link #createMinimalModule(String)} + * @param modRefNss The namespaces of the {@link Module}, at which the + * constructed instance will point + * @return A {@link ModuleReference} instance that points at a {@link Module} + * constructed with {@link #createMinimalModule(String)}. + */ + public default ModuleReference createMinimalMR(String modName, String[] modRefNss) { + var mrInit = new ModuleReferenceInitialiser(); + var mr = mrInit.instantiate(); + mrInit.setTarget(mr, this.createMinimalModule(modName)); + mrInit.addNamespaces(mr, modRefNss); + return mr; + } + + /** + * A variant of {@link #createMinimalModule(String, String[])}, where the + * {@link Module} constructed in the process has no namespaces (second parameter + * is null). + */ + public default ModuleReference createMinimalMR(String modName) { + return this.createMinimalMR(modName, null); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModules.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModules.java new file mode 100644 index 0000000000..04ea40f1bb --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesModules.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.containers.Module; + +import cipm.consistency.initialisers.jamopp.containers.ModuleInitialiser; + +/** + * An interface that can be implemented by tests, which work with {@link Module} + * instances.
+ *
+ * Contains methods that can be used to create {@link Module} instances. + */ +public interface UsesModules { + /** + * @param modName The name of the instance to be constructed + * @param modNss The namespaces of the instance to be constructed + * @return A {@link Module} instance with the given parameters + */ + public default Module createMinimalModule(String modName, String[] modNss) { + var modInit = new ModuleInitialiser(); + var mod = modInit.instantiate(); + modInit.setName(mod, modName); + modInit.addNamespaces(mod, modNss); + return mod; + } + + /** + * A variation of {@link #createMinimalModule(String, String[])}, where the + * constructed instance has no namespaces. + */ + public default Module createMinimalModule(String modName) { + return this.createMinimalModule(modName, null); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesNames.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesNames.java new file mode 100644 index 0000000000..e0a18815d5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesNames.java @@ -0,0 +1,17 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +/** + * An interface that can be implemented by tests, which work with + * {@link NamedElement} instances.
+ *
+ * Contains methods that can be used to create {@link NamedElement} instances. + */ +public interface UsesNames { + /** + * @return A default name that can be used while constructing + * {@link NamedElement} instances + */ + public default String getDefaultName() { + return ""; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesOperators.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesOperators.java new file mode 100644 index 0000000000..32ecadf11c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesOperators.java @@ -0,0 +1,95 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.operators.Addition; +import org.emftext.language.java.operators.AssignmentOperator; +import org.emftext.language.java.operators.AssignmentOr; +import org.emftext.language.java.operators.Division; +import org.emftext.language.java.operators.EqualityOperator; +import org.emftext.language.java.operators.GreaterThan; +import org.emftext.language.java.operators.LeftShift; +import org.emftext.language.java.operators.LessThan; +import org.emftext.language.java.operators.MinusMinus; +import org.emftext.language.java.operators.Multiplication; +import org.emftext.language.java.operators.NotEqual; +import org.emftext.language.java.operators.PlusPlus; +import org.emftext.language.java.operators.RightShift; +import org.emftext.language.java.operators.Subtraction; + +import cipm.consistency.initialisers.jamopp.operators.AdditionInitialiser; +import cipm.consistency.initialisers.jamopp.operators.AssignmentInitialiser; +import cipm.consistency.initialisers.jamopp.operators.AssignmentOrInitialiser; +import cipm.consistency.initialisers.jamopp.operators.DivisionInitialiser; +import cipm.consistency.initialisers.jamopp.operators.EqualInitialiser; +import cipm.consistency.initialisers.jamopp.operators.GreaterThanInitialiser; +import cipm.consistency.initialisers.jamopp.operators.LeftShiftInitialiser; +import cipm.consistency.initialisers.jamopp.operators.LessThanInitialiser; +import cipm.consistency.initialisers.jamopp.operators.MinusMinusInitialiser; +import cipm.consistency.initialisers.jamopp.operators.MultiplicationInitialiser; +import cipm.consistency.initialisers.jamopp.operators.NotEqualInitialiser; +import cipm.consistency.initialisers.jamopp.operators.PlusPlusInitialiser; +import cipm.consistency.initialisers.jamopp.operators.RightShiftInitialiser; +import cipm.consistency.initialisers.jamopp.operators.SubtractionInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link Operator} instances.
+ *
+ * Contains methods that can be used to create {@link Operator} instances. + */ +public interface UsesOperators { + public default AssignmentOperator createAssignmentOperator() { + return new AssignmentInitialiser().instantiate(); + } + + public default AssignmentOr createAssignmentOrOperator() { + return new AssignmentOrInitialiser().instantiate(); + } + + public default EqualityOperator createEqualityOperator() { + return new EqualInitialiser().instantiate(); + } + + public default NotEqual createNotEqualOperator() { + return new NotEqualInitialiser().instantiate(); + } + + public default GreaterThan createGreaterThanOperator() { + return new GreaterThanInitialiser().instantiate(); + } + + public default LessThan createLessThanOperator() { + return new LessThanInitialiser().instantiate(); + } + + public default LeftShift createLeftShiftOperator() { + return new LeftShiftInitialiser().instantiate(); + } + + public default RightShift createRightShiftOperator() { + return new RightShiftInitialiser().instantiate(); + } + + public default Addition createAdditionOperator() { + return new AdditionInitialiser().instantiate(); + } + + public default Subtraction createSubtractionOperator() { + return new SubtractionInitialiser().instantiate(); + } + + public default Division createDivisionOperator() { + return new DivisionInitialiser().instantiate(); + } + + public default Multiplication createMultiplicationOperator() { + return new MultiplicationInitialiser().instantiate(); + } + + public default PlusPlus createPlusPlusOperator() { + return new PlusPlusInitialiser().instantiate(); + } + + public default MinusMinus createMinusMinusOperator() { + return new MinusMinusInitialiser().instantiate(); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackageImports.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackageImports.java new file mode 100644 index 0000000000..fca440ad06 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackageImports.java @@ -0,0 +1,25 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.imports.PackageImport; + +import cipm.consistency.initialisers.jamopp.imports.PackageImportInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link PackageImport} instances.
+ *
+ * Contains methods that can be used to create {@link PackageImport} instances. + */ +public interface UsesPackageImports { + /** + * @param piNss The namespaces of the instance to be constructed + * @return A {@link PackageImport} instance with the given parameters + */ + public default PackageImport createMinimalPackageImport(String[] piNss) { + var initialiser = new PackageImportInitialiser(); + var result = initialiser.instantiate(); + initialiser.addNamespaces(result, piNss); + + return result; + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackages.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackages.java new file mode 100644 index 0000000000..b85fc2daef --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesPackages.java @@ -0,0 +1,49 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.containers.Package; + +import cipm.consistency.initialisers.jamopp.containers.PackageInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link Package} instances.
+ *
+ * Contains methods that can be used to create {@link Package} instances. + */ +public interface UsesPackages { + /** + * @param pacNss The namespaces of the instance to be constructed + * @return A {@link Package} instance with the given parameters + */ + public default Package createMinimalPackage(String[] pacNss) { + var pacInit = new PackageInitialiser(); + + Package result = pacInit.instantiate(); + pacInit.addNamespaces(result, pacNss); + + return result; + } + + /** + * A variant of {@link #createMinimalPackage(String[])}, where namespaces are + * generated using the given parameters.
+ *
+ * The generated namespaces will each consist of the given prefix and a suffix. + * As suffix, the namespaces will have a number between 0 (including) and the + * given count (excluding).
+ *
+ * Example: {@code nsPrefix = "ns", nsCount = 3} constructs a {@link Package} + * instance with namespaces "ns0", "ns1", "ns2". + * + * @param pacNsPrefix The prefix of the namespaces to be generated + * @param pacNsCount The count of the namespaces to be generated + */ + public default Package createMinimalPackage(String pacNsPrefix, int pacNsCount) { + var nss = new String[pacNsCount]; + + for (int i = 0; i < pacNsCount; i++) + nss[i] = pacNsPrefix + i; + + return this.createMinimalPackage(nss); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesParameters.java new file mode 100644 index 0000000000..dff6bc321e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesParameters.java @@ -0,0 +1,52 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.parameters.OrdinaryParameter; +import org.emftext.language.java.parameters.Parameter; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.parameters.IParameterInitialiser; +import cipm.consistency.initialisers.jamopp.parameters.OrdinaryParameterInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link Parameter} instances.
+ *
+ * Contains methods that can be used to create {@link Parameter} instances. + */ +public interface UsesParameters extends UsesTypeReferences { + /** + * @param init The initialiser that will be used to construct the instance + * @param paramName The name of the instance to be constructed + * @param tref The type reference of the instance to be constructed + * @return A {@link Parameter} instance with the given parameters + */ + public default Parameter createMinimalParameter(IParameterInitialiser init, String paramName, TypeReference tref) { + Parameter result = init.instantiate(); + init.setName(result, paramName); + init.setTypeReference(result, tref); + return result; + } + + /** + * A variant of + * {@link #createMinimalParameter(IParameterInitialiser, String, TypeReference)}, + * where the {@link TypeReference} parameter is constructed using + * {@link #createMinimalClsRef(String)}. + * + * @param targetName See {@link #createMinimalClsRef(String)} + */ + public default Parameter createMinimalParamWithClsTarget(IParameterInitialiser init, String paramName, + String targetName) { + return this.createMinimalParameter(init, paramName, this.createMinimalClsRef(targetName)); + } + + /** + * A variant of + * {@link #createMinimalParamWithClsTarget(IParameterInitialiser, String, String)} + * that returns an {@link OrdinaryParameter} instance. + */ + public default OrdinaryParameter createMinimalOrdParamWithClsTarget(String paramName, String targetName) { + return (OrdinaryParameter) this.createMinimalParamWithClsTarget(new OrdinaryParameterInitialiser(), paramName, + targetName); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesReferences.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesReferences.java new file mode 100644 index 0000000000..122999c388 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesReferences.java @@ -0,0 +1,11 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +/** + * An interface that can be implemented by tests, which work with + * {@link Reference} instances.
+ *
+ * Contains methods that can be used to create {@link Reference} instances. + */ +public interface UsesReferences extends UsesStringReferences { + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStatements.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStatements.java new file mode 100644 index 0000000000..42b053e594 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStatements.java @@ -0,0 +1,154 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Assert; +import org.emftext.language.java.statements.Block; +import org.emftext.language.java.statements.JumpLabel; +import org.emftext.language.java.statements.LocalVariableStatement; +import org.emftext.language.java.statements.Return; +import org.emftext.language.java.statements.Statement; +import org.emftext.language.java.variables.LocalVariable; + +import cipm.consistency.initialisers.jamopp.statements.AssertInitialiser; +import cipm.consistency.initialisers.jamopp.statements.BlockInitialiser; +import cipm.consistency.initialisers.jamopp.statements.JumpLabelInitialiser; +import cipm.consistency.initialisers.jamopp.statements.LocalVariableStatementInitialiser; +import cipm.consistency.initialisers.jamopp.statements.ReturnInitialiser; +import cipm.consistency.initialisers.jamopp.variables.LocalVariableInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link Statement} instances.
+ *
+ * Contains methods that can be used to create {@link Statement} instances. + */ +public interface UsesStatements extends UsesLiterals { + /** + * @param returnVal The return value of the instance to be constructed + * @return A {@link Return} instance with the given {@link Expression} as its + * return value. + */ + public default Return createMinimalReturn(Expression returnVal) { + var init = new ReturnInitialiser(); + Return result = init.instantiate(); + init.setReturnValue(result, returnVal); + return result; + } + + /** + * @param lvName The name of the instance to be constructed + * @return A {@link LocalVariableStatement} instance with the given name. + */ + public default LocalVariableStatement createMinimalLVS(String lvName) { + var init = new LocalVariableInitialiser(); + var res = init.instantiate(); + init.setName(res, lvName); + return this.createMinimalLVS(res); + } + + /** + * @param lvName The {@link LocalVariable} of the instance to be constructed + * @return A {@link LocalVariableStatement} instance with the given + * {@link LocalVariable}. + */ + public default LocalVariableStatement createMinimalLVS(LocalVariable lv) { + var init = new LocalVariableStatementInitialiser(); + var res = init.instantiate(); + init.setVariable(res, lv); + return res; + } + + /** + * @param jlName The name of the instance to be constructed + * @param targetSt The target statement of the instance to be constructed + * @return A {@link JumpLabel} instance with the given parameter + */ + public default JumpLabel createMinimalJL(String jlName, Statement targetSt) { + var init = new JumpLabelInitialiser(); + var jl = init.instantiate(); + init.setName(jl, jlName); + init.setStatement(jl, targetSt); + return jl; + } + + /** + * @param sts The statements that will be added to the instance to be + * constructed + * @return A {@link Block} instance with the given parameters + */ + public default Block createMinimalBlock(Statement[] sts) { + var init = new BlockInitialiser(); + Block result = init.instantiate(); + init.addStatements(result, sts); + return result; + } + + /** + * @return An {@link Assert} instance, whose {@link Condition} is constructed + * with {@link #createBooleanLiteral(boolean)} using the value true. + */ + public default Assert createMinimalTrivialAssert() { + var init = new AssertInitialiser(); + Assert result = init.instantiate(); + init.setCondition(result, this.createBooleanLiteral(true)); + return result; + } + + /** + * A variant of {@link #createMinimalReturn(Expression)}, where the parameter is + * constructed with {@link #createNullLiteral()}. + * + * @see {@link #createNullLiteral()} + */ + public default Return createMinimalNullReturn() { + return this.createMinimalReturn(this.createNullLiteral()); + } + + /** + * A variant of {@link #createMinimalJLToNullReturn(String)}, where the + * constructed instance has no name (null). + */ + public default JumpLabel createMinimalJLToNullReturn() { + return this.createMinimalJLToNullReturn(null); + } + + /** + * A variant of {@link #createMinimalJLToTrivialAssert(String)}, where the + * constructed instance has no name (null). + */ + public default JumpLabel createMinimalJLToTrivialAssert() { + return this.createMinimalJLToTrivialAssert(null); + } + + /** + * A variant of {@link #createMinimalJL(String, Statement)}, where the target + * statement is generated with {@link #createMinimalNullReturn()}. + */ + public default JumpLabel createMinimalJLToNullReturn(String jlName) { + return this.createMinimalJL(jlName, this.createMinimalNullReturn()); + } + + /** + * A variant of {@link #createMinimalJL(String, Statement)}, where the target + * statement is generated with {@link #createMinimalTrivialAssert()}. + */ + public default JumpLabel createMinimalJLToTrivialAssert(String jlName) { + return this.createMinimalJL(jlName, this.createMinimalTrivialAssert()); + } + + /** + * A variant of {@link #createMinimalBlock(Statement[])} that uses a single + * statement generated by {@link #createMinimalNullReturn()}. + */ + public default Block createMinimalBlockWithNullReturn() { + return this.createMinimalBlock(new Statement[] { this.createMinimalNullReturn() }); + } + + /** + * A variant of {@link #createMinimalBlock(Statement[])} that uses a single + * statement generated by {@link #createMinimalTrivialAssert()}. + */ + public default Block createMinimalBlockWithTrivialAssert() { + return this.createMinimalBlock(new Statement[] { this.createMinimalTrivialAssert() }); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStringReferences.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStringReferences.java new file mode 100644 index 0000000000..56ef65810d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesStringReferences.java @@ -0,0 +1,25 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.references.StringReference; + +import cipm.consistency.initialisers.jamopp.references.StringReferenceInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link StringReference} instances.
+ *
+ * Contains methods that can be used to create {@link StringReference} + * instances. + */ +public interface UsesStringReferences { + /** + * @param val The value of the instance to be constructed + * @return A {@link StringReference} instance with the given parameter + */ + public default StringReference createMinimalSR(String val) { + var init = new StringReferenceInitialiser(); + StringReference result = init.instantiate(); + init.setValue(result, val); + return result; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesSwitchCases.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesSwitchCases.java new file mode 100644 index 0000000000..cc6c6e0e53 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesSwitchCases.java @@ -0,0 +1,41 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.NormalSwitchCase; + +import cipm.consistency.initialisers.jamopp.statements.NormalSwitchCaseInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link SwitchCase} instances.
+ *
+ * Contains methods that can be used to create {@link SwitchCase} instances. + */ +public interface UsesSwitchCases extends UsesExpressions { + /** + * @param addConds The additional conditions that will be added to the instance + * to be constructed + * @return A {@link NormalSwitchCase} with the given parameters + */ + public default NormalSwitchCase createMinimalNSC(Expression[] addConds) { + var nscInit = new NormalSwitchCaseInitialiser(); + var nsc = nscInit.instantiate(); + nscInit.addAdditionalConditions(nsc, addConds); + return nsc; + } + + /** + * A variant of {@link #createMinimalNSC(Expression[])} that uses a single + * {@link Expression} generated by {@link #createMinimalFalseEE()}. + */ + public default NormalSwitchCase createMinimalNSC() { + return this.createMinimalNSC(new Expression[] { this.createMinimalFalseEE() }); + } + + /** + * A variant of {@link #createMinimalNSC()} that has no additional conditions + */ + public default NormalSwitchCase createEmptyNSC() { + return this.createMinimalNSC(null); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeArguments.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeArguments.java new file mode 100644 index 0000000000..5053f448ba --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeArguments.java @@ -0,0 +1,58 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.generics.ExtendsTypeArgument; +import org.emftext.language.java.generics.SuperTypeArgument; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.generics.ExtendsTypeArgumentInitialiser; +import cipm.consistency.initialisers.jamopp.generics.SuperTypeArgumentInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link TypeArgument} instances.
+ *
+ * Contains methods that can be used to create {@link TypeArgument} instances. + */ +public interface UsesTypeArguments extends UsesTypeReferences { + /** + * @param extType The extend type of the instance to be constructed + * @return An {@link ExtendsTypeArgument} instance with the given parameter + */ + public default ExtendsTypeArgument createMinimalExtendsTA(TypeReference extType) { + var init = new ExtendsTypeArgumentInitialiser(); + ExtendsTypeArgument result = init.instantiate(); + init.setExtendType(result, extType); + return result; + } + + /** + * @param supType The super type of the instance to be constructed + * @return An {@link SuperTypeArgument} instance with the given parameter + */ + public default SuperTypeArgument createMinimalSuperTA(TypeReference supType) { + var init = new SuperTypeArgumentInitialiser(); + SuperTypeArgument result = init.instantiate(); + init.setSuperType(result, supType); + return result; + } + + /** + * A variant of {@link #createMinimalExtendsTA(TypeReference)}, where the + * parameter is constructed with {@link #createMinimalClsRef(String)}. + * + * @param clsName See {@link #createMinimalClsRef(String)} + */ + public default ExtendsTypeArgument createMinimalExtendsTAWithCls(String clsName) { + return this.createMinimalExtendsTA(this.createMinimalClsRef(clsName)); + } + + /** + * A variant of {@link #createMinimalSuperTA(TypeReference)}, where the + * parameter is constructed with {@link #createMinimalClsRef(String)}. + * + * @param clsName See {@link #createMinimalClsRef(String)} + */ + public default SuperTypeArgument createMinimalSuperTAWithCls(String clsName) { + return this.createMinimalSuperTA(this.createMinimalClsRef(clsName)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeParameters.java new file mode 100644 index 0000000000..115aa6b6d9 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeParameters.java @@ -0,0 +1,63 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.generics.TypeParameter; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.generics.ITypeParameterInitialiser; +import cipm.consistency.initialisers.jamopp.generics.TypeParameterInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link TypeParameter} instances.
+ *
+ * Contains methods that can be used to create {@link TypeParameter} instances. + */ +public interface UsesTypeParameters extends UsesTypeReferences { + /** + * @param init The initialiser that will be used to construct the instance + * @param extTypes The extend types of the instance to be constructed + * @return A {@link TypeParameter} with the given parameters + */ + public default TypeParameter createMinimalTypeParam(ITypeParameterInitialiser init, TypeReference[] extTypes) { + TypeParameter result = init.instantiate(); + init.addExtendTypes(result, extTypes); + return result; + } + + /** + * A variant of + * {@link #createMinimalTypeParam(ITypeParameterInitialiser, TypeReference[])} + * that uses {@link #createMinimalClsRef(String)} to generate the given amount + * of extend types.
+ *
+ * The each generated extend type will point at a {@link Classifier} (will be + * constructed in the process) with the name "cls"+i, where i = 0, 1, ..., + * extTypeCount - 1. + * + * @param extTypeCount The amount of extend types that will be generated in the + * process + */ + public default TypeParameter createMinimalTypeParamWithClsRefs(ITypeParameterInitialiser init, int extTypeCount) { + var arr = new TypeReference[extTypeCount]; + + for (int i = 0; i < extTypeCount; i++) { + arr[i] = this.createMinimalClsRef("cls" + i); + } + + return this.createMinimalTypeParam(init, arr); + } + + /** + * A variant of + * {@link #createMinimalTypeParam(ITypeParameterInitialiser, TypeReference[])} + * that generates a {@link TypeParameter} instance with only one extend type + * that points at a {@link Classifier} generated with + * {@link #createMinimalClsRef(String)} using the given parameter + * + * @param clsName See {@link #createMinimalClsRef(String)} + */ + public default TypeParameter createMinimalTypeParamWithClsRef(String clsName) { + return this.createMinimalTypeParam(new TypeParameterInitialiser(), + new TypeReference[] { this.createMinimalClsRef(clsName) }); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeReferences.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeReferences.java new file mode 100644 index 0000000000..9aa2b215ed --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/UsesTypeReferences.java @@ -0,0 +1,68 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.ClassifierReference; +import org.emftext.language.java.types.NamespaceClassifierReference; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypeReferenceInitialiser; +import cipm.consistency.initialisers.jamopp.types.NamespaceClassifierReferenceInitialiser; + +/** + * An interface that can be implemented by tests, which work with + * {@link TypeReference} instances.
+ *
+ * Contains methods that can be used to create {@link TypeReference} instances. + */ +public interface UsesTypeReferences extends UsesConcreteClassifiers { + /** + * @param init The initialiser that will be used to construct the instance + * @param cls The target of the instance to be constructed + * @return A {@link TypeReference} instance with the given parameters + */ + public default TypeReference createMinimalTypeReference(ITypeReferenceInitialiser init, Classifier cls) { + TypeReference result = init.instantiate(); + init.setTarget(result, cls); + return result; + } + + /** + * A variant of + * {@link #createMinimalTypeReference(ITypeReferenceInitialiser, Classifier)}, + * the {@link Classifier} parameter is constructed with + * {@link #createMinimalClassWithCU(String)}. + * + * @param clsName See {@link #createMinimalClassWithCU(String)} + */ + public default ClassifierReference createMinimalClsRef(String clsName) { + return (ClassifierReference) this.createMinimalTypeReference(new ClassifierReferenceInitialiser(), + this.createMinimalClassWithCU(clsName)); + } + + /** + * A variant of + * {@link #createMinimalTypeReference(ITypeReferenceInitialiser, Classifier)}, + * where the {@link Classifier} parameter is constructed using + * {@link #createMinimalClassWithCU(String)}. + * + * @param clsName See {@link #createMinimalClassWithCU(String)} + */ + public default TypeReference createMinimalClsRef(ITypeReferenceInitialiser init, String clsName) { + return this.createMinimalTypeReference(init, this.createMinimalClassWithCU(clsName)); + } + + /** + * @param clsName See {@link #createMinimalClsRef(String)} + * + * @return A {@link NamespaceClassifierReference} instance with a + * {@link ClassifierReference} constructed with + * {@link #createMinimalClsRef(String)}. + */ + public default NamespaceClassifierReference createMinimalCNR(String clsName) { + var init = new NamespaceClassifierReferenceInitialiser(); + NamespaceClassifierReference result = init.instantiate(); + init.addClassifierReference(result, this.createMinimalClsRef(clsName)); + return result; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/DummyClassImplAndReference.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/DummyClassImplAndReference.java new file mode 100644 index 0000000000..bb2f1c2203 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/DummyClassImplAndReference.java @@ -0,0 +1,124 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.complextests; + +import org.eclipse.emf.common.util.EList; +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.classifiers.impl.ClassImpl; +import org.emftext.language.java.generics.TypeArgument; +import org.emftext.language.java.references.IdentifierReference; +import org.emftext.language.java.references.Reference; +import org.emftext.language.java.references.ReferenceableElement; +import org.emftext.language.java.types.Type; +import org.emftext.language.java.types.TypeReference; + +/** + * A dummy class that implements both {@link ReferenceableElement} (via + * {@link ClassImpl}) and {@link Reference} interfaces. Can be used to test + * cases, where for an {@link IdentifierReference} instance {@code IR} the + * following holds:
+ *
+ * {@code IR.getNext() == IR.getTarget()}
+ *
+ * Currently there is no actual class used by JaMoPP, which implements both + * interfaces named above. This class was implemented to test for the mentioned + * scenario regardless, as references are very commonly used in programming and + * should therefore be extensively tested.
+ *
+ * This dummy class takes two {@link Reference} instances: It wraps and uses one + * of them for the method implementations needed by the {@link Reference} + * interface, except for the {@link #getPrevious()} method. The other + * {@link Reference} instance is the return value for the {@link #getPrevious()} + * method. This is necessary, as setting the previous attribute of a + * {@link Reference} instance directly is currently not possible.
+ *
+ * !!! IMPORTANT: This class is NOT a proper implementation of its + * super-types. The sole purpose of this class is to be used as a parameter for + * {@code IR.setNext(...)} and {@code IR.setTarget(...)} in tests !!! + * + * @author Alp Torac Genc + */ +public class DummyClassImplAndReference extends ClassImpl implements Reference { + private Reference innerRef; + private Reference prev; + + /** + * Constructs an instance. + * + * @param prev The return value of {@code this.}{@link #getPrevious()} + * @param innerRef The {@link Reference} instance, to whom the calls to methods + * required by the {@link Reference} interface will be + * delegated, except for {@link #getPrevious()}. + */ + public DummyClassImplAndReference(Reference prev, Reference innerRef) { + this.prev = prev; + this.innerRef = innerRef; + } + + @Override + public Type getAlternativeType() { + return innerRef.getAlternativeType(); + } + + @Override + public long getArrayDimension() { + return innerRef.getArrayDimension(); + } + + @Override + public Type getOneType(boolean arg0) { + return innerRef.getOneType(arg0); + } + + @Override + public TypeReference getOneTypeReference(boolean arg0) { + return innerRef.getOneTypeReference(arg0); + } + + @Override + public Type getType() { + return innerRef.getType(); + } + + @Override + public EList getTypeArguments() { + return innerRef.getTypeArguments(); + } + + @Override + public EList getActualTargets() { + return innerRef.getActualTargets(); + } + + @Override + public EList getArraySelectors() { + return innerRef.getArraySelectors(); + } + + @Override + public Reference getNext() { + return innerRef.getNext(); + } + + /** + * @return The parameter prev that was passed to the constructor. + * @see {@link DummyClassImplAndReference#DummyClassDecorator(Reference, Reference)} + */ + @Override + public Reference getPrevious() { + return prev; + } + + @Override + public Type getReferencedType() { + return innerRef.getReferencedType(); + } + + @Override + public TypeReference getReferencedTypeReference() { + return innerRef.getReferencedTypeReference(); + } + + @Override + public void setNext(Reference arg0) { + innerRef.setNext(arg0); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/IdentifierReferenceContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/IdentifierReferenceContainerTest.java new file mode 100644 index 0000000000..3216f97d8b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/IdentifierReferenceContainerTest.java @@ -0,0 +1,290 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.complextests; + +import org.eclipse.emf.ecore.EObject; +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.references.IdentifierReference; +import org.emftext.language.java.references.ReferenceableElement; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser; +import cipm.consistency.initialisers.jamopp.instantiations.ExplicitConstructorCallInitialiser; +import cipm.consistency.initialisers.jamopp.references.IdentifierReferenceInitialiser; +import cipm.consistency.initialisers.jamopp.references.StringReferenceInitialiser; +import cipm.consistency.initialisers.jamopp.statements.ExpressionStatementInitialiser; + +/** + * Contains tests for similarity checking {@link IdentifierReference} instances. + * These tests cover cases, which are not addressed in other, simpler tests. + * + * @author Alp Torac Genc + */ +@Disabled("Disabled till null pointer exceptions are fixed") +public class IdentifierReferenceContainerTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers { + /** + * Realises the functionality of + * {@code JaMoPPElementUtil.getFirstContainerNotOfGivenType(...)}
+ *
+ * Implementation of that method is copied into this method, since it cannot be + * accessed in the current project setup. + */ + protected EObject getFirstEligibleContainer(IdentifierReference ref) { + var currentContainer = ref.eContainer(); + + while (currentContainer != null + && (currentContainer instanceof Expression || currentContainer instanceof ArraySelector)) { + currentContainer = currentContainer.eContainer(); + } + + if (!(currentContainer instanceof Expression) && !(currentContainer instanceof ArraySelector)) { + return currentContainer; + } + + return null; + } + + /** + * Conditions here were copied from the + * {@code ReferencesSimilaritySwitch.caseIdentifierReference(...)} for the sake + * of testing.
+ *
+ * This method is used to determine, whether similarity checking will be + * performed on the containers of the target attribute of the given references. + * Since reaching the said state requires an advanced setup, it is important to + * know if it actually is reached. + * + * @return Whether the similarity of {@code refX.getTarget().eContainer()} will + * be computed, where X = {1, 2}. + */ + protected boolean isTargetContainerSimilarityCheckReached(IdentifierReference ref1, IdentifierReference ref2) { + var ref1Container = this.getFirstEligibleContainer(ref1); + var ref2Container = this.getFirstEligibleContainer(ref2); + + var target1 = ref1.getTarget(); + var target2 = ref2.getTarget(); + + EObject target1Container = null; + if (target1 != null) { + target1Container = target1.eContainer(); + } + + EObject target2Container = null; + if (target2 != null) { + target2Container = target2.eContainer(); + } + + return target1Container != ref1Container && target2Container != ref2Container && + + // refX cannot be null and there is currently no EObject implementor that can be + // the target of an IdentifierReference IR and have IR as its container. + // Currently impossible to break the following conditions with actual EObject + // implementors + target1Container != ref1 && target2Container != ref2; + } + + /** + * Nests an {@link ExpressionStatement} es instance within an + * {@link ExplicitConstructorCall} ecc instance and sets ref's container to ecc. + *
+ *
+ * Can be used to add a container to ref (as in {@code ref.eContainer()}).
+ *
+ * Note: ref's eligible container {@code this.getFirstEligibleContainer(ref)} + * will be es. This is ensured by assertions. + */ + protected void initialiseIdentifierReference(IdentifierReference ref) { + var insInit = new ExplicitConstructorCallInitialiser(); + var ecc = insInit.instantiate(); + Assertions.assertTrue(insInit.addArgument(ecc, ref)); + + var esInit = new ExpressionStatementInitialiser(); + var es = esInit.instantiate(); + Assertions.assertTrue(esInit.setExpression(es, ecc)); + + Assertions.assertEquals(ref.eContainer(), ecc); + Assertions.assertEquals(this.getFirstEligibleContainer(ref), es); + } + + /** + * Checks whether similarity checking works as intended as far as comparing the + * containers of both targets is concerned. Note that the said target containers + * will only be compared, if + * {@link #isTargetContainerSimilarityCheckReached(IdentifierReference, IdentifierReference)} + * returns true for both {@link IdentifierReference} instances.
+ *
+ * The said targets are accessed via + * {@code identifierReference.getTarget().eContainer()}
+ *
+ * This test method considers only the currently possible scenarios, where + * actual {@link EObject} implementors are used throughout the entire test. + */ + @Test + public void test_AllRealisticCases() { + var targetName = "cls1"; + var targetWCon1 = this.createMinimalClassifierWithCU(new ClassInitialiser(), targetName, "cu1"); + var targetWCon2 = this.createMinimalClassifierWithCU(new ClassInitialiser(), targetName, "cu2"); + var targetWOCon = this.createMinimalClass(targetName); + + // Ensure that the containers are set correctly + Assertions.assertNotNull(targetWCon1.eContainer()); + Assertions.assertNotNull(targetWCon2.eContainer()); + Assertions.assertFalse(this.getActualEquality(targetWCon1.eContainer(), targetWCon2.eContainer())); + Assertions.assertNull(targetWOCon.eContainer()); + + var objInit = new IdentifierReferenceInitialiser(); + + var objWCon = objInit.instantiate(); + this.initialiseIdentifierReference(objWCon); + + var objWOCon = objInit.instantiate(); + + var targetArr = new ReferenceableElement[] { targetWCon1, targetWCon2, targetWOCon }; + var objArr = new IdentifierReference[] { objWCon, objWOCon }; + + var targetCloneArr = new ReferenceableElement[targetArr.length]; + var objCloneArr = new IdentifierReference[objArr.length]; + + // Make sure that the clones also have containers, if the + // original object had one. + + for (int i = 0; i < targetArr.length; i++) { + targetCloneArr[i] = this.cloneEObjWithContainers(targetArr[i]); + Assertions.assertTrue(this.getActualEquality(targetArr[i], targetCloneArr[i])); + } + + for (int i = 0; i < objArr.length; i++) { + objCloneArr[i] = this.cloneEObjWithContainers(objArr[i]); + Assertions.assertTrue(this.getActualEquality(objArr[i], objCloneArr[i])); + } + + // Test for all possible realistic container situations of identifier reference + // instances and that of their target + for (var targetOne : targetArr) { + for (var targetTwo : targetCloneArr) { + for (var objOne : objArr) { + for (var objTwo : objCloneArr) { + Assertions.assertTrue(this.getActualEquality(targetOne, targetTwo)); + Assertions.assertTrue(objInit.setTarget(objOne, targetOne)); + Assertions.assertTrue(objInit.setTarget(objTwo, targetTwo)); + + var expectedResult = !this.isTargetContainerSimilarityCheckReached(objOne, objTwo) + || this.isSimilar(targetOne.eContainer(), targetTwo.eContainer()); + + this.testSimilarity(objOne, objTwo, expectedResult); + } + } + } + } + } + + /** + * Checks whether similarity checking works as intended as far as comparing the + * containers of both targets is concerned. Note that the said target containers + * will only be compared, if + * {@link #isTargetContainerSimilarityCheckReached(IdentifierReference, IdentifierReference)} + * returns true for both {@link IdentifierReference} instances.
+ *
+ * The said targets are accessed via + * {@code identifierReference.getTarget().eContainer()}
+ *
+ * This test method tackles the case, where two {@link IdentifierReference} + * instances IR_1 and IR_2 each have their target as their next: + * {@code IR_i.getTarget() == IR_i.getNext()}
+ *
+ * Currently, this case is not realistic. + */ + @Test + public void test_TargetEqualsNext_InBothRefs() { + var objInit = new IdentifierReferenceInitialiser(); + var objOne = objInit.instantiate(); + + var objTwo = objInit.instantiate(); + + var targetOne = new DummyClassImplAndReference(objOne, new StringReferenceInitialiser().instantiate()); + var targetTwo = new DummyClassImplAndReference(objTwo, new StringReferenceInitialiser().instantiate()); + + Assertions.assertTrue(objInit.setTarget(objOne, targetOne)); + Assertions.assertTrue(objInit.setNext(objOne, (DummyClassImplAndReference) targetOne)); + + Assertions.assertTrue(objInit.setTarget(objTwo, targetTwo)); + Assertions.assertTrue(objInit.setNext(objTwo, (DummyClassImplAndReference) targetTwo)); + + /* + * Make sure that: + * + * targetOne.eContainer() != objOne.eContainer() && targetTwo.eContainer() != + * objTwo.eContainer() && targetOne.eContainer() == objOne && + * targetTwo.eContainer() == objTwo + */ + Assertions.assertNull(objOne.eContainer()); + Assertions.assertNull(objTwo.eContainer()); + Assertions.assertEquals(targetOne.eContainer(), objOne); + Assertions.assertEquals(targetTwo.eContainer(), objTwo); + Assertions.assertTrue(this.getActualEquality(targetOne, targetTwo)); + Assertions.assertFalse(this.isTargetContainerSimilarityCheckReached(objOne, objTwo)); + + // Swap parameter positions to make sure that the symmetry of similarity + // checking is asserted + Assertions.assertTrue(this.isSimilar(objOne, objTwo)); + Assertions.assertTrue(this.isSimilar(objTwo, objOne)); + } + + /** + * Checks whether similarity checking works as intended as far as comparing the + * containers of both targets is concerned. Note that the said target containers + * will only be compared, if + * {@link #isTargetContainerSimilarityCheckReached(IdentifierReference, IdentifierReference)} + * returns true for both {@link IdentifierReference} instances.
+ *
+ * The said targets are accessed via + * {@code identifierReference.getTarget().eContainer()}
+ *
+ * This test method tackles the case, where one {@link IdentifierReference} + * instance IR_1 has its target as its next: + * {@code IR_1.getTarget() == IR_1.getNext()}. In this case, IR_2 only has its + * target set: {@code IR_2.getTarget() != null && IR_2.getNext() == null}
+ *
+ * Currently, this case is not realistic. + */ + @Test + public void test_TargetEqualsNext_InOneRef() { + var objInit = new IdentifierReferenceInitialiser(); + + var objOne = objInit.instantiate(); + var objTwo = objInit.instantiate(); + + var targetOne = new DummyClassImplAndReference(objOne, new StringReferenceInitialiser().instantiate()); + var targetTwo = new DummyClassImplAndReference(objTwo, new StringReferenceInitialiser().instantiate()); + + Assertions.assertTrue(objInit.setTarget(objOne, targetOne)); + Assertions.assertTrue(objInit.setNext(objOne, (DummyClassImplAndReference) targetOne)); + + // Only set targetTwo as target in objTwo and not also as next, since that will + // make objTwo its container + Assertions.assertTrue(objInit.setTarget(objTwo, targetTwo)); + + /* + * Make sure that: + * + * targetOne.eContainer() != objOne.eContainer() && targetTwo.eContainer() != + * objTwo.eContainer() && targetOne.eContainer() == objOne && + * targetTwo.eContainer() != objTwo + */ + Assertions.assertNull(objOne.eContainer()); + Assertions.assertNull(objTwo.eContainer()); + Assertions.assertEquals(targetOne.eContainer(), objOne); + Assertions.assertNotEquals(targetTwo.eContainer(), objTwo); + Assertions.assertTrue(this.getActualEquality(targetOne, targetTwo)); + Assertions.assertFalse(this.isTargetContainerSimilarityCheckReached(objOne, objTwo)); + + // Swap parameter positions to make sure that the symmetry of similarity + // checking is asserted + // objX.getNext() matters for similarity checking + Assertions.assertFalse(this.isSimilar(objOne, objTwo)); + Assertions.assertFalse(this.isSimilar(objTwo, objOne)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/MemberInContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/MemberInContainerTest.java new file mode 100644 index 0000000000..8c7bbfd202 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/MemberInContainerTest.java @@ -0,0 +1,159 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.complextests; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +import org.emftext.language.java.members.MembersPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.params.JaMoPPInitialiserParameters; +import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser; +import cipm.consistency.initialisers.jamopp.members.IMemberInitialiser; + +/** + * Tests whether {@link MemberContainer} implementors' similarity is computed as + * expected, if they contain different types of {@link Member} instances. + * {@link Member} instances are added as members to {@link MemberContainer}s in + * some tests and as default members in tests in others.
+ *
+ * There are differences between this test class and the + * {@link cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests.MemberContainerTest}. + * This test class checks the similarity of 2 {@link MemberContainer} instances + * of the same type but with varying {@link Member} instances. The latter only + * tests the similarity of {@link MemberContainer} instances of the same type + * with the same {@link Member} instances.
+ *
+ * This test class is overshadowed by neither + * {@link cipm.consistency.fitests.similarity.jamopp.unittests.impltests} nor + * {@link cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests}, + * because the type of the {@link MemberContainer} containing a certain + * {@link Member} can indirectly influence the similarity checking result of + * both {@link MemberContainer} instances and {@link Member} instances (via + * qualified name differences for instance). + * + * @author Alp Torac Genc + */ +public class MemberInContainerTest extends AbstractJaMoPPSimilarityTest { + /** + * @return A list of all initialisers that implement {@link IMemberInitialiser}. + * If an initialiser is adaptable, it will be adapted. Non-adaptable + * initialisers will be unaffected. + */ + private static List getAllMemberInitInstances() { + var res = new ArrayList(); + var inits = new JaMoPPInitialiserParameters().getEachInitialiserOnceBySuper(IMemberInitialiser.class); + inits.forEach((i) -> res.add(((IMemberInitialiser) i))); + return res; + } + + /** + * @return A list of all initialisers that implement + * {@link IMemberContainerInitialiser}. If an initialiser is adaptable, + * it will be adapted. Non-adaptable initialisers will be unaffected. + */ + private static List getAllMemberContainerInitInstances() { + var res = new ArrayList(); + var inits = new JaMoPPInitialiserParameters().getEachInitialiserOnceBySuper(IMemberContainerInitialiser.class); + inits.forEach((i) -> res.add(((IMemberContainerInitialiser) i))); + return res; + } + + /** + * @return Parameters for the test methods in this test class. Refer to their + * documentation for more information. + */ + private static Stream getMemConMemPairs() { + var res = new ArrayList(); + + for (var memConInit : getAllMemberContainerInitInstances()) { + for (var memInit1 : getAllMemberInitInstances()) { + for (var memInit2 : getAllMemberInitInstances()) { + var displayName = memInit1.getClass().getSimpleName() + " - " + memInit2.getClass().getSimpleName() + + " in " + memConInit.getClass().getSimpleName(); + res.add(Arguments.of(displayName, memConInit, memInit1, memInit2)); + } + } + } + + return res.stream(); + } + + /** + * Tests whether 2 {@link MemberContainer} instances of the same type are + * considered to be similar, if certain {@link Member} instances are added to + * them as ordinary members ({@code via memConInit.addMember(member)}). + * + * @param displayName The display name of the test + * @param memConInit The initialiser that will be used to instantiate both + * member containers + * @param memInit1 The member that will be added to the first member + * container instance (as ordinary member) + * @param memInit2 The member that will be added to the second member + * container instance (as ordinary member) + */ + @ParameterizedTest(name = "{0}") + @MethodSource("getMemConMemPairs") + public void testMembersInContainers(String displayName, IMemberContainerInitialiser memConInit, + IMemberInitialiser memInit1, IMemberInitialiser memInit2) { + var mem1 = memInit1.instantiate(); + var mem2 = memInit2.instantiate(); + + var memCon1 = memConInit.instantiate(); + Assertions.assertTrue(memConInit.initialise(memCon1)); + var memCon2 = memConInit.instantiate(); + Assertions.assertTrue(memConInit.initialise(memCon2)); + + this.assertSimilarityResult(memCon1, memCon2, true); + + Assertions.assertTrue(memConInit.addMember(memCon1, mem1)); + Assertions.assertTrue(memConInit.addMember(memCon2, mem2)); + + this.assertSimilarityResult(memCon1, memCon2, + mem1.getClass().equals(mem2.getClass()) || (this.getExpectedSimilarityResult(memCon1.getClass(), + MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS) + && this.getExpectedSimilarityResult(memCon2.getClass(), + MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS))); + } + + /** + * Tests whether 2 {@link MemberContainer} instances of the same type are + * considered to be similar, if certain {@link Member} instances are added to + * them as default members ({@code via memConInit.addDefaultMember(member)}). + * + * @param displayName The display name of the test + * @param memConInit The initialiser that will be used to instantiate both + * member containers + * @param memInit1 The member that will be added to the first member + * container instance (as default member) + * @param memInit2 The member that will be added to the second member + * container instance (as default member) + */ + @ParameterizedTest(name = "{0}") + @MethodSource("getMemConMemPairs") + public void testDefaultMembersInContainers(String displayName, IMemberContainerInitialiser memConInit, + IMemberInitialiser memInit1, IMemberInitialiser memInit2) { + var mem1 = memInit1.instantiate(); + var mem2 = memInit2.instantiate(); + + var memCon1 = memConInit.instantiate(); + Assertions.assertTrue(memConInit.initialise(memCon1)); + var memCon2 = memConInit.instantiate(); + Assertions.assertTrue(memConInit.initialise(memCon2)); + + this.assertSimilarityResult(memCon1, memCon2, true); + + Assertions.assertTrue(memConInit.addDefaultMember(memCon1, mem1)); + Assertions.assertTrue(memConInit.addDefaultMember(memCon2, mem2)); + + this.assertSimilarityResult(memCon1, memCon2, + mem1.getClass().equals(mem2.getClass()) || (this.getExpectedSimilarityResult(memCon1.getClass(), + MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS) + && this.getExpectedSimilarityResult(memCon2.getClass(), + MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS))); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/StatementPositionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/StatementPositionTest.java new file mode 100644 index 0000000000..aeda8611b9 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/StatementPositionTest.java @@ -0,0 +1,210 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.complextests; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Stream; + +import org.emftext.language.java.statements.ExpressionStatement; +import org.emftext.language.java.statements.LocalVariableStatement; +import org.emftext.language.java.statements.Statement; +import org.emftext.language.java.statements.SynchronizedBlock; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.params.JaMoPPInitialiserParameters; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements; +import cipm.consistency.initialisers.jamopp.statements.IStatementInitialiser; +import cipm.consistency.initialisers.jamopp.statements.IStatementListContainerInitialiser; + +/** + * Tests whether similarity checking works as intended for {@link Statement} + * instances, which are contained in {@link StatementListContainer} instances. + * Since testing that requires setup effort that goes beyond simplistic tests, + * it is done here.
+ *
+ * Tests are parameterised over all possible combinations of + * {@link StatementListContainer} and {@link Statement} implementors. + * + * @author Alp Torac Genc + */ +public class StatementPositionTest extends AbstractJaMoPPSimilarityTest implements UsesStatements { + /** + * @return A list of all initialisers that implement + * {@link IStatementListContainerInitialiser}. If an initialiser is + * adaptable, it will be adapted. Non-adaptable initialisers will be + * unaffected. + */ + private static List getAllSLCInitInstances() { + var res = new ArrayList(); + var inits = new JaMoPPInitialiserParameters() + .getEachInitialiserOnceBySuper(IStatementListContainerInitialiser.class); + inits.forEach((i) -> res.add(((IStatementListContainerInitialiser) i))); + return res; + } + + /** + * @return A list of all initialisers that implement + * {@link IStatementInitialiser}. If an initialiser is adaptable, it + * will be adapted. Non-adaptable initialisers will be unaffected. + */ + private static List getAllStatementInitInstances() { + var res = new ArrayList(); + var inits = new JaMoPPInitialiserParameters().getEachInitialiserOnceBySuper(IStatementInitialiser.class); + inits.forEach((i) -> res.add(((IStatementInitialiser) i))); + return res; + } + + /** + * The return value of this method was derived from the implementation of the + * current similarity checker. + * + * @return Whether the position of an instance of the given class within its + * container matters. + */ + private static Boolean doesStatementPositionMatter(Class cls) { + return ExpressionStatement.class.isAssignableFrom(cls) || LocalVariableStatement.class.isAssignableFrom(cls) + || SynchronizedBlock.class.isAssignableFrom(cls); + } + + /** + * @return Parameters for the test methods in this test class. Refer to their + * documentation for more information. + */ + private static Stream genTestParams() { + var res = new ArrayList(); + + for (var stInit : getAllStatementInitInstances()) { + for (var slcInit : getAllSLCInitInstances()) { + var displayName = stInit.getClass().getSimpleName() + " in " + slcInit.getClass().getSimpleName(); + + res.add(Arguments.of(displayName, slcInit, stInit)); + } + } + + return res.stream(); + } + + /** + * Tests if similar {@link Statement} instances contained by their respective + * {@link StatementListContainer} instance are similar, provided they are + * contained in the same order. + * + * @param displayName The display name of the test + * @param containerInit The initialiser that will be used to instantiate the + * statement list container + * @param containeeInit The initialiser that will be used to instantiate the + * statement that will be added to the constructed + * container + */ + @ParameterizedTest(name = "{0}") + @MethodSource("genTestParams") + public void testSameStatementPosition(String displayName, IStatementListContainerInitialiser containerInit, + IStatementInitialiser containeeInit) { + var slc1 = containerInit.instantiate(); + Assertions.assertTrue(containerInit.initialise(slc1)); + var slc2 = containerInit.instantiate(); + Assertions.assertTrue(containerInit.initialise(slc2)); + + var lv1name = "lv1"; + var lv2name = "lv2"; + + // Use 3 statements to make sure that there is always a predecessor and a + // successor for the statement generated by containeeInit + + var st11 = this.createMinimalLVS(lv1name); + var st12 = containeeInit.instantiate(); + var st13 = this.createMinimalLVS(lv2name); + + // Make sure that the surrounding statements are not similar + this.assertSimilarityResult(st11, st13, false); + var sts1 = new Statement[] { st11, st12, st13 }; + + var st21 = this.cloneEObj(st11); + var st22 = this.cloneEObj(st12); + var st23 = this.cloneEObj(st13); + + // Make sure that clones of surrounding statements are not similar + this.assertSimilarityResult(st21, st23, false); + var sts2 = new Statement[] { st21, st22, st23 }; + + Assertions.assertTrue(containerInit.addStatements(slc1, sts1)); + Assertions.assertTrue(containerInit.addStatements(slc2, sts2)); + + // Since similar statements are added in the same order, they are similar, if + // their position within the respective arrays is the same + for (int i = 0; i < sts1.length; i++) { + for (int j = 0; j < sts2.length; j++) { + var st1 = sts1[i]; + var st2 = sts2[j]; + + this.assertSimilarityResult(st1, st2, i == j); + } + } + } + + /** + * Tests if similar {@link Statement} instances contained by their respective + * {@link StatementListContainer} instance are not similar, provided their order + * within their container differ. + * + * @param displayName The display name of the test + * @param containerInit The initialiser that will be used to instantiate the + * statement list container + * @param containeeInit The initialiser that will be used to instantiate the + * statement that will be added to the constructed + * container + */ + @ParameterizedTest + @MethodSource("genTestParams") + public void testDifferentStatementPosition(String displayName, IStatementListContainerInitialiser containerInit, + IStatementInitialiser containeeInit) { + var containeeCls = containeeInit.instantiate().getClass(); + + var slc1 = containerInit.instantiate(); + Assertions.assertTrue(containerInit.initialise(slc1)); + var slc2 = containerInit.instantiate(); + Assertions.assertTrue(containerInit.initialise(slc2)); + + var lv1name = "lv1"; + var lv2name = "lv2"; + + // Use 3 statements to make sure that there is always a predecessor and a + // successor for the statement generated by containeeInit + + var st11 = this.createMinimalLVS(lv1name); + var st12 = containeeInit.instantiate(); + var st13 = this.createMinimalLVS(lv2name); + + // Make sure that the surrounding statements are not similar + this.assertSimilarityResult(st11, st13, false); + var sts1 = new Statement[] { st11, st12, st13 }; + + var st21 = this.cloneEObj(st11); + var st22 = this.cloneEObj(st12); + var st23 = this.cloneEObj(st13); + + // Make sure that clones of surrounding statements are not similar + this.assertSimilarityResult(st21, st23, false); + var sts2 = new Statement[] { st23, st22, st21 }; + + Assertions.assertTrue(containerInit.addStatements(slc1, sts1)); + Assertions.assertTrue(containerInit.addStatements(slc2, sts2)); + + // Since similar statements are added in the reverse order, only the statements + // generated by containeeInit are similar, if similarity checking ignores their + // positioning within their container. The order of the surrounding st variables + // never match and they are not similar, as asserted above. + for (int i = 0; i < sts1.length; i++) { + for (int j = 0; j < sts2.length; j++) { + var st1 = sts1[i]; + var st2 = sts2[j]; + + this.assertSimilarityResult(st1, st2, containeeCls.isAssignableFrom(st1.getClass()) + && containeeCls.isAssignableFrom(st2.getClass()) && !doesStatementPositionMatter(containeeCls)); + } + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/package-info.java new file mode 100644 index 0000000000..3e96529b1e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/complextests/package-info.java @@ -0,0 +1,21 @@ +/** + * Contains unit tests for {@link EObject} classes/interfaces within JaMoPP. In + * the said tests, {@link EObject} instances are constructed programmatically + * and are checked for similarity.
+ *
+ * The tests within this package are meant to test more advanced cases, which + * are not covered in + * {@link cipm.consistency.fitests.similarity.jamopp.unittests.impltests} or + * {@link cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests}. + * Such cases involve multiple attributes of 2 {@link EObject} instances being + * different and/or more advanced test setup. + * + * TODO Add complex tests for AdditionalField (once the missing case methods are + * added) + * + * TODO Add complex tests for LocalVariableStatement with container Variable + * + * TODO Look for further complex test cases (once the missing case methods are + * added) + */ +package cipm.consistency.fitests.similarity.jamopp.unittests.complextests; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AdditiveExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AdditiveExpressionTest.java new file mode 100644 index 0000000000..8bb79fafa9 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AdditiveExpressionTest.java @@ -0,0 +1,69 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.AdditiveExpression; +import org.emftext.language.java.expressions.AdditiveExpressionChild; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.operators.AdditiveOperator; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.AdditiveExpressionInitialiser; + +public class AdditiveExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected AdditiveExpression initElement(AdditiveExpressionChild[] children, AdditiveOperator[] ops) { + var aeInit = new AdditiveExpressionInitialiser(); + var ae = aeInit.instantiate(); + Assertions.assertTrue(aeInit.addChildren(ae, children)); + Assertions.assertTrue(aeInit.addAdditiveOperators(ae, ops)); + return ae; + } + + @Test + public void testChild() { + this.testSimilarity( + this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null), + ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }, null), + this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new AdditiveExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + new AdditiveExpressionInitialiser(), false, ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__CHILDREN); + } + + @Test + public void testAdditiveOperator() { + this.testSimilarity(this.initElement(null, new AdditiveOperator[] { this.createAdditionOperator() }), + this.initElement(null, new AdditiveOperator[] { this.createSubtractionOperator() }), + ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__ADDITIVE_OPERATORS); + } + + @Test + public void testAdditiveOperatorSize() { + this.testSimilarity( + this.initElement(null, + new AdditiveOperator[] { this.createAdditionOperator(), this.createSubtractionOperator() }), + this.initElement(null, new AdditiveOperator[] { this.createAdditionOperator() }), + ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__ADDITIVE_OPERATORS); + } + + @Test + public void testAdditiveOperatorNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, new AdditiveOperator[] { this.createAdditionOperator() }), + new AdditiveExpressionInitialiser(), false, + ExpressionsPackage.Literals.ADDITIVE_EXPRESSION__ADDITIVE_OPERATORS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AndExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AndExpressionTest.java new file mode 100644 index 0000000000..ab90efaff3 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AndExpressionTest.java @@ -0,0 +1,41 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.AndExpression; +import org.emftext.language.java.expressions.AndExpressionChild; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.AndExpressionInitialiser; + +public class AndExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected AndExpression initElement(AndExpressionChild[] children) { + var aeInit = new AndExpressionInitialiser(); + var ae = aeInit.instantiate(); + Assertions.assertTrue(aeInit.addChildren(ae, children)); + return ae; + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(new AndExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + this.initElement(new AndExpressionChild[] { this.createDecimalIntegerLiteral(2) }), + ExpressionsPackage.Literals.AND_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity(this.initElement( + new AndExpressionChild[] { this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2) }), + this.initElement(new AndExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + ExpressionsPackage.Literals.AND_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck(this.initElement(new AndExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + new AndExpressionInitialiser(), false, ExpressionsPackage.Literals.AND_EXPRESSION__CHILDREN); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationAttributeSettingTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationAttributeSettingTest.java new file mode 100644 index 0000000000..be86e6c95a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationAttributeSettingTest.java @@ -0,0 +1,57 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.annotations.AnnotationAttributeSetting; +import org.emftext.language.java.annotations.AnnotationValue; +import org.emftext.language.java.annotations.AnnotationsPackage; +import org.emftext.language.java.members.InterfaceMethod; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationValues; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesMethods; +import cipm.consistency.initialisers.jamopp.annotations.AnnotationAttributeSettingInitialiser; + +public class AnnotationAttributeSettingTest extends AbstractJaMoPPSimilarityTest implements UsesMethods, UsesAnnotationValues { + protected AnnotationAttributeSetting initElement(InterfaceMethod attr, AnnotationValue val) { + var initialiser = new AnnotationAttributeSettingInitialiser(); + AnnotationAttributeSetting result = initialiser.instantiate(); + Assertions.assertTrue(initialiser.setAttribute(result, attr)); + Assertions.assertTrue(initialiser.setValue(result, val)); + + return result; + } + + @Test + public void testAttribute() { + var objOne = this.initElement(this.createMinimalInterfaceMethodWithNullReturn("im1Name"), null); + var objTwo = this.initElement(this.createMinimalInterfaceMethodWithNullReturn("im2Name"), null); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__ATTRIBUTE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testAttributeNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalInterfaceMethodWithNullReturn("im1Name"), null), + new AnnotationAttributeSettingInitialiser(), false, + AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__ATTRIBUTE); + } + + @Test + public void testValue() { + var objOne = this.initElement(null, this.createNullLiteral()); + var objTwo = this.initElement(null, this.createMinimalSR("val")); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createNullLiteral()), + new AnnotationAttributeSettingInitialiser(), false, + AnnotationsPackage.Literals.ANNOTATION_ATTRIBUTE_SETTING__VALUE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationInstanceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationInstanceTest.java new file mode 100644 index 0000000000..1a56c4e71a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationInstanceTest.java @@ -0,0 +1,57 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.annotations.AnnotationInstance; +import org.emftext.language.java.annotations.AnnotationParameter; +import org.emftext.language.java.annotations.AnnotationsPackage; +import org.emftext.language.java.classifiers.Classifier; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationParameters; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.initialisers.jamopp.annotations.AnnotationInstanceInitialiser; + +public class AnnotationInstanceTest extends AbstractJaMoPPSimilarityTest + implements UsesConcreteClassifiers, UsesAnnotationParameters { + + protected AnnotationInstance initElement(Classifier annotation, AnnotationParameter annoParam) { + var initialiser = new AnnotationInstanceInitialiser(); + AnnotationInstance ai = initialiser.instantiate(); + Assertions.assertTrue(initialiser.setAnnotation(ai, annotation)); + Assertions.assertTrue(initialiser.setParameter(ai, annoParam)); + return ai; + } + + @Test + public void testAnnotation() { + var objOne = this.initElement(this.createMinimalClass("cls1"), null); + var objTwo = this.initElement(this.createMinimalClass("cls2"), null); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_INSTANCE__ANNOTATION); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testAnnotationNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalClass("cls1"), null), + new AnnotationInstanceInitialiser(), false, + AnnotationsPackage.Literals.ANNOTATION_INSTANCE__ANNOTATION); + } + + @Test + public void testParameter() { + var objOne = this.initElement(null, this.createSingleNullAnnoParam()); + var objTwo = this.initElement(null, this.createSingleStrAnnoParam("val")); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_INSTANCE__PARAMETER); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testParameterNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createSingleNullAnnoParam()), + new AnnotationInstanceInitialiser(), false, AnnotationsPackage.Literals.ANNOTATION_INSTANCE__PARAMETER); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationParameterListTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationParameterListTest.java new file mode 100644 index 0000000000..acc71ebe39 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AnnotationParameterListTest.java @@ -0,0 +1,46 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.annotations.AnnotationAttributeSetting; +import org.emftext.language.java.annotations.AnnotationParameterList; +import org.emftext.language.java.annotations.AnnotationsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationAttributeSettings; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationParameters; +import cipm.consistency.initialisers.jamopp.annotations.AnnotationParameterListInitialiser; + +public class AnnotationParameterListTest extends AbstractJaMoPPSimilarityTest + implements UsesAnnotationParameters, UsesAnnotationAttributeSettings { + protected AnnotationParameterList initElement(AnnotationAttributeSetting[] annoAttrSettingsArr) { + var aplInit = new AnnotationParameterListInitialiser(); + var apl = aplInit.instantiate(); + Assertions.assertTrue(aplInit.addSettings(apl, annoAttrSettingsArr)); + return apl; + } + + @Test + public void testSetting() { + var objOne = this.initElement(new AnnotationAttributeSetting[] { this.createEmptyAAS() }); + var objTwo = this.initElement(new AnnotationAttributeSetting[] { this.createNullAAS() }); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_PARAMETER_LIST__SETTINGS); + } + + @Test + public void testSettingSize() { + var objOne = this + .initElement(new AnnotationAttributeSetting[] { this.createEmptyAAS(), this.createNullAAS() }); + var objTwo = this.initElement(new AnnotationAttributeSetting[] { this.createEmptyAAS() }); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTATION_PARAMETER_LIST__SETTINGS); + } + + @Test + public void testSettingNullCheck() { + this.testSimilarityNullCheck(this.initElement(new AnnotationAttributeSetting[] { this.createEmptyAAS() }), + new AnnotationParameterListInitialiser(), false, + AnnotationsPackage.Literals.ANNOTATION_PARAMETER_LIST__SETTINGS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInitializerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInitializerTest.java new file mode 100644 index 0000000000..06df7b9e96 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInitializerTest.java @@ -0,0 +1,44 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.arrays.ArrayInitializationValue; +import org.emftext.language.java.arrays.ArraysPackage; +import org.emftext.language.java.arrays.ArrayInitializer; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.arrays.ArrayInitializerInitialiser; + +public class ArrayInitializerTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ArrayInitializer initElement(ArrayInitializationValue[] initVals) { + var aiInit = new ArrayInitializerInitialiser(); + var ai = aiInit.instantiate(); + Assertions.assertTrue(aiInit.addInitialValues(ai, initVals)); + return ai; + } + + @Test + public void testInitialValues() { + var objOne = this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(1) }); + var objTwo = this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(2) }); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INITIALIZER__INITIAL_VALUES); + } + + @Test + public void testInitialValuesSize() { + var objOne = this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }); + var objTwo = this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(1) }); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INITIALIZER__INITIAL_VALUES); + } + + @Test + public void testInitialValuesNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new ArrayInitializationValue[] { this.createDecimalIntegerLiteral(1) }), + new ArrayInitializerInitialiser(), false, ArraysPackage.Literals.ARRAY_INITIALIZER__INITIAL_VALUES); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInstantiationBySizeTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInstantiationBySizeTest.java new file mode 100644 index 0000000000..84eaf8f740 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArrayInstantiationBySizeTest.java @@ -0,0 +1,44 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.arrays.ArrayInstantiationBySize; +import org.emftext.language.java.arrays.ArraysPackage; +import org.emftext.language.java.expressions.Expression; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.arrays.ArrayInstantiationBySizeInitialiser; + +public class ArrayInstantiationBySizeTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ArrayInstantiationBySize initElement(Expression[] sizes) { + var aibsInit = new ArrayInstantiationBySizeInitialiser(); + var aibs = aibsInit.instantiate(); + Assertions.assertTrue(aibsInit.addSizes(aibs, sizes)); + return aibs; + } + + @Test + public void testSize() { + var objOne = this.initElement(new Expression[] { this.createDecimalIntegerLiteral(1) }); + var objTwo = this.initElement(new Expression[] { this.createDecimalIntegerLiteral(2) }); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_SIZE__SIZES); + } + + @Test + public void testSizeSize() { + var objOne = this.initElement( + new Expression[] { this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2) }); + var objTwo = this.initElement(new Expression[] { this.createDecimalIntegerLiteral(1) }); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_SIZE__SIZES); + } + + @Test + public void testSizeNullCheck() { + this.testSimilarityNullCheck(this.initElement(new Expression[] { this.createDecimalIntegerLiteral(1) }), + new ArrayInstantiationBySizeInitialiser(), false, + ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_SIZE__SIZES); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArraySelectorTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArraySelectorTest.java new file mode 100644 index 0000000000..416f85893b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ArraySelectorTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.arrays.ArraysPackage; +import org.emftext.language.java.expressions.Expression; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.arrays.ArraySelectorInitialiser; + +public class ArraySelectorTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ArraySelector initElement(Expression pos) { + var asInit = new ArraySelectorInitialiser(); + var as = asInit.instantiate(); + Assertions.assertTrue(asInit.setPosition(as, pos)); + return as; + } + + @Test + public void testPosition() { + var objOne = this.initElement(this.createDecimalIntegerLiteral(1)); + var objTwo = this.initElement(this.createDecimalIntegerLiteral(2)); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_SELECTOR__POSITION); + } + + @Test + public void testPositionNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)), + new ArraySelectorInitialiser(), false, ArraysPackage.Literals.ARRAY_SELECTOR__POSITION); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssertTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssertTest.java new file mode 100644 index 0000000000..4f3c999d97 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssertTest.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Assert; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStringReferences; +import cipm.consistency.initialisers.jamopp.statements.AssertInitialiser; + +public class AssertTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions, UsesStringReferences { + protected Assert initElement(Expression errMsg) { + var asrtInit = new AssertInitialiser(); + var asrt = asrtInit.instantiate(); + Assertions.assertTrue(asrtInit.setErrorMessage(asrt, errMsg)); + return asrt; + } + + @Test + public void testErrorMessage() { + var objOne = this.initElement(this.createMinimalSR("val1")); + var objTwo = this.initElement(this.createMinimalSR("val2")); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.ASSERT__ERROR_MESSAGE); + } + + @Test + public void testErrorMessageNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalSR("val1")), new AssertInitialiser(), false, + StatementsPackage.Literals.ASSERT__ERROR_MESSAGE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssignmentExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssignmentExpressionTest.java new file mode 100644 index 0000000000..9ab7998631 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/AssignmentExpressionTest.java @@ -0,0 +1,64 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.AssignmentExpression; +import org.emftext.language.java.expressions.AssignmentExpressionChild; +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.operators.AssignmentOperator; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.AssignmentExpressionInitialiser; + +public class AssignmentExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected AssignmentExpression initElement(AssignmentOperator op, AssignmentExpressionChild child, Expression val) { + var aeInit = new AssignmentExpressionInitialiser(); + var ae = aeInit.instantiate(); + Assertions.assertTrue(aeInit.setAssignmentOperator(ae, op)); + Assertions.assertTrue(aeInit.setChild(ae, child)); + Assertions.assertTrue(aeInit.setValue(ae, val)); + return ae; + } + + @Test + public void testAssignmentOperator() { + this.testSimilarity(this.initElement(this.createAssignmentOperator(), null, null), + this.initElement(this.createAssignmentOrOperator(), null, null), + ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__ASSIGNMENT_OPERATOR); + } + + @Test + public void testAssignmentOperatorNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createAssignmentOperator(), null, null), + new AssignmentExpressionInitialiser(), false, + ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__ASSIGNMENT_OPERATOR); + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(null, this.createDecimalIntegerLiteral(1), null), + this.initElement(null, this.createDecimalIntegerLiteral(2), null), + ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__CHILD); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createDecimalIntegerLiteral(1), null), + new AssignmentExpressionInitialiser(), false, ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__CHILD); + } + + @Test + public void testValue() { + this.testSimilarity(this.initElement(null, null, this.createDecimalIntegerLiteral(1)), + this.initElement(null, null, this.createDecimalIntegerLiteral(2)), + ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VALUE); + } + + @Test + public void testValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, null, this.createDecimalIntegerLiteral(1)), + new AssignmentExpressionInitialiser(), false, ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VALUE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryIntegerLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryIntegerLiteralTest.java new file mode 100644 index 0000000000..c3ff155dcb --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryIntegerLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.BinaryIntegerLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.BinaryIntegerLiteralInitialiser; + +public class BinaryIntegerLiteralTest extends AbstractJaMoPPSimilarityTest { + protected BinaryIntegerLiteral initElement(int val) { + var init = new BinaryIntegerLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setBinaryValue(lit, val)); + return lit; + } + + @Test + public void testBinaryValue() { + this.testSimilarity(this.initElement(1), this.initElement(2), + LiteralsPackage.Literals.BINARY_INTEGER_LITERAL__BINARY_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testBinaryValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1), new BinaryIntegerLiteralInitialiser(), false, + LiteralsPackage.Literals.BINARY_INTEGER_LITERAL__BINARY_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryLongLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryLongLiteralTest.java new file mode 100644 index 0000000000..b52c393409 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BinaryLongLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.BinaryLongLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.BinaryLongLiteralInitialiser; + +public class BinaryLongLiteralTest extends AbstractJaMoPPSimilarityTest { + protected BinaryLongLiteral initElement(long val) { + var init = new BinaryLongLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setBinaryValue(lit, val)); + return lit; + } + + @Test + public void testBinaryValue() { + this.testSimilarity(this.initElement(1), this.initElement(2), + LiteralsPackage.Literals.BINARY_LONG_LITERAL__BINARY_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testBinaryValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1), new BinaryLongLiteralInitialiser(), false, + LiteralsPackage.Literals.BINARY_LONG_LITERAL__BINARY_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BooleanLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BooleanLiteralTest.java new file mode 100644 index 0000000000..0c2c8dda16 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/BooleanLiteralTest.java @@ -0,0 +1,30 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.BooleanLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.BooleanLiteralInitialiser; + +public class BooleanLiteralTest extends AbstractJaMoPPSimilarityTest { + protected BooleanLiteral initElement(boolean val) { + var init = new BooleanLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setValue(lit, val)); + return lit; + } + + @Test + public void testValue() { + this.testSimilarity(this.initElement(true), this.initElement(false), + LiteralsPackage.Literals.BOOLEAN_LITERAL__VALUE); + } + + @Test + public void testValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(true), new BooleanLiteralInitialiser(), false, + LiteralsPackage.Literals.BOOLEAN_LITERAL__VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CastExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CastExpressionTest.java new file mode 100644 index 0000000000..1364f0c43b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CastExpressionTest.java @@ -0,0 +1,65 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.CastExpression; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.MultiplicativeExpressionChild; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.expressions.CastExpressionInitialiser; + +/** + * + * General child and child are the same. Therefore testChild is left out. + * + * @author Alp Torac Genc + */ +public class CastExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions, UsesTypeReferences { + protected CastExpression initElement(TypeReference[] additionalBoundsArr, MultiplicativeExpressionChild child) { + var ceInit = new CastExpressionInitialiser(); + var ce = ceInit.instantiate(); + Assertions.assertTrue(ceInit.addAdditionalBounds(ce, additionalBoundsArr)); + Assertions.assertTrue(ceInit.setChild(ce, child)); + return ce; + } + + @Test + public void testAdditionalBound() { + this.testSimilarity(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null), + this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") }, null), + ExpressionsPackage.Literals.CAST_EXPRESSION__ADDITIONAL_BOUNDS); + } + + @Test + public void testAdditionalBoundSize() { + this.testSimilarity( + this.initElement( + new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }, + null), + this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null), + ExpressionsPackage.Literals.CAST_EXPRESSION__ADDITIONAL_BOUNDS); + } + + @Test + public void testAdditionalBoundNullCheck() { + this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null), + new CastExpressionInitialiser(), false, ExpressionsPackage.Literals.CAST_EXPRESSION__ADDITIONAL_BOUNDS); + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(null, this.createDecimalIntegerLiteral(1)), + this.initElement(null, this.createDecimalIntegerLiteral(2)), + ExpressionsPackage.Literals.CAST_EXPRESSION__GENERAL_CHILD); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createDecimalIntegerLiteral(1)), + new CastExpressionInitialiser(), false, ExpressionsPackage.Literals.CAST_EXPRESSION__GENERAL_CHILD); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchBlockTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchBlockTest.java new file mode 100644 index 0000000000..735c0d3f7e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchBlockTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.parameters.OrdinaryParameter; +import org.emftext.language.java.statements.CatchBlock; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesParameters; +import cipm.consistency.initialisers.jamopp.statements.CatchBlockInitialiser; + +public class CatchBlockTest extends AbstractJaMoPPSimilarityTest implements UsesParameters { + protected CatchBlock initElement(OrdinaryParameter param) { + var cbInit = new CatchBlockInitialiser(); + var cb = cbInit.instantiate(); + Assertions.assertTrue(cbInit.setParameter(cb, param)); + return cb; + } + + @Test + public void testParameter() { + var objOne = this.initElement(this.createMinimalOrdParamWithClsTarget("param1", "cls1")); + var objTwo = this.initElement(this.createMinimalOrdParamWithClsTarget("param2", "cls2")); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.CATCH_BLOCK__PARAMETER); + } + + @Test + public void testParameterNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalOrdParamWithClsTarget("param1", "cls1")), + new CatchBlockInitialiser(), false, StatementsPackage.Literals.CATCH_BLOCK__PARAMETER); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchParameterTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchParameterTest.java new file mode 100644 index 0000000000..1f8a2fc19b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CatchParameterTest.java @@ -0,0 +1,43 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.parameters.CatchParameter; +import org.emftext.language.java.parameters.ParametersPackage; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.parameters.CatchParameterInitialiser; + +public class CatchParameterTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + protected CatchParameter initElement(TypeReference[] trefs) { + var cpInit = new CatchParameterInitialiser(); + var cp = cpInit.instantiate(); + Assertions.assertTrue(cpInit.addTypeReferences(cp, trefs)); + return cp; + } + + @Test + public void testTypeReference() { + var objOne = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }); + var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") }); + + this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.CATCH_PARAMETER__TYPE_REFERENCES); + } + + @Test + public void testTypeReferenceSize() { + var objOne = this.initElement( + new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }); + var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }); + + this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.CATCH_PARAMETER__TYPE_REFERENCES); + } + + @Test + public void testTypeReferenceNullCheck() { + this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }), + new CatchParameterInitialiser(), false, ParametersPackage.Literals.CATCH_PARAMETER__TYPE_REFERENCES); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CharacterLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CharacterLiteralTest.java new file mode 100644 index 0000000000..1f62bce873 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CharacterLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.CharacterLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.CharacterLiteralInitialiser; + +public class CharacterLiteralTest extends AbstractJaMoPPSimilarityTest { + protected CharacterLiteral initElement(String val) { + var init = new CharacterLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setValue(lit, val)); + return lit; + } + + @Test + public void testValue() { + this.testSimilarity(this.initElement("a"), this.initElement("b"), + LiteralsPackage.Literals.CHARACTER_LITERAL__VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testValueNullCheck() { + this.testSimilarityNullCheck(this.initElement("a"), new CharacterLiteralInitialiser(), false, + LiteralsPackage.Literals.CHARACTER_LITERAL__VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassTest.java new file mode 100644 index 0000000000..2f146c20c3 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassTest.java @@ -0,0 +1,49 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser; + +import org.emftext.language.java.classifiers.Class; +import org.emftext.language.java.classifiers.ClassifiersPackage; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ClassTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + protected Class initElement(TypeReference defExt, TypeReference ext) { + var clsInit = new ClassInitialiser(); + var cls = clsInit.instantiate(); + Assertions.assertTrue(clsInit.setDefaultExtends(cls, defExt)); + Assertions.assertTrue(clsInit.setExtends(cls, ext)); + return cls; + } + + @Test + public void testDefaultExtends() { + var objOne = this.initElement(this.createMinimalClsRef("cls1"), null); + var objTwo = this.initElement(this.createMinimalClsRef("cls2"), null); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.CLASS__DEFAULT_EXTENDS); + } + + @Test + public void testDefaultExtendsNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalClsRef("cls1"), null), new ClassInitialiser(), + false, ClassifiersPackage.Literals.CLASS__DEFAULT_EXTENDS); + } + + @Test + public void testExtends() { + var objOne = this.initElement(null, this.createMinimalClsRef("cls1")); + var objTwo = this.initElement(null, this.createMinimalClsRef("cls2")); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.CLASS__EXTENDS); + } + + @Test + public void testExtendsNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createMinimalClsRef("cls1")), new ClassInitialiser(), + false, ClassifiersPackage.Literals.CLASS__EXTENDS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassifierReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassifierReferenceTest.java new file mode 100644 index 0000000000..e6bfab535e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ClassifierReferenceTest.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.ClassifierReference; +import org.emftext.language.java.types.TypesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser; + +public class ClassifierReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers { + protected ClassifierReference initElement(Classifier target) { + var init = new ClassifierReferenceInitialiser(); + var res = init.instantiate(); + + Assertions.assertTrue(init.setTarget(res, target)); + return res; + } + + @Test + public void testTarget() { + var objOne = this.initElement(this.createMinimalClass("cls1")); + var objTwo = this.initElement(this.createMinimalClass("cls2")); + + this.testSimilarity(objOne, objTwo, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET); + } + + @Test + public void testTargetNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalClass("cls1")), + new ClassifierReferenceInitialiser(), false, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CompilationUnitTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CompilationUnitTest.java new file mode 100644 index 0000000000..a128f86a59 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/CompilationUnitTest.java @@ -0,0 +1,46 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.emftext.language.java.containers.CompilationUnit; +import org.emftext.language.java.containers.ContainersPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.initialisers.jamopp.containers.CompilationUnitInitialiser; + +public class CompilationUnitTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers { + protected CompilationUnit initElement(ConcreteClassifier[] classifiers) { + var cuInit = new CompilationUnitInitialiser(); + var cu = cuInit.instantiate(); + Assertions.assertTrue(cuInit.setName(cu, this.getDefaultName())); + Assertions.assertTrue(cuInit.addClassifiers(cu, classifiers)); + return cu; + } + + @Test + public void testClassifier() { + var objOne = this.initElement(new ConcreteClassifier[] { this.createMinimalClass("cls1") }); + var objTwo = this.initElement(new ConcreteClassifier[] { this.createMinimalClass("cls2") }); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.COMPILATION_UNIT__CLASSIFIERS); + } + + @Test + public void testClassifierSize() { + var objOne = this.initElement( + new ConcreteClassifier[] { this.createMinimalClass("cls1"), this.createMinimalClass("cls2") }); + var objTwo = this.initElement(new ConcreteClassifier[] { this.createMinimalClass("cls1") }); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.COMPILATION_UNIT__CLASSIFIERS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testClassifierNullCheck() { + this.testSimilarityNullCheck(this.initElement(new ConcreteClassifier[] { this.createMinimalClass("cls1") }), + new CompilationUnitInitialiser(), false, ContainersPackage.Literals.COMPILATION_UNIT__CLASSIFIERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionTest.java new file mode 100644 index 0000000000..5b7f17b494 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.statements.Condition; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.statements.Statement; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements; +import cipm.consistency.initialisers.jamopp.statements.ConditionInitialiser; + +public class ConditionTest extends AbstractJaMoPPSimilarityTest implements UsesStatements { + protected Condition initElement(Statement elseSt) { + var conInit = new ConditionInitialiser(); + var con = conInit.instantiate(); + Assertions.assertTrue(conInit.setElseStatement(con, elseSt)); + return con; + } + + @Test + public void testElseStatement() { + var objOne = this.initElement(this.createMinimalTrivialAssert()); + var objTwo = this.initElement(this.createMinimalNullReturn()); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.CONDITION__ELSE_STATEMENT); + } + + @Test + public void testElseStatementNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalTrivialAssert()), new ConditionInitialiser(), + false, StatementsPackage.Literals.CONDITION__ELSE_STATEMENT); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalAndExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalAndExpressionTest.java new file mode 100644 index 0000000000..9738bbc480 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalAndExpressionTest.java @@ -0,0 +1,45 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ConditionalAndExpression; +import org.emftext.language.java.expressions.ConditionalAndExpressionChild; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.ConditionalAndExpressionInitialiser; + +public class ConditionalAndExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ConditionalAndExpression initElement(ConditionalAndExpressionChild[] children) { + var caeInit = new ConditionalAndExpressionInitialiser(); + var cae = caeInit.instantiate(); + Assertions.assertTrue(caeInit.addChildren(cae, children)); + return cae; + } + + @Test + public void testChild() { + this.testSimilarity( + this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(2) }), + ExpressionsPackage.Literals.CONDITIONAL_AND_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }), + this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + ExpressionsPackage.Literals.CONDITIONAL_AND_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new ConditionalAndExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + new ConditionalAndExpressionInitialiser(), false, + ExpressionsPackage.Literals.CONDITIONAL_AND_EXPRESSION__CHILDREN); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalExpressionTest.java new file mode 100644 index 0000000000..fa3b203970 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalExpressionTest.java @@ -0,0 +1,82 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.AssignmentExpressionChild; +import org.emftext.language.java.expressions.ConditionalExpression; +import org.emftext.language.java.expressions.ConditionalExpressionChild; +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.ConditionalExpressionInitialiser; + +public class ConditionalExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ConditionalExpression initElement(ConditionalExpressionChild child, AssignmentExpressionChild exprChild, + Expression exprIf, Expression generalExprElse) { + var ceInit = new ConditionalExpressionInitialiser(); + var ce = ceInit.instantiate(); + Assertions.assertTrue(ceInit.setChild(ce, child)); + Assertions.assertTrue(ceInit.setExpressionChild(ce, exprChild)); + Assertions.assertTrue(ceInit.setExpressionIf(ce, exprIf)); + Assertions.assertTrue(ceInit.setGeneralExpressionElse(ce, generalExprElse)); + return ce; + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(this.createDecimalIntegerLiteral(1), null, null, null), + this.initElement(this.createDecimalIntegerLiteral(2), null, null, null), + ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1), null, null, null), + new ConditionalExpressionInitialiser(), false, + ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD); + } + + @Test + public void testExpressionChild() { + this.testSimilarity(this.initElement(null, this.createDecimalIntegerLiteral(1), null, null), + this.initElement(null, this.createDecimalIntegerLiteral(2), null, null), + ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD); + } + + @Test + public void testExpressionChildNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createDecimalIntegerLiteral(1), null, null), + new ConditionalExpressionInitialiser(), false, + ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__CHILD); + } + + @Test + public void testExpressionIf() { + this.testSimilarity(this.initElement(null, null, this.createDecimalIntegerLiteral(1), null), + this.initElement(null, null, this.createDecimalIntegerLiteral(2), null), + ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__EXPRESSION_IF); + } + + @Test + public void testExpressionIfNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, null, this.createDecimalIntegerLiteral(1), null), + new ConditionalExpressionInitialiser(), false, + ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__EXPRESSION_IF); + } + + @Test + public void testGeneralExpressionElse() { + this.testSimilarity(this.initElement(null, null, null, this.createDecimalIntegerLiteral(1)), + this.initElement(null, null, null, this.createDecimalIntegerLiteral(2)), + ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__GENERAL_EXPRESSION_ELSE); + } + + @Test + public void testGeneralExpressionElseNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, null, null, this.createDecimalIntegerLiteral(1)), + new ConditionalExpressionInitialiser(), false, + ExpressionsPackage.Literals.CONDITIONAL_EXPRESSION__GENERAL_EXPRESSION_ELSE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalOrExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalOrExpressionTest.java new file mode 100644 index 0000000000..9380110268 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ConditionalOrExpressionTest.java @@ -0,0 +1,45 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ConditionalOrExpression; +import org.emftext.language.java.expressions.ConditionalOrExpressionChild; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.ConditionalOrExpressionInitialiser; + +public class ConditionalOrExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ConditionalOrExpression initElement(ConditionalOrExpressionChild[] children) { + var coeInit = new ConditionalOrExpressionInitialiser(); + var coe = coeInit.instantiate(); + Assertions.assertTrue(coeInit.addChildren(coe, children)); + return coe; + } + + @Test + public void testChild() { + this.testSimilarity( + this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(2) }), + ExpressionsPackage.Literals.CONDITIONAL_OR_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }), + this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + ExpressionsPackage.Literals.CONDITIONAL_OR_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new ConditionalOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + new ConditionalOrExpressionInitialiser(), false, + ExpressionsPackage.Literals.CONDITIONAL_OR_EXPRESSION__CHILDREN); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalDoubleLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalDoubleLiteralTest.java new file mode 100644 index 0000000000..7615db97f5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalDoubleLiteralTest.java @@ -0,0 +1,30 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.DecimalDoubleLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.DecimalDoubleLiteralInitialiser; + +public class DecimalDoubleLiteralTest extends AbstractJaMoPPSimilarityTest { + protected DecimalDoubleLiteral initElement(double val) { + var init = new DecimalDoubleLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setDecimalValue(lit, val)); + return lit; + } + + @Test + public void testDecimalValue() { + this.testSimilarity(this.initElement(1.5d), this.initElement(2.5d), + LiteralsPackage.Literals.DECIMAL_DOUBLE_LITERAL__DECIMAL_VALUE); + } + + @Test + public void testDecimalValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1.5d), new DecimalDoubleLiteralInitialiser(), false, + LiteralsPackage.Literals.DECIMAL_DOUBLE_LITERAL__DECIMAL_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalFloatLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalFloatLiteralTest.java new file mode 100644 index 0000000000..54a325706e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalFloatLiteralTest.java @@ -0,0 +1,30 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.DecimalFloatLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.DecimalFloatLiteralInitialiser; + +public class DecimalFloatLiteralTest extends AbstractJaMoPPSimilarityTest { + protected DecimalFloatLiteral initElement(float val) { + var init = new DecimalFloatLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setDecimalValue(lit, val)); + return lit; + } + + @Test + public void testDecimalValue() { + this.testSimilarity(this.initElement(1.5f), this.initElement(2.5f), + LiteralsPackage.Literals.DECIMAL_FLOAT_LITERAL__DECIMAL_VALUE); + } + + @Test + public void testDecimalValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1.5f), new DecimalFloatLiteralInitialiser(), false, + LiteralsPackage.Literals.DECIMAL_FLOAT_LITERAL__DECIMAL_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalIntegerLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalIntegerLiteralTest.java new file mode 100644 index 0000000000..26346982d7 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalIntegerLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.DecimalIntegerLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.DecimalIntegerLiteralInitialiser; + +public class DecimalIntegerLiteralTest extends AbstractJaMoPPSimilarityTest { + protected DecimalIntegerLiteral initElement(int val) { + var init = new DecimalIntegerLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setDecimalValue(lit, val)); + return lit; + } + + @Test + public void testDecimalValue() { + this.testSimilarity(this.initElement(1), this.initElement(2), + LiteralsPackage.Literals.DECIMAL_INTEGER_LITERAL__DECIMAL_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testDecimalValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1), new DecimalIntegerLiteralInitialiser(), false, + LiteralsPackage.Literals.DECIMAL_INTEGER_LITERAL__DECIMAL_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalLongLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalLongLiteralTest.java new file mode 100644 index 0000000000..e557d615f4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/DecimalLongLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.DecimalLongLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.DecimalLongLiteralInitialiser; + +public class DecimalLongLiteralTest extends AbstractJaMoPPSimilarityTest { + protected DecimalLongLiteral initElement(long val) { + var init = new DecimalLongLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setDecimalValue(lit, val)); + return lit; + } + + @Test + public void testDecimalValue() { + this.testSimilarity(this.initElement(1), this.initElement(2), + LiteralsPackage.Literals.DECIMAL_LONG_LITERAL__DECIMAL_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testDecimalValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1), new DecimalLongLiteralInitialiser(), false, + LiteralsPackage.Literals.DECIMAL_LONG_LITERAL__DECIMAL_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumConstantTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumConstantTest.java new file mode 100644 index 0000000000..cc4ec6487f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumConstantTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.classifiers.AnonymousClass; +import org.emftext.language.java.members.EnumConstant; +import org.emftext.language.java.members.MembersPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnonymousClasses; +import cipm.consistency.initialisers.jamopp.members.EnumConstantInitialiser; + +public class EnumConstantTest extends AbstractJaMoPPSimilarityTest implements UsesAnonymousClasses { + protected EnumConstant initElement(AnonymousClass anonymousCls) { + var ecInit = new EnumConstantInitialiser(); + var ec = ecInit.instantiate(); + Assertions.assertTrue(ecInit.setAnonymousClass(ec, anonymousCls)); + return ec; + } + + @Test + public void testAnonymousClass() { + var objOne = this.initElement(this.createMinimalAnonymousClassWithMethod("met1")); + var objTwo = this.initElement(this.createMinimalAnonymousClassWithMethod("met2")); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.ENUM_CONSTANT__ANONYMOUS_CLASS); + } + + @Test + public void testAnonymousClassNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalAnonymousClassWithMethod("met1")), + new EnumConstantInitialiser(), false, MembersPackage.Literals.ENUM_CONSTANT__ANONYMOUS_CLASS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumerationTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumerationTest.java new file mode 100644 index 0000000000..62b498b806 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EnumerationTest.java @@ -0,0 +1,43 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.classifiers.Enumeration; +import org.emftext.language.java.classifiers.ClassifiersPackage; +import org.emftext.language.java.members.EnumConstant; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesEnumConstants; +import cipm.consistency.initialisers.jamopp.classifiers.EnumerationInitialiser; + +public class EnumerationTest extends AbstractJaMoPPSimilarityTest implements UsesEnumConstants { + protected Enumeration initElement(EnumConstant[] consts) { + var enmInit = new EnumerationInitialiser(); + var enm = enmInit.instantiate(); + Assertions.assertTrue(enmInit.addConstants(enm, consts)); + return enm; + } + + @Test + public void testConstant() { + var objOne = this.initElement(new EnumConstant[] { this.createMinimalEnumConstant("cst1") }); + var objTwo = this.initElement(new EnumConstant[] { this.createMinimalEnumConstant("cst2") }); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.ENUMERATION__CONSTANTS); + } + + @Test + public void testConstantSize() { + var objOne = this.initElement( + new EnumConstant[] { this.createMinimalEnumConstant("cst1"), this.createMinimalEnumConstant("cst2") }); + var objTwo = this.initElement(new EnumConstant[] { this.createMinimalEnumConstant("cst1") }); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.ENUMERATION__CONSTANTS); + } + + @Test + public void testConstantNullCheck() { + this.testSimilarityNullCheck(this.initElement(new EnumConstant[] { this.createMinimalEnumConstant("cst1") }), + new EnumerationInitialiser(), false, ClassifiersPackage.Literals.ENUMERATION__CONSTANTS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EqualityExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EqualityExpressionTest.java new file mode 100644 index 0000000000..d3477bd5fc --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/EqualityExpressionTest.java @@ -0,0 +1,69 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.EqualityExpression; +import org.emftext.language.java.expressions.EqualityExpressionChild; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.operators.EqualityOperator; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.EqualityExpressionInitialiser; + +public class EqualityExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected EqualityExpression initElement(EqualityExpressionChild[] children, EqualityOperator[] ops) { + var eeInit = new EqualityExpressionInitialiser(); + var ee = eeInit.instantiate(); + Assertions.assertTrue(eeInit.addChildren(ee, children)); + Assertions.assertTrue(eeInit.addEqualityOperators(ee, ops)); + return ee; + } + + @Test + public void testChild() { + this.testSimilarity( + this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null), + ExpressionsPackage.Literals.EQUALITY_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }, null), + this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + ExpressionsPackage.Literals.EQUALITY_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new EqualityExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + new EqualityExpressionInitialiser(), false, ExpressionsPackage.Literals.EQUALITY_EXPRESSION__CHILDREN); + } + + @Test + public void testEqualityOperator() { + this.testSimilarity(this.initElement(null, new EqualityOperator[] { this.createEqualityOperator() }), + this.initElement(null, new EqualityOperator[] { this.createNotEqualOperator() }), + ExpressionsPackage.Literals.EQUALITY_EXPRESSION__EQUALITY_OPERATORS); + } + + @Test + public void testEqualityOperatorSize() { + this.testSimilarity( + this.initElement(null, + new EqualityOperator[] { this.createEqualityOperator(), this.createNotEqualOperator() }), + this.initElement(null, new EqualityOperator[] { this.createEqualityOperator() }), + ExpressionsPackage.Literals.EQUALITY_EXPRESSION__EQUALITY_OPERATORS); + } + + @Test + public void testEqualityOperatorNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, new EqualityOperator[] { this.createEqualityOperator() }), + new EqualityExpressionInitialiser(), false, + ExpressionsPackage.Literals.EQUALITY_EXPRESSION__EQUALITY_OPERATORS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExclusiveOrExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExclusiveOrExpressionTest.java new file mode 100644 index 0000000000..b4ed99eb10 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExclusiveOrExpressionTest.java @@ -0,0 +1,44 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExclusiveOrExpression; +import org.emftext.language.java.expressions.ExclusiveOrExpressionChild; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.ExclusiveOrExpressionInitialiser; + +public class ExclusiveOrExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ExclusiveOrExpression initElement(ExclusiveOrExpressionChild[] children) { + var eoeInit = new ExclusiveOrExpressionInitialiser(); + var eoe = eoeInit.instantiate(); + Assertions.assertTrue(eoeInit.addChildren(eoe, children)); + return eoe; + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(2) }), + ExpressionsPackage.Literals.EXCLUSIVE_OR_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }), + this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + ExpressionsPackage.Literals.EXCLUSIVE_OR_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new ExclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + new ExclusiveOrExpressionInitialiser(), false, + ExpressionsPackage.Literals.EXCLUSIVE_OR_EXPRESSION__CHILDREN); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExplicitConstructorCallTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExplicitConstructorCallTest.java new file mode 100644 index 0000000000..363323a090 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExplicitConstructorCallTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.instantiations.ExplicitConstructorCall; +import org.emftext.language.java.instantiations.InstantiationsPackage; +import org.emftext.language.java.literals.Self; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.instantiations.ExplicitConstructorCallInitialiser; + +public class ExplicitConstructorCallTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ExplicitConstructorCall initElement(Self callTarget) { + var eccInit = new ExplicitConstructorCallInitialiser(); + var ecc = eccInit.instantiate(); + Assertions.assertTrue(eccInit.setCallTarget(ecc, callTarget)); + return ecc; + } + + @Test + public void testCallTarget() { + var objOne = this.initElement(this.createThis()); + var objTwo = this.initElement(this.createSuper()); + + this.testSimilarity(objOne, objTwo, InstantiationsPackage.Literals.EXPLICIT_CONSTRUCTOR_CALL__CALL_TARGET); + } + + @Test + public void testCallTargetNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createThis()), new ExplicitConstructorCallInitialiser(), + false, InstantiationsPackage.Literals.EXPLICIT_CONSTRUCTOR_CALL__CALL_TARGET); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionListTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionListTest.java new file mode 100644 index 0000000000..dfa641c081 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionListTest.java @@ -0,0 +1,42 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.expressions.ExpressionList; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.ExpressionListInitialiser; + +public class ExpressionListTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ExpressionList initElement(Expression[] exprs) { + var elInit = new ExpressionListInitialiser(); + var el = elInit.instantiate(); + Assertions.assertTrue(elInit.addExpressions(el, exprs)); + return el; + } + + @Test + public void testExpression() { + var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE() }); + var objTwo = this.initElement(new Expression[] { this.createMinimalTrueNEE() }); + + this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.EXPRESSION_LIST__EXPRESSIONS); + } + + @Test + public void testExpressionSize() { + var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE(), this.createMinimalTrueNEE() }); + var objTwo = this.initElement(new Expression[] { this.createMinimalFalseEE() }); + + this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.EXPRESSION_LIST__EXPRESSIONS); + } + + @Test + public void testExpressionNullCheck() { + this.testSimilarityNullCheck(this.initElement(new Expression[] { this.createMinimalFalseEE() }), + new ExpressionListInitialiser(), false, ExpressionsPackage.Literals.EXPRESSION_LIST__EXPRESSIONS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionStatementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionStatementTest.java new file mode 100644 index 0000000000..9dd802137c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExpressionStatementTest.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.ExpressionStatement; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.ExpressionStatementInitialiser; + +public class ExpressionStatementTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ExpressionStatement initElement(Expression expr) { + var esInit = new ExpressionStatementInitialiser(); + var es = esInit.instantiate(); + Assertions.assertTrue(esInit.setExpression(es, expr)); + return es; + } + + @Test + public void testExpression() { + var objOne = this.initElement(this.createMinimalFalseEE()); + var objTwo = this.initElement(this.createMinimalTrueNEE()); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.EXPRESSION_STATEMENT__EXPRESSION); + } + + @Test + public void testExpressionNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalFalseEE()), + new ExpressionStatementInitialiser(), false, + StatementsPackage.Literals.EXPRESSION_STATEMENT__EXPRESSION); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExtendsTypeArgumentTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExtendsTypeArgumentTest.java new file mode 100644 index 0000000000..c44b19b3ce --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ExtendsTypeArgumentTest.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.generics.ExtendsTypeArgument; +import org.emftext.language.java.generics.GenericsPackage; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.generics.ExtendsTypeArgumentInitialiser; + +public class ExtendsTypeArgumentTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + protected ExtendsTypeArgument initElement(TypeReference extType) { + var etaInit = new ExtendsTypeArgumentInitialiser(); + var eta = etaInit.instantiate(); + Assertions.assertTrue(etaInit.setExtendType(eta, extType)); + return eta; + } + + @Test + public void testExtendType() { + var objOne = this.initElement(this.createMinimalClsRef("cls1")); + var objTwo = this.initElement(this.createMinimalClsRef("cls2")); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.EXTENDS_TYPE_ARGUMENT__EXTEND_TYPE); + } + + @Test + public void testExtendTypeNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalClsRef("cls1")), + new ExtendsTypeArgumentInitialiser(), false, + GenericsPackage.Literals.EXTENDS_TYPE_ARGUMENT__EXTEND_TYPE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/FieldTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/FieldTest.java new file mode 100644 index 0000000000..76d376c75b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/FieldTest.java @@ -0,0 +1,43 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.members.AdditionalField; +import org.emftext.language.java.members.Field; +import org.emftext.language.java.members.MembersPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAdditionalFields; +import cipm.consistency.initialisers.jamopp.members.FieldInitialiser; + +public class FieldTest extends AbstractJaMoPPSimilarityTest implements UsesAdditionalFields { + protected Field initElement(AdditionalField[] additionalFields) { + var fieldInit = new FieldInitialiser(); + var field = fieldInit.instantiate(); + Assertions.assertTrue(fieldInit.addAdditionalFields(field, additionalFields)); + return field; + } + + @Test + public void testAdditionalField() { + var objOne = this.initElement(new AdditionalField[] { this.createMinimalAF("af1") }); + var objTwo = this.initElement(new AdditionalField[] { this.createMinimalAF("af2") }); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.FIELD__ADDITIONAL_FIELDS); + } + + @Test + public void testAdditionalFieldSize() { + var objOne = this + .initElement(new AdditionalField[] { this.createMinimalAF("af1"), this.createMinimalAF("af2") }); + var objTwo = this.initElement(new AdditionalField[] { this.createMinimalAF("af1") }); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.FIELD__ADDITIONAL_FIELDS); + } + + @Test + public void testAdditionalFieldNullCheck() { + this.testSimilarityNullCheck(this.initElement(new AdditionalField[] { this.createMinimalAF("af1") }), + new FieldInitialiser(), false, MembersPackage.Literals.FIELD__ADDITIONAL_FIELDS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForEachLoopTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForEachLoopTest.java new file mode 100644 index 0000000000..ce50a366e4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForEachLoopTest.java @@ -0,0 +1,51 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.parameters.OrdinaryParameter; +import org.emftext.language.java.statements.ForEachLoop; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesParameters; +import cipm.consistency.initialisers.jamopp.statements.ForEachLoopInitialiser; + +public class ForEachLoopTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions, UsesParameters { + protected ForEachLoop initElement(Expression col, OrdinaryParameter next) { + var felInit = new ForEachLoopInitialiser(); + var fel = felInit.instantiate(); + Assertions.assertTrue(felInit.setCollection(fel, col)); + Assertions.assertTrue(felInit.setNext(fel, next)); + return fel; + } + + @Test + public void testCollection() { + var objOne = this.initElement(this.createMinimalFalseEE(), null); + var objTwo = this.initElement(this.createMinimalTrueNEE(), null); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_EACH_LOOP__COLLECTION); + } + + @Test + public void testCollectionNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalFalseEE(), null), new ForEachLoopInitialiser(), + false, StatementsPackage.Literals.FOR_EACH_LOOP__COLLECTION); + } + + @Test + public void testNext() { + var objOne = this.initElement(null, this.createMinimalOrdParamWithClsTarget("param1", "cls1")); + var objTwo = this.initElement(null, this.createMinimalOrdParamWithClsTarget("param2", "cls2")); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_EACH_LOOP__NEXT); + } + + @Test + public void testNextNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createMinimalOrdParamWithClsTarget("param1", "cls1")), + new ForEachLoopInitialiser(), false, StatementsPackage.Literals.FOR_EACH_LOOP__NEXT); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForLoopTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForLoopTest.java new file mode 100644 index 0000000000..4efe176127 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ForLoopTest.java @@ -0,0 +1,59 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.ForLoop; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.statements.ForLoopInitializer; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.ForLoopInitialiser; + +public class ForLoopTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ForLoop initElement(ForLoopInitializer flInit, Expression[] updateExprs) { + var init = new ForLoopInitialiser(); + var fl = init.instantiate(); + Assertions.assertTrue(init.setInit(fl, flInit)); + Assertions.assertTrue(init.addUpdates(fl, updateExprs)); + return fl; + } + + @Test + public void testInit() { + var objOne = this.initElement(this.createExprList(), null); + var objTwo = this.initElement(this.createExprList(this.createMinimalFalseEE()), null); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_LOOP__INIT); + } + + @Test + public void testInitNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createExprList(), null), new ForLoopInitialiser(), false, + StatementsPackage.Literals.FOR_LOOP__INIT); + } + + @Test + public void testUpdate() { + var objOne = this.initElement(null, new Expression[] { this.createMinimalFalseEE() }); + var objTwo = this.initElement(null, new Expression[] { this.createMinimalTrueNEE() }); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_LOOP__UPDATES); + } + + @Test + public void testUpdateSize() { + var objOne = this.initElement(null, + new Expression[] { this.createMinimalFalseEE(), this.createMinimalTrueNEE() }); + var objTwo = this.initElement(null, new Expression[] { this.createMinimalFalseEE() }); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.FOR_LOOP__UPDATES); + } + + @Test + public void testUpdateNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, new Expression[] { this.createMinimalFalseEE() }), + new ForLoopInitialiser(), false, StatementsPackage.Literals.FOR_LOOP__UPDATES); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexDoubleLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexDoubleLiteralTest.java new file mode 100644 index 0000000000..ba873160ed --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexDoubleLiteralTest.java @@ -0,0 +1,30 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.HexDoubleLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.HexDoubleLiteralInitialiser; + +public class HexDoubleLiteralTest extends AbstractJaMoPPSimilarityTest { + protected HexDoubleLiteral initElement(double val) { + var init = new HexDoubleLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setHexValue(lit, val)); + return lit; + } + + @Test + public void testHexValue() { + this.testSimilarity(this.initElement(1.5d), this.initElement(2.5d), + LiteralsPackage.Literals.HEX_DOUBLE_LITERAL__HEX_VALUE); + } + + @Test + public void testHexValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1.5d), new HexDoubleLiteralInitialiser(), false, + LiteralsPackage.Literals.HEX_DOUBLE_LITERAL__HEX_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexFloatLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexFloatLiteralTest.java new file mode 100644 index 0000000000..8b6c3a13f0 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexFloatLiteralTest.java @@ -0,0 +1,30 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.HexFloatLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.HexFloatLiteralInitialiser; + +public class HexFloatLiteralTest extends AbstractJaMoPPSimilarityTest { + protected HexFloatLiteral initElement(float val) { + var init = new HexFloatLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setHexValue(lit, val)); + return lit; + } + + @Test + public void testHexValue() { + this.testSimilarity(this.initElement(1.5f), this.initElement(2.5f), + LiteralsPackage.Literals.HEX_FLOAT_LITERAL__HEX_VALUE); + } + + @Test + public void testHexValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1.5f), new HexFloatLiteralInitialiser(), false, + LiteralsPackage.Literals.HEX_FLOAT_LITERAL__HEX_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexIntegerLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexIntegerLiteralTest.java new file mode 100644 index 0000000000..66db7bfe4f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexIntegerLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.HexIntegerLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.HexIntegerLiteralInitialiser; + +public class HexIntegerLiteralTest extends AbstractJaMoPPSimilarityTest { + protected HexIntegerLiteral initElement(int val) { + var init = new HexIntegerLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setHexValue(lit, val)); + return lit; + } + + @Test + public void testHexValue() { + this.testSimilarity(this.initElement(1), this.initElement(2), + LiteralsPackage.Literals.HEX_INTEGER_LITERAL__HEX_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testHexValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1), new HexIntegerLiteralInitialiser(), false, + LiteralsPackage.Literals.HEX_INTEGER_LITERAL__HEX_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexLongLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexLongLiteralTest.java new file mode 100644 index 0000000000..9223bf9fee --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/HexLongLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.HexLongLiteral; +import org.emftext.language.java.literals.LiteralsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.HexLongLiteralInitialiser; + +public class HexLongLiteralTest extends AbstractJaMoPPSimilarityTest { + protected HexLongLiteral initElement(long val) { + var init = new HexLongLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setHexValue(lit, val)); + return lit; + } + + @Test + public void testHexValue() { + this.testSimilarity(this.initElement(1), this.initElement(2), + LiteralsPackage.Literals.HEX_LONG_LITERAL__HEX_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testHexValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1), new HexLongLiteralInitialiser(), false, + LiteralsPackage.Literals.HEX_LONG_LITERAL__HEX_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InclusiveOrExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InclusiveOrExpressionTest.java new file mode 100644 index 0000000000..715c058143 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InclusiveOrExpressionTest.java @@ -0,0 +1,44 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.InclusiveOrExpression; +import org.emftext.language.java.expressions.InclusiveOrExpressionChild; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.InclusiveOrExpressionInitialiser; + +public class InclusiveOrExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected InclusiveOrExpression initElement(InclusiveOrExpressionChild[] children) { + var ioeInit = new InclusiveOrExpressionInitialiser(); + var ioe = ioeInit.instantiate(); + Assertions.assertTrue(ioeInit.addChildren(ioe, children)); + return ioe; + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(2) }), + ExpressionsPackage.Literals.INCLUSIVE_OR_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }), + this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + ExpressionsPackage.Literals.INCLUSIVE_OR_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new InclusiveOrExpressionChild[] { this.createDecimalIntegerLiteral(1) }), + new InclusiveOrExpressionInitialiser(), false, + ExpressionsPackage.Literals.INCLUSIVE_OR_EXPRESSION__CHILDREN); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InferableTypeTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InferableTypeTest.java new file mode 100644 index 0000000000..e0c50fc548 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InferableTypeTest.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.InferableType; +import org.emftext.language.java.types.TypesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.initialisers.jamopp.types.InferableTypeInitialiser; + +public class InferableTypeTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers { + protected InferableType initElement(Classifier target) { + var init = new InferableTypeInitialiser(); + var res = init.instantiate(); + + Assertions.assertTrue(init.setTarget(res, target)); + return res; + } + + @Test + public void testTarget() { + var objOne = this.initElement(this.createMinimalClass("cls1")); + var objTwo = this.initElement(this.createMinimalClass("cls2")); + + this.testSimilarity(objOne, objTwo, InferableType.class, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET); + } + + @Test + public void testTargetNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalClass("cls1")), new InferableTypeInitialiser(), + false, InferableType.class, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InstanceOfExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InstanceOfExpressionTest.java new file mode 100644 index 0000000000..c900b36c5f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InstanceOfExpressionTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.InstanceOfExpression; +import org.emftext.language.java.expressions.InstanceOfExpressionChild; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.InstanceOfExpressionInitialiser; + +public class InstanceOfExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected InstanceOfExpression initElement(InstanceOfExpressionChild child) { + var ioeInit = new InstanceOfExpressionInitialiser(); + var ioe = ioeInit.instantiate(); + Assertions.assertTrue(ioeInit.setChild(ioe, child)); + return ioe; + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(this.createDecimalIntegerLiteral(1)), + this.initElement(this.createDecimalIntegerLiteral(2)), + ExpressionsPackage.Literals.INSTANCE_OF_EXPRESSION__CHILD); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)), + new InstanceOfExpressionInitialiser(), false, + ExpressionsPackage.Literals.INSTANCE_OF_EXPRESSION__CHILD); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceMethodTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceMethodTest.java new file mode 100644 index 0000000000..94d7900d69 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceMethodTest.java @@ -0,0 +1,38 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.annotations.AnnotationValue; +import org.emftext.language.java.members.InterfaceMethod; +import org.emftext.language.java.members.MembersPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationValues; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesNames; +import cipm.consistency.initialisers.jamopp.members.InterfaceMethodInitialiser; + +public class InterfaceMethodTest extends AbstractJaMoPPSimilarityTest implements UsesAnnotationValues, UsesNames { + protected InterfaceMethod initElement(AnnotationValue defVal) { + var imInit = new InterfaceMethodInitialiser(); + var im = imInit.instantiate(); + Assertions.assertTrue(imInit.setName(im, this.getDefaultName())); + Assertions.assertTrue(imInit.setDefaultValue(im, defVal)); + return im; + } + + @Test + public void testDefaultValue() { + var objOne = this.initElement(this.createNullLiteral()); + var objTwo = this.initElement(this.createMinimalSR("strval")); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.INTERFACE_METHOD__DEFAULT_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testDefaultValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createNullLiteral()), new InterfaceMethodInitialiser(), + false, MembersPackage.Literals.INTERFACE_METHOD__DEFAULT_VALUE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceTest.java new file mode 100644 index 0000000000..b453924f23 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/InterfaceTest.java @@ -0,0 +1,67 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.classifiers.Interface; +import org.emftext.language.java.classifiers.ClassifiersPackage; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.classifiers.InterfaceInitialiser; + +public class InterfaceTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + protected Interface initElement(TypeReference[] defExts, TypeReference[] exts) { + var intfcInit = new InterfaceInitialiser(); + var intfc = intfcInit.instantiate(); + Assertions.assertTrue(intfcInit.addDefaultExtends(intfc, defExts)); + Assertions.assertTrue(intfcInit.addExtends(intfc, exts)); + return intfc; + } + + @Test + public void testDefaultExtends() { + var objOne = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null); + var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") }, null); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.INTERFACE__DEFAULT_EXTENDS); + } + + @Test + public void testDefaultExtendsSize() { + var objOne = this.initElement( + new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }, null); + var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.INTERFACE__DEFAULT_EXTENDS); + } + + @Test + public void testDefaultExtendsNullCheck() { + this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }, null), + new InterfaceInitialiser(), false, ClassifiersPackage.Literals.INTERFACE__DEFAULT_EXTENDS); + } + + @Test + public void testExtends() { + var objOne = this.initElement(null, new TypeReference[] { this.createMinimalClsRef("cls1") }); + var objTwo = this.initElement(null, new TypeReference[] { this.createMinimalClsRef("cls2") }); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.INTERFACE__EXTENDS); + } + + @Test + public void testExtendsSize() { + var objOne = this.initElement(null, + new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }); + var objTwo = this.initElement(null, new TypeReference[] { this.createMinimalClsRef("cls1") }); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.INTERFACE__EXTENDS); + } + + @Test + public void testExtendsNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, new TypeReference[] { this.createMinimalClsRef("cls1") }), + new InterfaceInitialiser(), false, ClassifiersPackage.Literals.INTERFACE__EXTENDS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LambdaExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LambdaExpressionTest.java new file mode 100644 index 0000000000..e4ea4541dd --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LambdaExpressionTest.java @@ -0,0 +1,51 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.LambdaBody; +import org.emftext.language.java.expressions.LambdaExpression; +import org.emftext.language.java.expressions.LambdaParameters; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLambdaParameters; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements; +import cipm.consistency.initialisers.jamopp.expressions.LambdaExpressionInitialiser; + +public class LambdaExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesStatements, UsesLambdaParameters { + protected LambdaExpression initElement(LambdaBody body, LambdaParameters param) { + var init = new LambdaExpressionInitialiser(); + LambdaExpression result = init.instantiate(); + Assertions.assertTrue(init.setBody(result, body)); + Assertions.assertTrue(init.setParameters(result, param)); + return result; + } + + @Test + public void testBody() { + var objOne = this.initElement(this.createMinimalBlockWithNullReturn(), null); + var objTwo = this.initElement(this.createMinimalBlockWithTrivialAssert(), null); + + this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.LAMBDA_EXPRESSION__BODY); + } + + @Test + public void testBodyNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalBlockWithNullReturn(), null), + new LambdaExpressionInitialiser(), false, ExpressionsPackage.Literals.LAMBDA_EXPRESSION__BODY); + } + + @Test + public void testParameters() { + var objOne = this.initElement(null, this.createMinimalETLP("p1", "c1")); + var objTwo = this.initElement(null, this.createMinimalETLP("p2", "c2")); + + this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.LAMBDA_EXPRESSION__PARAMETERS); + } + + @Test + public void testParametersNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createMinimalETLP("p1", "c1")), + new LambdaExpressionInitialiser(), false, ExpressionsPackage.Literals.LAMBDA_EXPRESSION__PARAMETERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableStatementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableStatementTest.java new file mode 100644 index 0000000000..d0cdee6d59 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableStatementTest.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.statements.LocalVariableStatement; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.variables.LocalVariable; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLocalVariables; +import cipm.consistency.initialisers.jamopp.statements.LocalVariableStatementInitialiser; + +public class LocalVariableStatementTest extends AbstractJaMoPPSimilarityTest implements UsesLocalVariables { + protected LocalVariableStatement initElement(LocalVariable var) { + var lvsInit = new LocalVariableStatementInitialiser(); + var lvs = lvsInit.instantiate(); + Assertions.assertTrue(lvsInit.setVariable(lvs, var)); + return lvs; + } + + @Test + public void testVariable() { + var objOne = this.initElement(this.createMinimalLV("lv1")); + var objTwo = this.initElement(this.createMinimalLV("lv2")); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.LOCAL_VARIABLE_STATEMENT__VARIABLE); + } + + @Test + public void testVariableNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalLV("lv1")), + new LocalVariableStatementInitialiser(), false, + StatementsPackage.Literals.LOCAL_VARIABLE_STATEMENT__VARIABLE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableTest.java new file mode 100644 index 0000000000..904c276ff7 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/LocalVariableTest.java @@ -0,0 +1,48 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.variables.AdditionalLocalVariable; +import org.emftext.language.java.variables.LocalVariable; +import org.emftext.language.java.variables.VariablesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAdditionalLocalVariables; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesNames; +import cipm.consistency.initialisers.jamopp.variables.LocalVariableInitialiser; + +public class LocalVariableTest extends AbstractJaMoPPSimilarityTest implements UsesAdditionalLocalVariables, UsesNames { + protected LocalVariable initElement(AdditionalLocalVariable[] alvs) { + var lvInit = new LocalVariableInitialiser(); + var lv = lvInit.instantiate(); + Assertions.assertTrue(lvInit.setName(lv, this.getDefaultName())); + Assertions.assertTrue(lvInit.addAdditionalLocalVariables(lv, alvs)); + return lv; + } + + @Test + public void testLocalVariable() { + var objOne = this.initElement(new AdditionalLocalVariable[] { this.createMinimalALV("alv1") }); + var objTwo = this.initElement(new AdditionalLocalVariable[] { this.createMinimalALV("alv2") }); + + this.testSimilarity(objOne, objTwo, VariablesPackage.Literals.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES); + } + + @Test + public void testLocalVariableSize() { + var objOne = this.initElement( + new AdditionalLocalVariable[] { this.createMinimalALV("alv1"), this.createMinimalALV("alv2") }); + var objTwo = this.initElement(new AdditionalLocalVariable[] { this.createMinimalALV("alv1") }); + + this.testSimilarity(objOne, objTwo, VariablesPackage.Literals.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testLocalVariableNullCheck() { + this.testSimilarityNullCheck(this.initElement(new AdditionalLocalVariable[] { this.createMinimalALV("alv1") }), + new LocalVariableInitialiser(), false, + VariablesPackage.Literals.LOCAL_VARIABLE__ADDITIONAL_LOCAL_VARIABLES); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleReferenceTest.java new file mode 100644 index 0000000000..4aca5da0ff --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleReferenceTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.containers.Module; +import org.emftext.language.java.modules.ModuleReference; +import org.emftext.language.java.modules.ModulesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModules; +import cipm.consistency.initialisers.jamopp.modules.ModuleReferenceInitialiser; + +public class ModuleReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesModules { + protected ModuleReference initElement(Module target) { + var mrInit = new ModuleReferenceInitialiser(); + var mr = mrInit.instantiate(); + Assertions.assertTrue(mrInit.setTarget(mr, target)); + return mr; + } + + @Test + public void testTarget() { + var objOne = this.initElement(this.createMinimalModule("mod1")); + var objTwo = this.initElement(this.createMinimalModule("mod2")); + + this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.MODULE_REFERENCE__TARGET); + } + + @Test + public void testTargetNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalModule("mod1")), + new ModuleReferenceInitialiser(), false, ModulesPackage.Literals.MODULE_REFERENCE__TARGET); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleTest.java new file mode 100644 index 0000000000..e83435c641 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ModuleTest.java @@ -0,0 +1,100 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.containers.Module; +import org.emftext.language.java.containers.ContainersPackage; +import org.emftext.language.java.containers.Package; +import org.emftext.language.java.modules.ModuleDirective; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModuleDirectives; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesNames; +import cipm.consistency.initialisers.jamopp.containers.ModuleInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.OpenInitialiser; + +public class ModuleTest extends AbstractJaMoPPSimilarityTest implements UsesModuleDirectives, UsesNames { + protected Module initElement(Package[] pacs, ModuleDirective[] targets, boolean isOpen) { + var initialiser = new ModuleInitialiser(); + Module result = initialiser.instantiate(); + + Assertions.assertTrue(initialiser.setName(result, this.getDefaultName())); + Assertions.assertTrue(initialiser.addPackages(result, pacs)); + Assertions.assertTrue(initialiser.addTargets(result, targets)); + + if (isOpen) { + Assertions.assertTrue(initialiser.setOpen(result, new OpenInitialiser().instantiate())); + } + + return result; + } + + @Test + public void testOpen() { + var objOne = this.initElement(null, null, true); + var objTwo = this.initElement(null, null, false); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__OPEN); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testOpenNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, null, true), new ModuleInitialiser(), false, + ContainersPackage.Literals.MODULE__OPEN); + } + + @Test + public void testPackages() { + var objOne = this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns1" }) }, null, false); + var objTwo = this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns2" }) }, null, false); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__PACKAGES); + } + + @Test + public void testPackagesSize() { + var objOne = this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns1" }), + this.createMinimalPackage(new String[] { "ns2" }) }, null, false); + var objTwo = this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns1" }) }, null, false); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__PACKAGES); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testPackagesNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new Package[] { this.createMinimalPackage(new String[] { "ns1" }) }, null, false), + new ModuleInitialiser(), false, ContainersPackage.Literals.MODULE__PACKAGES); + } + + @Test + public void testTargets() { + var objOne = this.initElement(null, new ModuleDirective[] { this.createMinimalEMD(new String[] { "ns1" }) }, + false); + var objTwo = this.initElement(null, new ModuleDirective[] { this.createMinimalOMD(new String[] { "ns1" }) }, + false); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__TARGET); + } + + @Test + public void testTargetsSize() { + var objOne = this.initElement(null, new ModuleDirective[] { this.createMinimalEMD(new String[] { "ns1" }), + this.createMinimalEMD(new String[] { "ns2" }) }, false); + var objTwo = this.initElement(null, new ModuleDirective[] { this.createMinimalEMD(new String[] { "ns1" }) }, + false); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.MODULE__TARGET); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testTargetsNullCheck() { + this.testSimilarityNullCheck( + this.initElement(null, new ModuleDirective[] { this.createMinimalEMD(new String[] { "ns1" }) }, false), + new ModuleInitialiser(), false, ContainersPackage.Literals.MODULE__TARGET); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/MultiplicativeExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/MultiplicativeExpressionTest.java new file mode 100644 index 0000000000..0b2e36fb52 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/MultiplicativeExpressionTest.java @@ -0,0 +1,72 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.MultiplicativeExpression; +import org.emftext.language.java.expressions.MultiplicativeExpressionChild; +import org.emftext.language.java.operators.MultiplicativeOperator; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.MultiplicativeExpressionInitialiser; + +public class MultiplicativeExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected MultiplicativeExpression initElement(MultiplicativeExpressionChild[] children, + MultiplicativeOperator[] ops) { + var meInit = new MultiplicativeExpressionInitialiser(); + var me = meInit.instantiate(); + Assertions.assertTrue(meInit.addChildren(me, children)); + Assertions.assertTrue(meInit.addMultiplicativeOperators(me, ops)); + return me; + } + + @Test + public void testChild() { + this.testSimilarity( + this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null), + ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }, null), + this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new MultiplicativeExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + new MultiplicativeExpressionInitialiser(), false, + ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__CHILDREN); + } + + @Test + public void testMultiplicativeOperator() { + this.testSimilarity(this.initElement(null, new MultiplicativeOperator[] { this.createDivisionOperator() }), + this.initElement(null, new MultiplicativeOperator[] { this.createMultiplicationOperator() }), + ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS); + } + + @Test + public void testMultiplicativeOperatorSize() { + this.testSimilarity( + this.initElement(null, + new MultiplicativeOperator[] { this.createDivisionOperator(), this.createMultiplicationOperator() }), + this.initElement(null, new MultiplicativeOperator[] { this.createDivisionOperator() }), + ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS); + } + + @Test + public void testMultiplicativeOperatorNullCheck() { + this.testSimilarityNullCheck( + this.initElement(null, new MultiplicativeOperator[] { this.createDivisionOperator() }), + new MultiplicativeExpressionInitialiser(), false, + ExpressionsPackage.Literals.MULTIPLICATIVE_EXPRESSION__MULTIPLICATIVE_OPERATORS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NamespaceClassifierReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NamespaceClassifierReferenceTest.java new file mode 100644 index 0000000000..5244f0481f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NamespaceClassifierReferenceTest.java @@ -0,0 +1,66 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.ClassifierReference; +import org.emftext.language.java.types.NamespaceClassifierReference; +import org.emftext.language.java.types.TypesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser; +import cipm.consistency.initialisers.jamopp.types.NamespaceClassifierReferenceInitialiser; + +public class NamespaceClassifierReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + protected NamespaceClassifierReference initElement(Classifier target, ClassifierReference[] clsRefs) { + var ncrInit = new NamespaceClassifierReferenceInitialiser(); + var ncr = ncrInit.instantiate(); + Assertions.assertTrue(ncrInit.setTarget(ncr, target)); + Assertions.assertTrue(ncrInit.addClassifierReferences(ncr, clsRefs)); + return ncr; + } + + @Test + public void testTarget() { + var objOne = this.initElement(this.createMinimalClassWithCU("cls1"), null); + var objTwo = this.initElement(this.createMinimalClassWithCU("cls2"), null); + + this.testSimilarity(objOne, objTwo, NamespaceClassifierReference.class, + TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET); + } + + @Test + public void testTargetNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalClassWithCU("cls1"), null), + new ClassifierReferenceInitialiser(), false, NamespaceClassifierReference.class, + TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET); + } + + @Test + public void testClassifierReference() { + var objOne = this.initElement(null, new ClassifierReference[] { this.createMinimalClsRef("cls1") }); + var objTwo = this.initElement(null, new ClassifierReference[] { this.createMinimalClsRef("cls2") }); + + this.testSimilarity(objOne, objTwo, + TypesPackage.Literals.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES); + } + + @Test + public void testClassifierReferenceSize() { + var objOne = this.initElement(null, + new ClassifierReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }); + var objTwo = this.initElement(null, new ClassifierReference[] { this.createMinimalClsRef("cls1") }); + + this.testSimilarity(objOne, objTwo, + TypesPackage.Literals.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES); + } + + @Test + public void testClassifierReferenceNullCheck() { + this.testSimilarityNullCheck( + this.initElement(null, new ClassifierReference[] { this.createMinimalClsRef("cls1") }), + new NamespaceClassifierReferenceInitialiser(), false, + TypesPackage.Literals.NAMESPACE_CLASSIFIER_REFERENCE__CLASSIFIER_REFERENCES); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NestedExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NestedExpressionTest.java new file mode 100644 index 0000000000..c416bbdb65 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NestedExpressionTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.NestedExpression; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.NestedExpressionInitialiser; + +public class NestedExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected NestedExpression initElement(Expression expr) { + var init = new NestedExpressionInitialiser(); + var result = init.instantiate(); + Assertions.assertTrue(init.setExpression(result, expr)); + return result; + } + + @Test + public void testExpression() { + var objOne = this.initElement(this.createMinimalFalseEE()); + var objTwo = this.initElement(this.createMinimalTrueEE()); + + this.testSimilarity(objOne, objTwo, ExpressionsPackage.Literals.NESTED_EXPRESSION__EXPRESSION); + } + + @Test + public void testExpressionNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalFalseEE()), new NestedExpressionInitialiser(), + false, ExpressionsPackage.Literals.NESTED_EXPRESSION__EXPRESSION); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NewConstructorCallTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NewConstructorCallTest.java new file mode 100644 index 0000000000..aa3e29cea0 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NewConstructorCallTest.java @@ -0,0 +1,43 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.classifiers.AnonymousClass; +import org.emftext.language.java.instantiations.NewConstructorCall; +import org.emftext.language.java.instantiations.InstantiationsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnonymousClasses; +import cipm.consistency.initialisers.jamopp.classifiers.ClassInitialiser; +import cipm.consistency.initialisers.jamopp.initadapters.NewConstructorCallInitialiserAdapter; +import cipm.consistency.initialisers.jamopp.instantiations.NewConstructorCallInitialiser; +import cipm.consistency.initialisers.jamopp.types.ClassifierReferenceInitialiser; + +public class NewConstructorCallTest extends AbstractJaMoPPSimilarityTest implements UsesAnonymousClasses { + protected NewConstructorCall initElement(AnonymousClass anonymousCls) { + var nccInit = new NewConstructorCallInitialiser(); + nccInit.addAdaptingStrategy( + new NewConstructorCallInitialiserAdapter(new ClassifierReferenceInitialiser(), new ClassInitialiser())); + var ncc = nccInit.instantiate(); + Assertions.assertTrue(nccInit.initialise(ncc)); + Assertions.assertTrue(nccInit.setAnonymousClass(ncc, anonymousCls)); + return ncc; + } + + @Test + public void testAnonymousClass() { + var objOne = this.initElement(this.createMinimalAnonymousClassWithMethod("met1")); + var objTwo = this.initElement(this.createMinimalAnonymousClassWithMethod("met2")); + + this.testSimilarity(objOne, objTwo, InstantiationsPackage.Literals.NEW_CONSTRUCTOR_CALL__ANONYMOUS_CLASS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testAnonymousClassNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalAnonymousClassWithMethod("met1")), + new NewConstructorCallInitialiser(), false, + InstantiationsPackage.Literals.NEW_CONSTRUCTOR_CALL__ANONYMOUS_CLASS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchCaseTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchCaseTest.java new file mode 100644 index 0000000000..bb2d2166fc --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchCaseTest.java @@ -0,0 +1,43 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.NormalSwitchCase; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.NormalSwitchCaseInitialiser; + +public class NormalSwitchCaseTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected NormalSwitchCase initElement(Expression[] additionalConds) { + var nscInit = new NormalSwitchCaseInitialiser(); + var nsc = nscInit.instantiate(); + Assertions.assertTrue(nscInit.addAdditionalConditions(nsc, additionalConds)); + return nsc; + } + + @Test + public void testAdditionalCondition() { + var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE() }); + var objTwo = this.initElement(new Expression[] { this.createMinimalTrueNEE() }); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.NORMAL_SWITCH_CASE__ADDITIONAL_CONDITIONS); + } + + @Test + public void testAdditionalConditionSize() { + var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE(), this.createMinimalTrueNEE() }); + var objTwo = this.initElement(new Expression[] { this.createMinimalFalseEE() }); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.NORMAL_SWITCH_CASE__ADDITIONAL_CONDITIONS); + } + + @Test + public void testAdditionalConditionNullCheck() { + this.testSimilarityNullCheck(this.initElement(new Expression[] { this.createMinimalFalseEE() }), + new NormalSwitchCaseInitialiser(), false, + StatementsPackage.Literals.NORMAL_SWITCH_CASE__ADDITIONAL_CONDITIONS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchRuleTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchRuleTest.java new file mode 100644 index 0000000000..be5e5f9caf --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/NormalSwitchRuleTest.java @@ -0,0 +1,43 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.NormalSwitchRule; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.NormalSwitchRuleInitialiser; + +public class NormalSwitchRuleTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected NormalSwitchRule initElement(Expression[] additionalConds) { + var nsrInit = new NormalSwitchRuleInitialiser(); + var nsr = nsrInit.instantiate(); + Assertions.assertTrue(nsrInit.addAdditionalConditions(nsr, additionalConds)); + return nsr; + } + + @Test + public void testAdditionalCondition() { + var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE() }); + var objTwo = this.initElement(new Expression[] { this.createMinimalTrueNEE() }); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.NORMAL_SWITCH_RULE__ADDITIONAL_CONDITIONS); + } + + @Test + public void testAdditionalConditionSize() { + var objOne = this.initElement(new Expression[] { this.createMinimalFalseEE(), this.createMinimalTrueNEE() }); + var objTwo = this.initElement(new Expression[] { this.createMinimalFalseEE() }); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.NORMAL_SWITCH_RULE__ADDITIONAL_CONDITIONS); + } + + @Test + public void testAdditionalConditionNullCheck() { + this.testSimilarityNullCheck(this.initElement(new Expression[] { this.createMinimalFalseEE() }), + new NormalSwitchRuleInitialiser(), false, + StatementsPackage.Literals.NORMAL_SWITCH_RULE__ADDITIONAL_CONDITIONS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalIntegerLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalIntegerLiteralTest.java new file mode 100644 index 0000000000..f2612abe72 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalIntegerLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.LiteralsPackage; +import org.emftext.language.java.literals.OctalIntegerLiteral; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.OctalIntegerLiteralInitialiser; + +public class OctalIntegerLiteralTest extends AbstractJaMoPPSimilarityTest { + protected OctalIntegerLiteral initElement(int val) { + var init = new OctalIntegerLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setOctalValue(lit, val)); + return lit; + } + + @Test + public void testOctalValue() { + this.testSimilarity(this.initElement(1), this.initElement(2), + LiteralsPackage.Literals.OCTAL_INTEGER_LITERAL__OCTAL_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testOctalValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1), new OctalIntegerLiteralInitialiser(), false, + LiteralsPackage.Literals.OCTAL_INTEGER_LITERAL__OCTAL_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalLongLiteralTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalLongLiteralTest.java new file mode 100644 index 0000000000..e43928e890 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/OctalLongLiteralTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.LiteralsPackage; +import org.emftext.language.java.literals.OctalLongLiteral; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.literals.OctalLongLiteralInitialiser; + +public class OctalLongLiteralTest extends AbstractJaMoPPSimilarityTest { + protected OctalLongLiteral initElement(long val) { + var init = new OctalLongLiteralInitialiser(); + var lit = init.instantiate(); + Assertions.assertTrue(init.setOctalValue(lit, val)); + return lit; + } + + @Test + public void testOctalValue() { + this.testSimilarity(this.initElement(1), this.initElement(2), + LiteralsPackage.Literals.OCTAL_LONG_LITERAL__OCTAL_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testOctalValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(1), new OctalLongLiteralInitialiser(), false, + LiteralsPackage.Literals.OCTAL_LONG_LITERAL__OCTAL_VALUE); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PackageTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PackageTest.java new file mode 100644 index 0000000000..d01ac1c74a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PackageTest.java @@ -0,0 +1,62 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.containers.ContainersPackage; +import org.emftext.language.java.containers.Module; +import org.emftext.language.java.containers.Package; +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModules; +import cipm.consistency.initialisers.jamopp.containers.PackageInitialiser; + +public class PackageTest extends AbstractJaMoPPSimilarityTest implements UsesModules, UsesConcreteClassifiers { + protected Package initElement(Module mod, ConcreteClassifier[] clss) { + var initialiser = new PackageInitialiser(); + Package pac = initialiser.instantiate(); + Assertions.assertTrue(initialiser.setModule(pac, mod)); + Assertions.assertTrue(initialiser.addClassifiers(pac, clss)); + + return pac; + } + + @Test + public void testModule() { + var objOne = this.initElement(this.createMinimalModule("mod1"), null); + var objTwo = this.initElement(this.createMinimalModule("mod2"), null); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.PACKAGE__MODULE); + } + + @Test + public void testModuleNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalModule("mod1"), null), new PackageInitialiser(), + false, ContainersPackage.Literals.PACKAGE__MODULE); + } + + @Test + public void testClassifiers() { + var objOne = this.initElement(null, new ConcreteClassifier[] { this.createMinimalClass("cls1") }); + var objTwo = this.initElement(null, new ConcreteClassifier[] { this.createMinimalClass("cls2") }); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.PACKAGE__CLASSIFIERS); + } + + @Test + public void testClassifiersSize() { + var objOne = this.initElement(null, + new ConcreteClassifier[] { this.createMinimalClass("cls1"), this.createMinimalClass("cls2") }); + var objTwo = this.initElement(null, new ConcreteClassifier[] { this.createMinimalClass("cls1") }); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.PACKAGE__CLASSIFIERS); + } + + @Test + public void testClassifiersNullCheck() { + this.testSimilarityNullCheck( + this.initElement(null, new ConcreteClassifier[] { this.createMinimalClass("cls1") }), + new PackageInitialiser(), false, ContainersPackage.Literals.PACKAGE__CLASSIFIERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimaryExpressionReferenceExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimaryExpressionReferenceExpressionTest.java new file mode 100644 index 0000000000..22459a5f83 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimaryExpressionReferenceExpressionTest.java @@ -0,0 +1,50 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.MethodReferenceExpressionChild; +import org.emftext.language.java.expressions.PrimaryExpressionReferenceExpression; +import org.emftext.language.java.references.Reference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.PrimaryExpressionReferenceExpressionInitialiser; + +public class PrimaryExpressionReferenceExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected PrimaryExpressionReferenceExpression initElement(MethodReferenceExpressionChild child, Reference metRef) { + var pereInit = new PrimaryExpressionReferenceExpressionInitialiser(); + var pere = pereInit.instantiate(); + Assertions.assertTrue(pereInit.setChild(pere, child)); + Assertions.assertTrue(pereInit.setMethodReference(pere, metRef)); + return pere; + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(this.createDecimalIntegerLiteral(1), null), + this.initElement(this.createDecimalIntegerLiteral(2), null), + ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__CHILD); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1), null), + new PrimaryExpressionReferenceExpressionInitialiser(), false, + ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__CHILD); + } + + @Test + public void testMethodReference() { + this.testSimilarity(this.initElement(null, this.createMinimalSR("str1")), + this.initElement(null, this.createMinimalSR("str2")), + ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__METHOD_REFERENCE); + } + + @Test + public void testMethodReferenceNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createMinimalSR("str1")), + new PrimaryExpressionReferenceExpressionInitialiser(), false, + ExpressionsPackage.Literals.PRIMARY_EXPRESSION_REFERENCE_EXPRESSION__METHOD_REFERENCE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimitiveTypeReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimitiveTypeReferenceTest.java new file mode 100644 index 0000000000..8956442bbb --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/PrimitiveTypeReferenceTest.java @@ -0,0 +1,36 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.references.PrimitiveTypeReference; +import org.emftext.language.java.references.ReferencesPackage; +import org.emftext.language.java.types.PrimitiveType; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.references.PrimitiveTypeReferenceInitialiser; +import cipm.consistency.initialisers.jamopp.types.BooleanInitialiser; +import cipm.consistency.initialisers.jamopp.types.IntInitialiser; + +public class PrimitiveTypeReferenceTest extends AbstractJaMoPPSimilarityTest { + protected PrimitiveTypeReference initElement(PrimitiveType pType) { + var ptInit = new PrimitiveTypeReferenceInitialiser(); + var pt = ptInit.instantiate(); + Assertions.assertTrue(ptInit.setPrimitiveType(pt, pType)); + return pt; + } + + @Test + public void testPrimitiveType() { + var objOne = this.initElement(new BooleanInitialiser().instantiate()); + var objTwo = this.initElement(new IntInitialiser().instantiate()); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.PRIMITIVE_TYPE_REFERENCE__PRIMITIVE_TYPE); + } + + @Test + public void testPrimitiveTypeNullCheck() { + this.testSimilarityNullCheck(this.initElement(new BooleanInitialiser().instantiate()), + new PrimitiveTypeReferenceInitialiser(), false, + ReferencesPackage.Literals.PRIMITIVE_TYPE_REFERENCE__PRIMITIVE_TYPE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ProvidesModuleDirectiveTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ProvidesModuleDirectiveTest.java new file mode 100644 index 0000000000..950e47cbdb --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ProvidesModuleDirectiveTest.java @@ -0,0 +1,44 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.modules.ProvidesModuleDirective; +import org.emftext.language.java.modules.ModulesPackage; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.modules.ProvidesModuleDirectiveInitialiser; + +public class ProvidesModuleDirectiveTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + protected ProvidesModuleDirective initElement(TypeReference[] serviceProviders) { + var pmdInit = new ProvidesModuleDirectiveInitialiser(); + var pmd = pmdInit.instantiate(); + Assertions.assertTrue(pmdInit.addServiceProviders(pmd, serviceProviders)); + return pmd; + } + + @Test + public void testServiceProvider() { + var objOne = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }); + var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") }); + + this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.PROVIDES_MODULE_DIRECTIVE__SERVICE_PROVIDERS); + } + + @Test + public void testServiceProviderSize() { + var objOne = this.initElement( + new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }); + var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }); + + this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.PROVIDES_MODULE_DIRECTIVE__SERVICE_PROVIDERS); + } + + @Test + public void testServiceProviderNullCheck() { + this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }), + new ProvidesModuleDirectiveInitialiser(), false, + ModulesPackage.Literals.PROVIDES_MODULE_DIRECTIVE__SERVICE_PROVIDERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReceiverParameterTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReceiverParameterTest.java new file mode 100644 index 0000000000..f3d4de9d6a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReceiverParameterTest.java @@ -0,0 +1,52 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.parameters.ReceiverParameter; +import org.emftext.language.java.literals.This; +import org.emftext.language.java.parameters.ParametersPackage; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.parameters.ReceiverParameterInitialiser; + +public class ReceiverParameterTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences, UsesLiterals { + protected ReceiverParameter initElement(This thisRef, TypeReference otRef) { + var rpInit = new ReceiverParameterInitialiser(); + var rp = rpInit.instantiate(); + Assertions.assertTrue(rpInit.setThisReference(rp, thisRef)); + Assertions.assertTrue(rpInit.setOuterTypeReference(rp, otRef)); + return rp; + } + + @Test + public void testThisTypeReference() { + var objOne = this.initElement(this.createThis(), null); + var objTwo = this.initElement(null, null); + + this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.RECEIVER_PARAMETER__THIS_REFERENCE); + } + + @Test + public void testThisTypeReferenceNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createThis(), null), new ReceiverParameterInitialiser(), + false, ParametersPackage.Literals.RECEIVER_PARAMETER__THIS_REFERENCE); + } + + @Test + public void testOuterTypeReference() { + var objOne = this.initElement(null, this.createMinimalClsRef("cls1")); + var objTwo = this.initElement(null, this.createMinimalClsRef("cls2")); + + this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.RECEIVER_PARAMETER__OUTER_TYPE_REFERENCE); + } + + @Test + public void testOuterTypeReferenceNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createMinimalClsRef("cls1")), + new ReceiverParameterInitialiser(), false, + ParametersPackage.Literals.RECEIVER_PARAMETER__OUTER_TYPE_REFERENCE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RelationExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RelationExpressionTest.java new file mode 100644 index 0000000000..1eabdd4ead --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RelationExpressionTest.java @@ -0,0 +1,70 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.RelationExpression; +import org.emftext.language.java.expressions.RelationExpressionChild; +import org.emftext.language.java.operators.RelationOperator; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.RelationExpressionInitialiser; + +public class RelationExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected RelationExpression initElement(RelationExpressionChild[] children, RelationOperator[] ops) { + var reInit = new RelationExpressionInitialiser(); + var re = reInit.instantiate(); + Assertions.assertTrue(reInit.addChildren(re, children)); + Assertions.assertTrue(reInit.addRelationOperators(re, ops)); + return re; + } + + @Test + public void testChild() { + this.testSimilarity( + this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null), + ExpressionsPackage.Literals.RELATION_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }, null), + this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + ExpressionsPackage.Literals.RELATION_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new RelationExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + new RelationExpressionInitialiser(), false, ExpressionsPackage.Literals.RELATION_EXPRESSION__CHILDREN); + } + + @Test + public void testRelationOperator() { + this.testSimilarity(this.initElement(null, new RelationOperator[] { this.createGreaterThanOperator() }), + this.initElement(null, new RelationOperator[] { this.createLessThanOperator() }), + ExpressionsPackage.Literals.RELATION_EXPRESSION__RELATION_OPERATORS); + } + + @Test + public void testRelationOperatorSize() { + this.testSimilarity( + this.initElement(null, + new RelationOperator[] { this.createGreaterThanOperator(), this.createLessThanOperator() }), + this.initElement(null, new RelationOperator[] { this.createGreaterThanOperator() }), + ExpressionsPackage.Literals.RELATION_EXPRESSION__RELATION_OPERATORS); + } + + @Test + public void testRelationOperatorNullCheck() { + this.testSimilarityNullCheck( + this.initElement(null, new RelationOperator[] { this.createGreaterThanOperator() }), + new RelationExpressionInitialiser(), false, + ExpressionsPackage.Literals.RELATION_EXPRESSION__RELATION_OPERATORS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RequiresModuleDirectiveTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RequiresModuleDirectiveTest.java new file mode 100644 index 0000000000..0a1a4ef925 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/RequiresModuleDirectiveTest.java @@ -0,0 +1,54 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.modifiers.ModuleRequiresModifier; +import org.emftext.language.java.modules.ModuleReference; +import org.emftext.language.java.modules.ModulesPackage; +import org.emftext.language.java.modules.RequiresModuleDirective; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModuleReferences; +import cipm.consistency.initialisers.jamopp.modules.RequiresModuleDirectiveInitialiser; + +public class RequiresModuleDirectiveTest extends AbstractJaMoPPSimilarityTest implements UsesLiterals, UsesModuleReferences { + protected RequiresModuleDirective initElement(ModuleRequiresModifier modif, ModuleReference reqMod) { + var rmdInit = new RequiresModuleDirectiveInitialiser(); + var rmd = rmdInit.instantiate(); + Assertions.assertTrue(rmdInit.setModifier(rmd, modif)); + Assertions.assertTrue(rmdInit.setRequiredModule(rmd, reqMod)); + return rmd; + } + + @Test + public void testModifier() { + var objOne = this.initElement(this.createStatic(), null); + var objTwo = this.initElement(this.createTransitive(), null); + + this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__MODIFIER); + } + + @Test + public void testModifierNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createStatic(), null), + new RequiresModuleDirectiveInitialiser(), false, + ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__MODIFIER); + } + + @Test + public void testRequiredModule() { + var objOne = this.initElement(null, this.createMinimalMR("mod1", new String[] { "ns1", "ns2" })); + var objTwo = this.initElement(null, this.createMinimalMR("mod2", new String[] { "ns3", "ns4" })); + + this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__REQUIRED_MODULE); + } + + @Test + public void testRequiredModuleNullCheck() { + this.testSimilarityNullCheck( + this.initElement(null, this.createMinimalMR("mod1", new String[] { "ns1", "ns2" })), + new RequiresModuleDirectiveInitialiser(), false, + ModulesPackage.Literals.REQUIRES_MODULE_DIRECTIVE__REQUIRED_MODULE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReturnTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReturnTest.java new file mode 100644 index 0000000000..c0a41c57cb --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ReturnTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Return; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.ReturnInitialiser; + +public class ReturnTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected Return initElement(Expression retVal) { + var retInit = new ReturnInitialiser(); + var ret = retInit.instantiate(); + Assertions.assertTrue(retInit.setReturnValue(ret, retVal)); + return ret; + } + + @Test + public void testReturnValue() { + var objOne = this.initElement(this.createDecimalIntegerLiteral(1)); + var objTwo = this.initElement(this.createMinimalFalseEE()); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.RETURN__RETURN_VALUE); + } + + @Test + public void testReturnValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)), new ReturnInitialiser(), + false, StatementsPackage.Literals.RETURN__RETURN_VALUE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SelfReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SelfReferenceTest.java new file mode 100644 index 0000000000..4d9f60f461 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SelfReferenceTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.literals.Self; +import org.emftext.language.java.references.SelfReference; +import org.emftext.language.java.references.ReferencesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals; +import cipm.consistency.initialisers.jamopp.references.SelfReferenceInitialiser; + +public class SelfReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesLiterals { + protected SelfReference initElement(Self self) { + var srInit = new SelfReferenceInitialiser(); + var sr = srInit.instantiate(); + Assertions.assertTrue(srInit.setSelf(sr, self)); + return sr; + } + + @Test + public void testSelf() { + var objOne = this.initElement(this.createThis()); + var objTwo = this.initElement(this.createSuper()); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.SELF_REFERENCE__SELF); + } + + @Test + public void testSelfNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createThis()), new SelfReferenceInitialiser(), false, + ReferencesPackage.Literals.SELF_REFERENCE__SELF); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ShiftExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ShiftExpressionTest.java new file mode 100644 index 0000000000..4caa0c8003 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ShiftExpressionTest.java @@ -0,0 +1,67 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.ShiftExpression; +import org.emftext.language.java.expressions.ShiftExpressionChild; +import org.emftext.language.java.operators.ShiftOperator; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.ShiftExpressionInitialiser; + +public class ShiftExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected ShiftExpression initElement(ShiftExpressionChild[] children, ShiftOperator[] ops) { + var seInit = new ShiftExpressionInitialiser(); + var se = seInit.instantiate(); + Assertions.assertTrue(seInit.addChildren(se, children)); + Assertions.assertTrue(seInit.addShiftOperators(se, ops)); + return se; + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(2) }, null), + ExpressionsPackage.Literals.SHIFT_EXPRESSION__CHILDREN); + } + + @Test + public void testChildSize() { + this.testSimilarity( + this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(1), + this.createDecimalIntegerLiteral(2) }, null), + this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + ExpressionsPackage.Literals.SHIFT_EXPRESSION__CHILDREN); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new ShiftExpressionChild[] { this.createDecimalIntegerLiteral(1) }, null), + new ShiftExpressionInitialiser(), false, ExpressionsPackage.Literals.SHIFT_EXPRESSION__CHILDREN); + } + + @Test + public void testShiftOperator() { + this.testSimilarity(this.initElement(null, new ShiftOperator[] { this.createLeftShiftOperator() }), + this.initElement(null, new ShiftOperator[] { this.createRightShiftOperator() }), + ExpressionsPackage.Literals.SHIFT_EXPRESSION__SHIFT_OPERATORS); + } + + @Test + public void testShiftOperatorSize() { + this.testSimilarity( + this.initElement(null, + new ShiftOperator[] { this.createLeftShiftOperator(), this.createRightShiftOperator() }), + this.initElement(null, new ShiftOperator[] { this.createLeftShiftOperator() }), + ExpressionsPackage.Literals.SHIFT_EXPRESSION__SHIFT_OPERATORS); + } + + @Test + public void testShiftOperatorNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, new ShiftOperator[] { this.createLeftShiftOperator() }), + new ShiftExpressionInitialiser(), false, ExpressionsPackage.Literals.SHIFT_EXPRESSION__SHIFT_OPERATORS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SingleAnnotationParameterTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SingleAnnotationParameterTest.java new file mode 100644 index 0000000000..409b18fb6d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SingleAnnotationParameterTest.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.annotations.AnnotationValue; +import org.emftext.language.java.annotations.AnnotationsPackage; +import org.emftext.language.java.annotations.SingleAnnotationParameter; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationValues; +import cipm.consistency.initialisers.jamopp.annotations.SingleAnnotationParameterInitialiser; + +public class SingleAnnotationParameterTest extends AbstractJaMoPPSimilarityTest implements UsesAnnotationValues { + protected SingleAnnotationParameter initElement(AnnotationValue val) { + var sapInit = new SingleAnnotationParameterInitialiser(); + var sap = sapInit.instantiate(); + Assertions.assertTrue(sapInit.setValue(sap, val)); + return sap; + } + + @Test + public void testValue() { + var objOne = this.initElement(this.createNullLiteral()); + var objTwo = this.initElement(this.createMinimalSR("strVal")); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.SINGLE_ANNOTATION_PARAMETER__VALUE); + } + + @Test + public void testValueNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createNullLiteral()), + new SingleAnnotationParameterInitialiser(), false, + AnnotationsPackage.Literals.SINGLE_ANNOTATION_PARAMETER__VALUE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StaticMemberImportTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StaticMemberImportTest.java new file mode 100644 index 0000000000..65a817b276 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StaticMemberImportTest.java @@ -0,0 +1,45 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.imports.ImportsPackage; +import org.emftext.language.java.imports.StaticMemberImport; +import org.emftext.language.java.references.ReferenceableElement; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesMethods; +import cipm.consistency.initialisers.jamopp.imports.StaticMemberImportInitialiser; + +public class StaticMemberImportTest extends AbstractJaMoPPSimilarityTest implements UsesMethods { + protected StaticMemberImport initElement(ReferenceableElement[] staticMems) { + var smiInit = new StaticMemberImportInitialiser(); + var smi = smiInit.instantiate(); + Assertions.assertTrue(smiInit.addStaticMembers(smi, staticMems)); + return smi; + } + + @Test + public void testStaticMember() { + var objOne = this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met1") }); + var objTwo = this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met2") }); + + this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.STATIC_MEMBER_IMPORT__STATIC_MEMBERS); + } + + @Test + public void testStaticMemberSize() { + var objOne = this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met1"), + this.createMinimalClsMethodWithNullReturn("met2") }); + var objTwo = this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met1") }); + + this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.STATIC_MEMBER_IMPORT__STATIC_MEMBERS); + } + + @Test + public void testStaticMemberNullCheck() { + this.testSimilarityNullCheck( + this.initElement(new ReferenceableElement[] { this.createMinimalClsMethodWithNullReturn("met1") }), + new StaticMemberImportInitialiser(), false, + ImportsPackage.Literals.STATIC_MEMBER_IMPORT__STATIC_MEMBERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StringReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StringReferenceTest.java new file mode 100644 index 0000000000..6cbf89a56e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/StringReferenceTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.references.ReferencesPackage; +import org.emftext.language.java.references.StringReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.references.StringReferenceInitialiser; + +public class StringReferenceTest extends AbstractJaMoPPSimilarityTest { + protected StringReference initElement(String val) { + var srInit = new StringReferenceInitialiser(); + var sr = srInit.instantiate(); + Assertions.assertTrue(srInit.setValue(sr, val)); + return sr; + } + + @Test + public void testValue() { + var objOne = this.initElement("val1"); + var objTwo = this.initElement("val2"); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.STRING_REFERENCE__VALUE); + } + + @Test + public void testValueNullCheck() { + this.testSimilarityNullCheck(this.initElement("val1"), new StringReferenceInitialiser(), false, + ReferencesPackage.Literals.STRING_REFERENCE__VALUE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SuperTypeArgumentTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SuperTypeArgumentTest.java new file mode 100644 index 0000000000..213b079234 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SuperTypeArgumentTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.generics.GenericsPackage; +import org.emftext.language.java.generics.SuperTypeArgument; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.generics.SuperTypeArgumentInitialiser; + +public class SuperTypeArgumentTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + protected SuperTypeArgument initElement(TypeReference superType) { + var staInit = new SuperTypeArgumentInitialiser(); + var sta = staInit.instantiate(); + Assertions.assertTrue(staInit.setSuperType(sta, superType)); + return sta; + } + + @Test + public void testSuperType() { + var objOne = this.initElement(this.createMinimalClsRef("cls1")); + var objTwo = this.initElement(this.createMinimalClsRef("cls2")); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.SUPER_TYPE_ARGUMENT__SUPER_TYPE); + } + + @Test + public void testSuperTypeNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalClsRef("cls1")), + new SuperTypeArgumentInitialiser(), false, GenericsPackage.Literals.SUPER_TYPE_ARGUMENT__SUPER_TYPE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SwitchTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SwitchTest.java new file mode 100644 index 0000000000..71ed5767a3 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SwitchTest.java @@ -0,0 +1,58 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.statements.Switch; +import org.emftext.language.java.statements.SwitchCase; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesSwitchCases; +import cipm.consistency.initialisers.jamopp.statements.SwitchInitialiser; + +public class SwitchTest extends AbstractJaMoPPSimilarityTest implements UsesSwitchCases { + protected Switch initElement(SwitchCase[] cases, Expression var) { + var swInit = new SwitchInitialiser(); + var sw = swInit.instantiate(); + Assertions.assertTrue(swInit.addCases(sw, cases)); + Assertions.assertTrue(swInit.setVariable(sw, var)); + return sw; + } + + @Test + public void testCase() { + var objOne = this.initElement(new SwitchCase[] { this.createEmptyNSC() }, null); + var objTwo = this.initElement(new SwitchCase[] { this.createMinimalNSC() }, null); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.SWITCH__CASES); + } + + @Test + public void testCaseSize() { + var objOne = this.initElement(new SwitchCase[] { this.createEmptyNSC(), this.createMinimalNSC() }, null); + var objTwo = this.initElement(new SwitchCase[] { this.createEmptyNSC() }, null); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.SWITCH__CASES); + } + + @Test + public void testCaseNullCheck() { + this.testSimilarityNullCheck(this.initElement(new SwitchCase[] { this.createEmptyNSC() }, null), + new SwitchInitialiser(), false, StatementsPackage.Literals.SWITCH__CASES); + } + + @Test + public void testVariable() { + var objOne = this.initElement(null, this.createMinimalSR("str1")); + var objTwo = this.initElement(null, this.createMinimalSR("str2")); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.SWITCH__VARIABLE); + } + + @Test + public void testVariableNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, this.createMinimalSR("str1")), new SwitchInitialiser(), + false, StatementsPackage.Literals.SWITCH__VARIABLE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SynchronizedBlockTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SynchronizedBlockTest.java new file mode 100644 index 0000000000..c536a82328 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/SynchronizedBlockTest.java @@ -0,0 +1,35 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.statements.SynchronizedBlock; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.SynchronizedBlockInitialiser; + +public class SynchronizedBlockTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected SynchronizedBlock initElement(Expression lockProvider) { + var sbInit = new SynchronizedBlockInitialiser(); + var sb = sbInit.instantiate(); + Assertions.assertTrue(sbInit.setLockProvider(sb, lockProvider)); + return sb; + } + + @Test + public void testLockProvider() { + var objOne = this.initElement(this.createDecimalIntegerLiteral(1)); + var objTwo = this.initElement(this.createDecimalIntegerLiteral(2)); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.SYNCHRONIZED_BLOCK__LOCK_PROVIDER); + } + + @Test + public void testLockProviderNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)), + new SynchronizedBlockInitialiser(), false, + StatementsPackage.Literals.SYNCHRONIZED_BLOCK__LOCK_PROVIDER); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TextBlockReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TextBlockReferenceTest.java new file mode 100644 index 0000000000..79eae8fd31 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TextBlockReferenceTest.java @@ -0,0 +1,32 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.references.ReferencesPackage; +import org.emftext.language.java.references.TextBlockReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.references.TextBlockReferenceInitialiser; + +public class TextBlockReferenceTest extends AbstractJaMoPPSimilarityTest { + protected TextBlockReference initElement(String val) { + var tbrInit = new TextBlockReferenceInitialiser(); + var tbr = tbrInit.instantiate(); + Assertions.assertTrue(tbrInit.setValue(tbr, val)); + return tbr; + } + + @Test + public void testValue() { + var objOne = this.initElement("val1"); + var objTwo = this.initElement("val2"); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.TEXT_BLOCK_REFERENCE__VALUE); + } + + @Test + public void testValueNullCheck() { + this.testSimilarityNullCheck(this.initElement("val1"), new TextBlockReferenceInitialiser(), false, + ReferencesPackage.Literals.TEXT_BLOCK_REFERENCE__VALUE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ThrowTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ThrowTest.java new file mode 100644 index 0000000000..ab1268f9de --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/ThrowTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.statements.Throw; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.ThrowInitialiser; + +public class ThrowTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected Throw initElement(Expression throwable) { + var thInit = new ThrowInitialiser(); + var th = thInit.instantiate(); + Assertions.assertTrue(thInit.setThrowable(th, throwable)); + return th; + } + + @Test + public void testThrowable() { + var objOne = this.initElement(this.createMinimalSR("str1")); + var objTwo = this.initElement(this.createMinimalSR("str2")); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.THROW__THROWABLE); + } + + @Test + public void testThrowableNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createMinimalSR("str1")), new ThrowInitialiser(), false, + StatementsPackage.Literals.THROW__THROWABLE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TryBlockTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TryBlockTest.java new file mode 100644 index 0000000000..b3856f34b0 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TryBlockTest.java @@ -0,0 +1,87 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.statements.Block; +import org.emftext.language.java.statements.CatchBlock; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.statements.TryBlock; +import org.emftext.language.java.variables.Resource; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesCatchBlocks; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLocalVariables; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements; +import cipm.consistency.initialisers.jamopp.statements.TryBlockInitialiser; + +public class TryBlockTest extends AbstractJaMoPPSimilarityTest implements UsesCatchBlocks, UsesStatements, UsesLocalVariables { + protected TryBlock initElement(Resource[] ress, CatchBlock[] catchBlocks, Block finallyBlock) { + var tbInit = new TryBlockInitialiser(); + var tb = tbInit.instantiate(); + Assertions.assertTrue(tbInit.addResources(tb, ress)); + Assertions.assertTrue(tbInit.addCatchBlocks(tb, catchBlocks)); + Assertions.assertTrue(tbInit.setFinallyBlock(tb, finallyBlock)); + return tb; + } + + @Test + public void testResource() { + var objOne = this.initElement(new Resource[] { this.createMinimalLV("lv1") }, null, null); + var objTwo = this.initElement(new Resource[] { this.createMinimalLV("lv2") }, null, null); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__RESOURCES); + } + + @Test + public void testResourceSize() { + var objOne = this.initElement(new Resource[] { this.createMinimalLV("lv1"), this.createMinimalLV("lv2") }, null, + null); + var objTwo = this.initElement(new Resource[] { this.createMinimalLV("lv1") }, null, null); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__RESOURCES); + } + + @Test + public void testResourceNullCheck() { + this.testSimilarityNullCheck(this.initElement(new Resource[] { this.createMinimalLV("lv1") }, null, null), + new TryBlockInitialiser(), false, StatementsPackage.Literals.TRY_BLOCK__RESOURCES); + } + + @Test + public void testCatchBlock() { + var objOne = this.initElement(null, new CatchBlock[] { this.createMinimalCB("p1", "t1") }, null); + var objTwo = this.initElement(null, new CatchBlock[] { this.createMinimalCB("p2", "t2") }, null); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__CATCH_BLOCKS); + } + + @Test + public void testCatchBlockSize() { + var objOne = this.initElement(null, + new CatchBlock[] { this.createMinimalCB("p1", "t1"), this.createMinimalCB("p2", "t2") }, null); + var objTwo = this.initElement(null, new CatchBlock[] { this.createMinimalCB("p1", "t1") }, null); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__CATCH_BLOCKS); + } + + @Test + public void testCatchBlockNullCheck() { + this.testSimilarityNullCheck( + this.initElement(null, new CatchBlock[] { this.createMinimalCB("p1", "t1") }, null), + new TryBlockInitialiser(), false, StatementsPackage.Literals.TRY_BLOCK__CATCH_BLOCKS); + } + + @Test + public void testFinallyBlock() { + var objOne = this.initElement(null, null, this.createMinimalBlockWithNullReturn()); + var objTwo = this.initElement(null, null, this.createMinimalBlockWithTrivialAssert()); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.TRY_BLOCK__FINALLY_BLOCK); + } + + @Test + public void testFinallyBlockNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, null, this.createMinimalBlockWithNullReturn()), + new TryBlockInitialiser(), false, StatementsPackage.Literals.TRY_BLOCK__FINALLY_BLOCK); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TypeParameterTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TypeParameterTest.java new file mode 100644 index 0000000000..bb606d4bc9 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/TypeParameterTest.java @@ -0,0 +1,47 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.generics.GenericsPackage; +import org.emftext.language.java.generics.TypeParameter; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesNames; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.generics.TypeParameterInitialiser; + +public class TypeParameterTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences, UsesNames { + protected TypeParameter initElement(TypeReference[] extTypes) { + var tpInit = new TypeParameterInitialiser(); + var tp = tpInit.instantiate(); + Assertions.assertTrue(tpInit.setName(tp, this.getDefaultName())); + Assertions.assertTrue(tpInit.addExtendTypes(tp, extTypes)); + return tp; + } + + @Test + public void testExtendType() { + var objOne = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }); + var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls2") }); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_PARAMETER__EXTEND_TYPES); + } + + @Test + public void testExtendTypeSize() { + var objOne = this.initElement( + new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }); + var objTwo = this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_PARAMETER__EXTEND_TYPES); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @Test + public void testExtendTypeNullCheck() { + this.testSimilarityNullCheck(this.initElement(new TypeReference[] { this.createMinimalClsRef("cls1") }), + new TypeParameterInitialiser(), false, GenericsPackage.Literals.TYPE_PARAMETER__EXTEND_TYPES); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/UnaryExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/UnaryExpressionTest.java new file mode 100644 index 0000000000..518103f6aa --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/UnaryExpressionTest.java @@ -0,0 +1,57 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.UnaryExpression; +import org.emftext.language.java.expressions.UnaryExpressionChild; +import org.emftext.language.java.operators.UnaryOperator; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.UnaryExpressionInitialiser; + +public class UnaryExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected UnaryExpression initElement(UnaryExpressionChild child, UnaryOperator[] ops) { + var ueInit = new UnaryExpressionInitialiser(); + var ue = ueInit.instantiate(); + Assertions.assertTrue(ueInit.setChild(ue, child)); + Assertions.assertTrue(ueInit.addOperators(ue, ops)); + return ue; + } + + @Test + public void testChild() { + this.testSimilarity(this.initElement(this.createDecimalIntegerLiteral(1), null), + this.initElement(this.createDecimalIntegerLiteral(2), null), + ExpressionsPackage.Literals.UNARY_EXPRESSION__CHILD); + } + + @Test + public void testChildNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1), null), + new UnaryExpressionInitialiser(), false, ExpressionsPackage.Literals.UNARY_EXPRESSION__CHILD); + } + + @Test + public void testOperator() { + this.testSimilarity(this.initElement(null, new UnaryOperator[] { this.createAdditionOperator() }), + this.initElement(null, new UnaryOperator[] { this.createSubtractionOperator() }), + ExpressionsPackage.Literals.UNARY_EXPRESSION__OPERATORS); + } + + @Test + public void testOperatorSize() { + this.testSimilarity( + this.initElement(null, + new UnaryOperator[] { this.createAdditionOperator(), this.createSubtractionOperator() }), + this.initElement(null, new UnaryOperator[] { this.createAdditionOperator() }), + ExpressionsPackage.Literals.UNARY_EXPRESSION__OPERATORS); + } + + @Test + public void testOperatorNullCheck() { + this.testSimilarityNullCheck(this.initElement(null, new UnaryOperator[] { this.createAdditionOperator() }), + new UnaryExpressionInitialiser(), false, ExpressionsPackage.Literals.UNARY_EXPRESSION__OPERATORS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/YieldStatementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/YieldStatementTest.java new file mode 100644 index 0000000000..41a2058ba5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/YieldStatementTest.java @@ -0,0 +1,34 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.StatementsPackage; +import org.emftext.language.java.statements.YieldStatement; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.YieldStatementInitialiser; + +public class YieldStatementTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + protected YieldStatement initElement(Expression yieldExpr) { + var ysInit = new YieldStatementInitialiser(); + var ys = ysInit.instantiate(); + Assertions.assertTrue(ysInit.setYieldExpression(ys, yieldExpr)); + return ys; + } + + @Test + public void testYieldExpression() { + var objOne = this.initElement(this.createDecimalIntegerLiteral(1)); + var objTwo = this.initElement(this.createDecimalIntegerLiteral(2)); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.YIELD_STATEMENT__YIELD_EXPRESSION); + } + + @Test + public void testYieldExpressionNullCheck() { + this.testSimilarityNullCheck(this.initElement(this.createDecimalIntegerLiteral(1)), + new YieldStatementInitialiser(), false, StatementsPackage.Literals.YIELD_STATEMENT__YIELD_EXPRESSION); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/package-info.java new file mode 100644 index 0000000000..a6ecf6918f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/impltests/package-info.java @@ -0,0 +1,22 @@ +/** + * Contains unit tests for {@link EObject} types, which have a concrete + * implementation in form of a non-abstract class in the {@link Commentable} + * type hierarchy. In the said tests, {@link EObject} instances are constructed + * programmatically and are checked for similarity.
+ *
+ * The tests within this package are meant to be minimal and only to test + * similarity checking with respect to individual attributes of {@link EObject} + * instances, in an isolated fashion. This means, each test performs similarity + * checking on 2 {@link EObject} instances, whose attributes are equal except + * for one of them. This way, one can pinpoint basic similarity checking errors + * regarding certain attributes of certain {@link EObject} implementors.
+ *
+ * It is highly recommended to make the construction of the "main" + * {@link EObject} instances as obvious and visible as possible, as their + * construction can get complicated and not knowing all the construction steps + * can lead to tests not fulfilling their goal.
+ *
+ * See {@link cipm.consistency.fitests.similarity.jamopp.unittests} to find out + * more about what test methods do. + */ +package cipm.consistency.fitests.similarity.jamopp.unittests.impltests; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AccessProvidingModuleDirectiveTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AccessProvidingModuleDirectiveTest.java new file mode 100644 index 0000000000..ec9a99136b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AccessProvidingModuleDirectiveTest.java @@ -0,0 +1,79 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.containers.Package; + +import org.emftext.language.java.modules.AccessProvidingModuleDirective; +import org.emftext.language.java.modules.ModuleReference; +import org.emftext.language.java.modules.ModulesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModuleReferences; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesPackages; +import cipm.consistency.initialisers.jamopp.modules.IAccessProvidingModuleDirectiveInitialiser; + +public class AccessProvidingModuleDirectiveTest extends AbstractJaMoPPSimilarityTest + implements UsesModuleReferences, UsesPackages { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IAccessProvidingModuleDirectiveInitialiser.class); + } + + protected AccessProvidingModuleDirective initElement(IAccessProvidingModuleDirectiveInitialiser init, + ModuleReference[] modRefs, Package accessablePac) { + var result = init.instantiate(); + Assertions.assertTrue(init.addModules(result, modRefs)); + Assertions.assertTrue(init.setAccessablePackage(result, accessablePac)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testModule(IAccessProvidingModuleDirectiveInitialiser init) { + var objOne = this.initElement(init, new ModuleReference[] { this.createMinimalMR("mod1") }, null); + var objTwo = this.initElement(init, new ModuleReference[] { this.createMinimalMR("mod2") }, null); + + this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__MODULES); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testModuleSize(IAccessProvidingModuleDirectiveInitialiser init) { + var objOne = this.initElement(init, + new ModuleReference[] { this.createMinimalMR("mod1"), this.createMinimalMR("mod2") }, null); + var objTwo = this.initElement(init, new ModuleReference[] { this.createMinimalMR("mod1") }, null); + + this.testSimilarity(objOne, objTwo, ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__MODULES); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testModuleNullCheck(IAccessProvidingModuleDirectiveInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, new ModuleReference[] { this.createMinimalMR("mod1") }, null), init, false, + ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__MODULES); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testAccessablePackage(IAccessProvidingModuleDirectiveInitialiser init) { + var objOne = this.initElement(init, null, this.createMinimalPackage(new String[] { "ns1", "ns2" })); + var objTwo = this.initElement(init, null, this.createMinimalPackage(new String[] { "ns3", "ns4" })); + + this.testSimilarity(objOne, objTwo, + ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__ACCESSABLE_PACKAGE); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testAccessablePackageNullCheck(IAccessProvidingModuleDirectiveInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, null, this.createMinimalPackage(new String[] { "ns1", "ns2" })), init, false, + ModulesPackage.Literals.ACCESS_PROVIDING_MODULE_DIRECTIVE__ACCESSABLE_PACKAGE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableAndModifiableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableAndModifiableTest.java new file mode 100644 index 0000000000..3a8a3b1458 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableAndModifiableTest.java @@ -0,0 +1,173 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.annotations.AnnotationInstance; +import org.emftext.language.java.modifiers.ModifiersPackage; +import org.emftext.language.java.modifiers.AnnotableAndModifiable; +import org.emftext.language.java.modifiers.Modifier; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationInstances; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModifiers; +import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser; + +public class AnnotableAndModifiableTest extends AbstractJaMoPPSimilarityTest + implements UsesAnnotationInstances, UsesModifiers { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IAnnotableAndModifiableInitialiser.class); + } + + protected AnnotableAndModifiable initElement(IAnnotableAndModifiableInitialiser init, Modifier[] modifs, + AnnotationInstance[] ais) { + + var result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addModifiers(result, modifs)); + Assertions.assertTrue(init.addAnnotationInstances(result, ais)); + + return result; + } + + @ParameterizedTest() + @MethodSource("provideArguments") + public void testModifier(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, new Modifier[] { this.createAbstract(), this.createSynchronized() }, null); + var objTwo = this.initElement(init, new Modifier[] { this.createVolatile(), this.createProtected() }, null); + + this.testSimilarity(objOne, objTwo, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @ParameterizedTest() + @MethodSource("provideArguments") + public void testModifierSize(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, new Modifier[] { this.createAbstract(), this.createSynchronized() }, null); + var objTwo = this.initElement(init, new Modifier[] { this.createAbstract() }, null); + + this.testSimilarity(objOne, objTwo, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest() + @MethodSource("provideArguments") + public void testModifierNullCheck(IAnnotableAndModifiableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, new Modifier[] { this.createAbstract(), this.createSynchronized() }, null), init, + true, ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @ParameterizedTest() + @MethodSource("provideArguments") + public void testAnnotationInstance(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, null, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") }); + var objTwo = this.initElement(init, null, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns2" }, "anno2") }); + + this.testSimilarity(objOne, objTwo, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @ParameterizedTest() + @MethodSource("provideArguments") + public void testAnnotationInstanceSize(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, null, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") }); + var objTwo = this.initElement(init, null, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1"), + this.createMinimalAI(new String[] { "ns2" }, "anno2") }); + + this.testSimilarity(objOne, objTwo, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest() + @MethodSource("provideArguments") + public void testAnnotationInstanceNullCheck(IAnnotableAndModifiableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, null, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") }), + init, true, ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @ParameterizedTest() + @MethodSource("provideArguments") + public void testPrivate(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, null, null); + init.makePrivate(objOne); + + var objTwo = this.initElement(init, null, null); + init.makePublic(objTwo); + + this.testSimilarity(objOne, objTwo, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest() + @MethodSource("provideArguments") + public void testPrivateNullCheck(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, null, null); + init.makePrivate(objOne); + + this.testSimilarityNullCheck(objOne, init, true, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @ParameterizedTest() + @MethodSource("provideArguments") + public void testProtected(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, null, null); + init.makeProtected(objOne); + + var objTwo = this.initElement(init, null, null); + init.makePublic(objTwo); + + this.testSimilarity(objOne, objTwo, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest() + @MethodSource("provideArguments") + public void testProtectedNullCheck(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, null, null); + init.makeProtected(objOne); + + this.testSimilarityNullCheck(objOne, init, true, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @ParameterizedTest() + @MethodSource("provideArguments") + public void testPublic(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, null, null); + init.makePublic(objOne); + + var objTwo = this.initElement(init, null, null); + init.makePrivate(objTwo); + + this.testSimilarity(objOne, objTwo, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest() + @MethodSource("provideArguments") + public void testPublicNullCheck(IAnnotableAndModifiableInitialiser init) { + var objOne = this.initElement(init, null, null); + init.makePublic(objOne); + + this.testSimilarityNullCheck(objOne, init, true, + ModifiersPackage.Literals.ANNOTABLE_AND_MODIFIABLE__ANNOTATIONS_AND_MODIFIERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableTest.java new file mode 100644 index 0000000000..cd3cca4972 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/AnnotableTest.java @@ -0,0 +1,63 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.annotations.Annotable; +import org.emftext.language.java.annotations.AnnotationInstance; +import org.emftext.language.java.annotations.AnnotationsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesAnnotationInstances; +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; + +public class AnnotableTest extends AbstractJaMoPPSimilarityTest implements UsesAnnotationInstances { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IAnnotableInitialiser.class); + } + + protected Annotable initElement(IAnnotableInitialiser init, AnnotationInstance[] annotations) { + Annotable result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addAnnotations(result, annotations)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testAnnotation(IAnnotableInitialiser init) { + var objOne = this.initElement(init, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") }); + var objTwo = this.initElement(init, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns2" }, "anno2") }); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTABLE__ANNOTATIONS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testAnnotationSize(IAnnotableInitialiser init) { + var objOne = this.initElement(init, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1"), + this.createMinimalAI(new String[] { "ns2" }, "anno2") }); + var objTwo = this.initElement(init, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") }); + + this.testSimilarity(objOne, objTwo, AnnotationsPackage.Literals.ANNOTABLE__ANNOTATIONS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testAnnotationNullCheck(IAnnotableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, + new AnnotationInstance[] { this.createMinimalAI(new String[] { "ns1" }, "anno1") }), + init, true, AnnotationsPackage.Literals.ANNOTABLE__ANNOTATIONS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArgumentableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArgumentableTest.java new file mode 100644 index 0000000000..edd05ce1db --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArgumentableTest.java @@ -0,0 +1,60 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.references.Argumentable; +import org.emftext.language.java.references.ReferencesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals; +import cipm.consistency.initialisers.jamopp.references.IArgumentableInitialiser; + +public class ArgumentableTest extends AbstractJaMoPPSimilarityTest + implements UsesConcreteClassifiers, UsesExpressions, UsesLiterals { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IArgumentableInitialiser.class); + } + + protected Argumentable initElement(IArgumentableInitialiser init, Expression[] args) { + var result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addArguments(result, args)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArguments(IArgumentableInitialiser init) { + var objOne = this.initElement(init, new Expression[] { this.createDecimalIntegerLiteral(1) }); + var objTwo = this.initElement(init, new Expression[] { this.createDecimalIntegerLiteral(0) }); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ARGUMENTABLE__ARGUMENTS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArgumentsSize(IArgumentableInitialiser init) { + var objOne = this.initElement(init, + new Expression[] { this.createDecimalIntegerLiteral(1), this.createDecimalIntegerLiteral(2) }); + var objTwo = this.initElement(init, new Expression[] { this.createDecimalIntegerLiteral(1) }); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ARGUMENTABLE__ARGUMENTS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testArgumentsNullCheck(IArgumentableInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, new Expression[] { this.createDecimalIntegerLiteral(1) }), + init, true, ReferencesPackage.Literals.ARGUMENTABLE__ARGUMENTS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayInstantiationByValuesTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayInstantiationByValuesTest.java new file mode 100644 index 0000000000..01443c0a60 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayInstantiationByValuesTest.java @@ -0,0 +1,48 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.arrays.ArrayInitializer; +import org.emftext.language.java.arrays.ArrayInstantiationByValues; +import org.emftext.language.java.arrays.ArraysPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesArrayInitializers; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals; +import cipm.consistency.initialisers.jamopp.arrays.IArrayInstantiationByValuesInitialiser; + +public class ArrayInstantiationByValuesTest extends AbstractJaMoPPSimilarityTest + implements UsesArrayInitializers, UsesLiterals { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IArrayInstantiationByValuesInitialiser.class); + } + + protected ArrayInstantiationByValues initElement(IArrayInstantiationByValuesInitialiser init, + ArrayInitializer arrInit) { + ArrayInstantiationByValues result = init.instantiate(); + Assertions.assertTrue(init.setArrayInitializer(result, arrInit)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArrayInitialiser(IArrayInstantiationByValuesInitialiser init) { + var objOne = this.initElement(init, this.createMinimalArrayInitializer(this.createDecimalIntegerLiteral(0))); + var objTwo = this.initElement(init, this.createMinimalArrayInitializer(this.createDecimalIntegerLiteral(1))); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_VALUES__ARRAY_INITIALIZER); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArrayInitialiserNullCheck(IArrayInstantiationByValuesInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, this.createMinimalArrayInitializer(this.createDecimalIntegerLiteral(0))), init, + false, ArraysPackage.Literals.ARRAY_INSTANTIATION_BY_VALUES__ARRAY_INITIALIZER); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayTypeableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayTypeableTest.java new file mode 100644 index 0000000000..cb0e53cb7f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ArrayTypeableTest.java @@ -0,0 +1,94 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.arrays.ArrayDimension; +import org.emftext.language.java.arrays.ArrayTypeable; +import org.emftext.language.java.arrays.ArraysPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesArrayDimensions; +import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser; + +public class ArrayTypeableTest extends AbstractJaMoPPSimilarityTest implements UsesArrayDimensions { + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IArrayTypeableInitialiser.class); + } + + protected ArrayTypeable initElement(IArrayTypeableInitialiser init, ArrayDimension[] arrDimsBefore, + ArrayDimension[] arrDimsAfter) { + ArrayTypeable result = init.instantiate(); + Assertions.assertTrue(init.addArrayDimensionsBefore(result, arrDimsBefore)); + Assertions.assertTrue(init.addArrayDimensionsAfter(result, arrDimsAfter)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArrayDimensionsBefore(IArrayTypeableInitialiser init) { + var objOne = this.initElement(init, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }, null); + var objTwo = this.initElement(init, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns2" }, "ai2") }, null); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_BEFORE); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArrayDimensionsBeforeSize(IArrayTypeableInitialiser init) { + var objOne = this.initElement(init, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1"), + this.createArrayDimension(new String[] { "ns2" }, "ai2") }, + null); + var objTwo = this.initElement(init, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }, null); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_BEFORE); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArrayDimensionsBeforeNullCheck(IArrayTypeableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }, null), + init, false, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_BEFORE); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArrayDimensionsAfter(IArrayTypeableInitialiser init) { + var objOne = this.initElement(init, null, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }); + var objTwo = this.initElement(init, null, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns2" }, "ai2") }); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_AFTER); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArrayDimensionsAfterSize(IArrayTypeableInitialiser init) { + var objOne = this.initElement(init, null, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1"), + this.createArrayDimension(new String[] { "ns2" }, "ai2") }); + var objTwo = this.initElement(init, null, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }); + + this.testSimilarity(objOne, objTwo, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_AFTER); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArrayDimensionsAfterNullCheck(IArrayTypeableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, null, + new ArrayDimension[] { this.createArrayDimension(new String[] { "ns1" }, "ai1") }), + init, false, ArraysPackage.Literals.ARRAY_TYPEABLE__ARRAY_DIMENSIONS_AFTER); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/BlockContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/BlockContainerTest.java new file mode 100644 index 0000000000..0cb9ff2978 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/BlockContainerTest.java @@ -0,0 +1,47 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.statements.Block; +import org.emftext.language.java.statements.BlockContainer; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements; +import cipm.consistency.initialisers.jamopp.statements.IBlockContainerInitialiser; + +public class BlockContainerTest extends AbstractJaMoPPSimilarityTest implements UsesStatements { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IBlockContainerInitialiser.class); + } + + protected BlockContainer initElement(IBlockContainerInitialiser init, Block bl) { + BlockContainer result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.setBlock(result, bl)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testBlock(IBlockContainerInitialiser init) { + var objOne = this.initElement(init, this.createMinimalBlockWithNullReturn()); + var objTwo = this.initElement(init, this.createMinimalBlockWithTrivialAssert()); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.BLOCK_CONTAINER__BLOCK); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testBlockNullCheck(IBlockContainerInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalBlockWithNullReturn()), init, true, + StatementsPackage.Literals.BLOCK_CONTAINER__BLOCK); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/CallTypeArgumentableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/CallTypeArgumentableTest.java new file mode 100644 index 0000000000..120029d3d2 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/CallTypeArgumentableTest.java @@ -0,0 +1,58 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.generics.CallTypeArgumentable; +import org.emftext.language.java.generics.GenericsPackage; +import org.emftext.language.java.generics.TypeArgument; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeArguments; +import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser; + +public class CallTypeArgumentableTest extends AbstractJaMoPPSimilarityTest implements UsesTypeArguments { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ICallTypeArgumentableInitialiser.class); + } + + protected CallTypeArgumentable initElement(ICallTypeArgumentableInitialiser init, TypeArgument[] callTypeArgs) { + CallTypeArgumentable result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addCallTypeArguments(result, callTypeArgs)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testCallTypeArguments(ICallTypeArgumentableInitialiser init) { + var objOne = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") }); + var objTwo = this.initElement(init, new TypeArgument[] { this.createMinimalSuperTAWithCls("cls2") }); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.CALL_TYPE_ARGUMENTABLE__CALL_TYPE_ARGUMENTS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testCallTypeArgumentsSize(ICallTypeArgumentableInitialiser init) { + var objOne = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1"), + this.createMinimalExtendsTAWithCls("cls2") }); + var objTwo = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") }); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.CALL_TYPE_ARGUMENTABLE__CALL_TYPE_ARGUMENTS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testCallTypeArgumentsNullCheck(ICallTypeArgumentableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") }), init, true, + GenericsPackage.Literals.CALL_TYPE_ARGUMENTABLE__CALL_TYPE_ARGUMENTS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ClassifierTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ClassifierTest.java new file mode 100644 index 0000000000..42e5372cfe --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ClassifierTest.java @@ -0,0 +1,119 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.imports.Import; +import org.emftext.language.java.imports.ImportsPackage; +import org.emftext.language.java.imports.PackageImport; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesImports; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesPackageImports; +import cipm.consistency.initialisers.jamopp.classifiers.IClassifierInitialiser; + +/** + * Classifier has no modifiable attributes on its own. + * + * @author Alp Torac Genc + */ +public class ClassifierTest extends AbstractJaMoPPSimilarityTest implements UsesImports, UsesPackageImports { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IClassifierInitialiser.class); + } + + protected Classifier initElement(IClassifierInitialiser init, Import[] imps, PackageImport[] pImps) { + + var result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + + // If there are no imports to add, add(Package)Imports will return true + Assertions.assertEquals(init.canAddImports(result) || imps == null, init.addImports(result, imps)); + Assertions.assertEquals(init.canAddPackageImports(result) || pImps == null, + init.addPackageImports(result, pImps)); + + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testImports(IClassifierInitialiser init) { + var objOne = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }, null); + var objTwo = this.initElement(init, new Import[] { this.createMinimalClsImport("cls2") }, null); + + this.testSimilarity(objOne, objTwo, + this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue() + || (!init.canAddImports(objOne) && !init.canAddImports(objTwo))); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testImportsSize(IClassifierInitialiser init) { + var objOne = this.initElement(init, + new Import[] { this.createMinimalClsImport("cls1"), this.createMinimalClsImport("cls2") }, null); + var objTwo = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }, null); + + this.testSimilarity(objOne, objTwo, + this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue() + || (!init.canAddImports(objOne) && !init.canAddImports(objTwo))); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testImportsNullCheck(IClassifierInitialiser init) { + var objOne = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }, null); + + this.testSimilarityNullCheck(objOne, init, true, + this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue() + || (!init.canAddImports(objOne))); + } + + /** + * Package import differences do not break similarity + */ + @ParameterizedTest + @MethodSource("provideArguments") + public void testPackageImports(IClassifierInitialiser init) { + var objOne = this.initElement(init, null, + new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns1", "ns2" }) }); + var objTwo = this.initElement(init, null, + new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns3", "ns4" }) }); + + this.testSimilarity(objOne, objTwo, + this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue() + || (!init.canAddImports(objOne) && !init.canAddImports(objTwo))); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testPackageImportsSize(IClassifierInitialiser init) { + var objOne = this.initElement(init, null, + new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns1", "ns2" }), + this.createMinimalPackageImport(new String[] { "ns3", "ns4" }) }); + var objTwo = this.initElement(init, null, + new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns1", "ns2" }) }); + + this.testSimilarity(objOne, objTwo, + this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue() + || (!init.canAddImports(objOne) && !init.canAddImports(objTwo))); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testPackageImportsNullCheck(IClassifierInitialiser init) { + var objOne = this.initElement(init, null, + new PackageImport[] { this.createMinimalPackageImport(new String[] { "ns1", "ns2" }) }); + + this.testSimilarityNullCheck(objOne, init, true, + this.getExpectedSimilarityResult(ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS).booleanValue() + || (!init.canAddImports(objOne))); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConcreteClassifierTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConcreteClassifierTest.java new file mode 100644 index 0000000000..4ab95840ee --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConcreteClassifierTest.java @@ -0,0 +1,47 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import org.emftext.language.java.containers.Package; + +import java.util.stream.Stream; + +import org.emftext.language.java.classifiers.ClassifiersPackage; +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesPackages; +import cipm.consistency.initialisers.jamopp.classifiers.IConcreteClassifierInitialiser; + +public class ConcreteClassifierTest extends AbstractJaMoPPSimilarityTest implements UsesPackages { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IConcreteClassifierInitialiser.class); + } + + protected ConcreteClassifier initElement(IConcreteClassifierInitialiser init, Package pac) { + + ConcreteClassifier result = init.instantiate(); + Assertions.assertTrue(init.setPackage(result, pac)); + + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testPackage(IConcreteClassifierInitialiser init) { + var objOne = this.initElement(init, this.createMinimalPackage("pOneNS", 2)); + var objTwo = this.initElement(init, this.createMinimalPackage("pTwoNS", 2)); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.CONCRETE_CLASSIFIER__PACKAGE); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testPackageNullCheck(IConcreteClassifierInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalPackage("pOneNS", 2)), init, false, + ClassifiersPackage.Literals.CONCRETE_CLASSIFIER__PACKAGE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConditionalTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConditionalTest.java new file mode 100644 index 0000000000..1f82dd7edd --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ConditionalTest.java @@ -0,0 +1,44 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Conditional; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.statements.IConditionalInitialiser; + +public class ConditionalTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IConditionalInitialiser.class); + } + + protected Conditional initElement(IConditionalInitialiser init, Expression cond) { + Conditional result = init.instantiate(); + Assertions.assertTrue(init.setCondition(result, cond)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testCondition(IConditionalInitialiser init) { + var objOne = this.initElement(init, this.createMinimalTrueEE()); + var objTwo = this.initElement(init, this.createMinimalTrueNEE()); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.CONDITIONAL__CONDITION); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testConditionNullCheck(IConditionalInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalTrueEE()), init, false, + StatementsPackage.Literals.CONDITIONAL__CONDITION); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ElementReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ElementReferenceTest.java new file mode 100644 index 0000000000..e5a09db934 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ElementReferenceTest.java @@ -0,0 +1,96 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.references.ElementReference; +import org.emftext.language.java.references.ReferenceableElement; +import org.emftext.language.java.references.ReferencesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.initialisers.jamopp.references.IElementReferenceInitialiser; + +public class ElementReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IElementReferenceInitialiser.class); + } + + protected ElementReference initElement(IElementReferenceInitialiser init, ReferenceableElement target, + ReferenceableElement cTarget) { + ElementReference result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.setTarget(result, target)); + Assertions.assertTrue(init.setContainedTarget(result, cTarget)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTarget(IElementReferenceInitialiser init) { + var objOne = this.initElement(init, this.createMinimalClass("cls1"), null); + var objTwo = this.initElement(init, this.createMinimalClass("cls2"), null); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ELEMENT_REFERENCE__TARGET); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testTargetNullCheck(IElementReferenceInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalClass("cls1"), null), init, false, + ReferencesPackage.Literals.ELEMENT_REFERENCE__TARGET); + } + + /** + * Makes sure that not providing a container for the created element reference + * does not result in an exception. + */ + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testTargetNoException(IElementReferenceInitialiser init) { + var objOne = this.initElement(init, this.createMinimalClass("cls1"), null); + var objTwo = this.initElement(init, this.createMinimalClass("cls2"), null); + + Assertions.assertDoesNotThrow( + () -> this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ELEMENT_REFERENCE__TARGET)); + } + + /** + * Makes sure that not providing a container for the created element reference + * does not result in an exception, if it is compared to an uninitialised + * element reference. + */ + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testTargetNoExceptionNullCheck(IElementReferenceInitialiser init) { + var objOne = this.initElement(init, this.createMinimalClass("cls1"), null); + var objTwo = init.instantiate(); + + Assertions.assertDoesNotThrow( + () -> this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ELEMENT_REFERENCE__TARGET)); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testContainedTarget(IElementReferenceInitialiser init) { + var objOne = this.initElement(init, null, this.createMinimalClass("cls1")); + var objTwo = this.initElement(init, null, this.createMinimalClass("cls2")); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.ELEMENT_REFERENCE__CONTAINED_TARGET); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testContainedTargetNullCheck(IElementReferenceInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, null, this.createMinimalClass("cls1")), init, false, + ReferencesPackage.Literals.ELEMENT_REFERENCE__CONTAINED_TARGET); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ExceptionThrowerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ExceptionThrowerTest.java new file mode 100644 index 0000000000..bc6fba636c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ExceptionThrowerTest.java @@ -0,0 +1,59 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.members.ExceptionThrower; +import org.emftext.language.java.members.MembersPackage; +import org.emftext.language.java.types.NamespaceClassifierReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.members.IExceptionThrowerInitialiser; + +public class ExceptionThrowerTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IExceptionThrowerInitialiser.class); + } + + protected ExceptionThrower initElement(IExceptionThrowerInitialiser init, + NamespaceClassifierReference[] exceptions) { + ExceptionThrower result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addExceptions(result, exceptions)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testExceptions(IExceptionThrowerInitialiser init) { + var objOne = this.initElement(init, new NamespaceClassifierReference[] { this.createMinimalCNR("cls1") }); + var objTwo = this.initElement(init, new NamespaceClassifierReference[] { this.createMinimalCNR("cls2") }); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.EXCEPTION_THROWER__EXCEPTIONS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testExceptionsSize(IExceptionThrowerInitialiser init) { + var objOne = this.initElement(init, + new NamespaceClassifierReference[] { this.createMinimalCNR("cls1"), this.createMinimalCNR("cls2") }); + var objTwo = this.initElement(init, new NamespaceClassifierReference[] { this.createMinimalCNR("cls1") }); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.EXCEPTION_THROWER__EXCEPTIONS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testExceptionsNullCheck(IExceptionThrowerInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, new NamespaceClassifierReference[] { this.createMinimalCNR("cls1") }), init, + true, MembersPackage.Literals.EXCEPTION_THROWER__EXCEPTIONS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImplementorTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImplementorTest.java new file mode 100644 index 0000000000..96577bb0cd --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImplementorTest.java @@ -0,0 +1,54 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.classifiers.ClassifiersPackage; +import org.emftext.language.java.classifiers.Implementor; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.classifiers.IImplementorInitialiser; + +public class ImplementorTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IImplementorInitialiser.class); + } + + protected Implementor initElement(IImplementorInitialiser init, TypeReference[] impls) { + Implementor result = init.instantiate(); + Assertions.assertTrue(init.addImplements(result, impls)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testImplements(IImplementorInitialiser init) { + var objOne = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") }); + var objTwo = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls2") }); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.IMPLEMENTOR__IMPLEMENTS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testImplementsSize(IImplementorInitialiser init) { + var objOne = this.initElement(init, + new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }); + var objTwo = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") }); + + this.testSimilarity(objOne, objTwo, ClassifiersPackage.Literals.IMPLEMENTOR__IMPLEMENTS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testImplementsNullCheck(IImplementorInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") }), + init, false, ClassifiersPackage.Literals.IMPLEMENTOR__IMPLEMENTS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportTest.java new file mode 100644 index 0000000000..194a5f69c5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportTest.java @@ -0,0 +1,45 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.emftext.language.java.imports.Import; +import org.emftext.language.java.imports.ImportsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesImports; +import cipm.consistency.initialisers.jamopp.imports.IImportInitialiser; + +public class ImportTest extends AbstractJaMoPPSimilarityTest implements UsesImports { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IImportInitialiser.class); + } + + protected Import initElement(IImportInitialiser init, ConcreteClassifier cls) { + Import result = init.instantiate(); + Assertions.assertTrue(init.setClassifier(result, cls)); + + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testClassifier(IImportInitialiser init) { + var objOne = this.initElement(init, this.createMinimalClass("cls1Name")); + var objTwo = this.initElement(init, this.createMinimalClass("cls2Name")); + + this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.IMPORT__CLASSIFIER); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testClassifierNullCheck(IImportInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalClass("cls1Name")), init, false, + ImportsPackage.Literals.IMPORT__CLASSIFIER); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportingElementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportingElementTest.java new file mode 100644 index 0000000000..8bc94d955c --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ImportingElementTest.java @@ -0,0 +1,58 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.stream.Stream; + +import org.emftext.language.java.imports.Import; +import org.emftext.language.java.imports.ImportingElement; +import org.emftext.language.java.imports.ImportsPackage; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesImportingElements; +import cipm.consistency.initialisers.jamopp.imports.IImportingElementInitialiser; + +public class ImportingElementTest extends AbstractJaMoPPSimilarityTest implements UsesImportingElements { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IImportingElementInitialiser.class); + } + + protected ImportingElement initElement(IImportingElementInitialiser init, Import[] imps) { + ImportingElement result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addImports(result, imps)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testImports(IImportingElementInitialiser init) { + var objOne = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }); + var objTwo = this.initElement(init, new Import[] { this.createMinimalClsImport("cls2") }); + + this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testImportsSize(IImportingElementInitialiser init) { + var objOne = this.initElement(init, + new Import[] { this.createMinimalClsImport("cls1"), this.createMinimalClsImport("cls2") }); + var objTwo = this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }); + + this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testImportsNullCheck(IImportingElementInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, new Import[] { this.createMinimalClsImport("cls1") }), init, + true, ImportsPackage.Literals.IMPORTING_ELEMENT__IMPORTS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/InitializableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/InitializableTest.java new file mode 100644 index 0000000000..0e7ade8281 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/InitializableTest.java @@ -0,0 +1,47 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.instantiations.Initializable; +import org.emftext.language.java.instantiations.InstantiationsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesLiterals; +import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser; + +public class InitializableTest extends AbstractJaMoPPSimilarityTest implements UsesLiterals { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IInitializableInitialiser.class); + } + + protected Initializable initElement(IInitializableInitialiser init, Expression initVal) { + Initializable result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.setInitialValue(result, initVal)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testInitialValue(IInitializableInitialiser init) { + var objOne = this.initElement(init, this.createDecimalIntegerLiteral(5)); + var objTwo = this.initElement(init, this.createBooleanLiteral(false)); + + this.testSimilarity(objOne, objTwo, InstantiationsPackage.Literals.INITIALIZABLE__INITIAL_VALUE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testInitialValueNullCheck(IInitializableInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createDecimalIntegerLiteral(5)), init, true, + InstantiationsPackage.Literals.INITIALIZABLE__INITIAL_VALUE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JavaRootTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JavaRootTest.java new file mode 100644 index 0000000000..68338fdbe0 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JavaRootTest.java @@ -0,0 +1,46 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.containers.ContainersPackage; +import org.emftext.language.java.containers.JavaRoot; +import org.emftext.language.java.containers.Origin; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.containers.IJavaRootInitialiser; + +public class JavaRootTest extends AbstractJaMoPPSimilarityTest { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IJavaRootInitialiser.class); + } + + protected JavaRoot initElement(IJavaRootInitialiser init, Origin origin) { + JavaRoot result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.setOrigin(result, origin)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testOrigin(IJavaRootInitialiser init) { + var objOne = this.initElement(init, Origin.BINDING); + var objTwo = this.initElement(init, Origin.CLASS); + + this.testSimilarity(objOne, objTwo, ContainersPackage.Literals.JAVA_ROOT__ORIGIN); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testOriginNullCheck(IJavaRootInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, Origin.BINDING), init, true, + ContainersPackage.Literals.JAVA_ROOT__ORIGIN); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JumpTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JumpTest.java new file mode 100644 index 0000000000..f5b05df3a1 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/JumpTest.java @@ -0,0 +1,44 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.statements.Jump; +import org.emftext.language.java.statements.JumpLabel; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements; +import cipm.consistency.initialisers.jamopp.statements.IJumpInitialiser; + +public class JumpTest extends AbstractJaMoPPSimilarityTest implements UsesStatements { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IJumpInitialiser.class); + } + + protected Jump initElement(IJumpInitialiser init, JumpLabel jl) { + Jump result = init.instantiate(); + Assertions.assertTrue(init.setTarget(result, jl)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTarget(IJumpInitialiser init) { + var objOne = this.initElement(init, this.createMinimalJLToNullReturn("jl1")); + var objTwo = this.initElement(init, this.createMinimalJLToTrivialAssert("jl2")); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.JUMP__TARGET); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTargetNullCheck(IJumpInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalJLToNullReturn("jl1")), init, false, + StatementsPackage.Literals.JUMP__TARGET); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/MemberContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/MemberContainerTest.java new file mode 100644 index 0000000000..92f518317d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/MemberContainerTest.java @@ -0,0 +1,84 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.members.Member; +import org.emftext.language.java.members.MemberContainer; +import org.emftext.language.java.members.MembersPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesFields; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesMethods; +import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser; + +public class MemberContainerTest extends AbstractJaMoPPSimilarityTest + implements UsesMethods, UsesFields, UsesConcreteClassifiers { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IMemberContainerInitialiser.class); + } + + protected MemberContainer initElement(IMemberContainerInitialiser init, Member[] members, Member[] defMembers) { + MemberContainer result = init.instantiate(); + Assertions.assertTrue(init.addMembers(result, members)); + Assertions.assertTrue(init.addDefaultMembers(result, defMembers)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testMember(IMemberContainerInitialiser init) { + var objOne = this.initElement(init, new Member[] { this.createMinimalClass("cls1") }, null); + var objTwo = this.initElement(init, new Member[] { this.createMinimalClass("cls2") }, null); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testMemberSize(IMemberContainerInitialiser init) { + var objOne = this.initElement(init, + new Member[] { this.createMinimalClass("cls1"), this.createMinimalClass("cls2") }, null); + var objTwo = this.initElement(init, new Member[] { this.createMinimalClass("cls1") }, null); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testMemberNullCheck(IMemberContainerInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, new Member[] { this.createMinimalClass("cls1") }, null), + init, false, MembersPackage.Literals.MEMBER_CONTAINER__MEMBERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testDefaultMember(IMemberContainerInitialiser init) { + var objOne = this.initElement(init, null, new Member[] { this.createMinimalClass("cls1") }); + var objTwo = this.initElement(init, null, new Member[] { this.createMinimalClass("cls2") }); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testDefaultMemberSize(IMemberContainerInitialiser init) { + var objOne = this.initElement(init, null, + new Member[] { this.createMinimalClass("cls1"), this.createMinimalClass("cls2") }); + var objTwo = this.initElement(init, null, new Member[] { this.createMinimalClass("cls1") }); + + this.testSimilarity(objOne, objTwo, MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testDefaultMemberNullCheck(IMemberContainerInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, null, new Member[] { this.createMinimalClass("cls1") }), + init, false, MembersPackage.Literals.MEMBER_CONTAINER__DEFAULT_MEMBERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ModifiableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ModifiableTest.java new file mode 100644 index 0000000000..da87ad34af --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ModifiableTest.java @@ -0,0 +1,55 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.modifiers.Modifiable; +import org.emftext.language.java.modifiers.Modifier; +import org.emftext.language.java.modifiers.ModifiersPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModifiers; +import cipm.consistency.initialisers.jamopp.modifiers.IModifiableInitialiser; + +public class ModifiableTest extends AbstractJaMoPPSimilarityTest implements UsesModifiers { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IModifiableInitialiser.class); + } + + protected Modifiable initElement(IModifiableInitialiser init, Modifier[] modifs) { + Modifiable result = init.instantiate(); + Assertions.assertTrue(init.addModifiers(result, modifs)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testModifier(IModifiableInitialiser init) { + var objOne = this.initElement(init, new Modifier[] { this.createFinal() }); + var objTwo = this.initElement(init, new Modifier[] { this.createAbstract() }); + + this.testSimilarity(objOne, objTwo, ModifiersPackage.Literals.MODIFIABLE__MODIFIERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testModifierSize(IModifiableInitialiser init) { + var objOne = this.initElement(init, new Modifier[] { this.createFinal(), this.createAbstract() }); + var objTwo = this.initElement(init, new Modifier[] { this.createFinal() }); + + this.testSimilarity(objOne, objTwo, ModifiersPackage.Literals.MODIFIABLE__MODIFIERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testModifierNullCheck(IModifiableInitialiser init) { + var objOne = this.initElement(init, new Modifier[] { this.createFinal() }); + var objTwo = init.instantiate(); + + this.testSimilarity(objOne, objTwo, ModifiersPackage.Literals.MODIFIABLE__MODIFIERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamedElementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamedElementTest.java new file mode 100644 index 0000000000..bbdd5e57d5 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamedElementTest.java @@ -0,0 +1,45 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.commons.CommonsPackage; +import org.emftext.language.java.commons.NamedElement; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser; + +public class NamedElementTest extends AbstractJaMoPPSimilarityTest { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(INamedElementInitialiser.class); + } + + protected NamedElement initElement(INamedElementInitialiser init, String name) { + NamedElement result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertEquals(init.canSetName(result) || name == null, init.setName(result, name)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testName(INamedElementInitialiser init) { + var objOne = this.initElement(init, "name11"); + var objTwo = this.initElement(init, "name22"); + + this.testSimilarity(objOne, objTwo, CommonsPackage.Literals.NAMED_ELEMENT__NAME); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testNameNullCheck(INamedElementInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, "name11"), init, false, + CommonsPackage.Literals.NAMED_ELEMENT__NAME); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamespaceAwareElementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamespaceAwareElementTest.java new file mode 100644 index 0000000000..2dd5b3c402 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/NamespaceAwareElementTest.java @@ -0,0 +1,69 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.commons.CommonsPackage; +import org.emftext.language.java.commons.NamespaceAwareElement; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser; + +public class NamespaceAwareElementTest extends AbstractJaMoPPSimilarityTest { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(INamespaceAwareElementInitialiser.class); + } + + private final String[] nss1 = new String[] { "ns11", "ns12", "ns13" }; + private final String[] nss2 = new String[] { "ns21", "ns22", "ns23" }; + + protected NamespaceAwareElement initElement(INamespaceAwareElementInitialiser init, String[] nss) { + NamespaceAwareElement result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addNamespaces(result, nss)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testNamespace(INamespaceAwareElementInitialiser init) { + var objOne = this.initElement(init, nss1); + var objTwo = this.initElement(init, nss2); + + this.testSimilarity(objOne, objTwo, CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES); + } + + /** + * Tests whether longer namespaces with the same prefix are different. + */ + @ParameterizedTest + @MethodSource("provideArguments") + public void testNamespaceScope(INamespaceAwareElementInitialiser init) { + for (int i = 0; i < nss1.length; i++) { + var newNss = new String[i]; + + for (int j = 0; j < i; j++) { + newNss[j] = nss1[j]; + } + + var objOne = this.initElement(init, newNss); + var objTwo = this.initElement(init, nss1); + + this.testSimilarity(objOne, objTwo, CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES); + } + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testNamespaceNullCheck(INamespaceAwareElementInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, nss1), init, true, + CommonsPackage.Literals.NAMESPACE_AWARE_ELEMENT__NAMESPACES); + } + +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ParametrizableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ParametrizableTest.java new file mode 100644 index 0000000000..5b48773226 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ParametrizableTest.java @@ -0,0 +1,58 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.parameters.Parameter; +import org.emftext.language.java.parameters.ParametersPackage; +import org.emftext.language.java.parameters.Parametrizable; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesParameters; +import cipm.consistency.initialisers.jamopp.parameters.IParametrizableInitialiser; + +public class ParametrizableTest extends AbstractJaMoPPSimilarityTest implements UsesParameters { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IParametrizableInitialiser.class); + } + + protected Parametrizable initElement(IParametrizableInitialiser init, Parameter[] params) { + Parametrizable result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addParameters(result, params)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testParameters(IParametrizableInitialiser init) { + var objOne = this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p1", "t1") }); + var objTwo = this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p2", "t2") }); + + this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.PARAMETRIZABLE__PARAMETERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testParametersSize(IParametrizableInitialiser init) { + var objOne = this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p1", "t1"), + this.createMinimalOrdParamWithClsTarget("p2", "t2") }); + var objTwo = this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p1", "t1") }); + + this.testSimilarity(objOne, objTwo, ParametersPackage.Literals.PARAMETRIZABLE__PARAMETERS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testParametersNullCheck(IParametrizableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, new Parameter[] { this.createMinimalOrdParamWithClsTarget("p1", "t1") }), init, + true, ParametersPackage.Literals.PARAMETRIZABLE__PARAMETERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/PrimitiveTypeTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/PrimitiveTypeTest.java new file mode 100644 index 0000000000..ca9f172937 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/PrimitiveTypeTest.java @@ -0,0 +1,45 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.PrimitiveType; +import org.emftext.language.java.types.TypesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.initialisers.jamopp.types.IPrimitiveTypeInitialiser; + +public class PrimitiveTypeTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IPrimitiveTypeInitialiser.class); + } + + protected PrimitiveType initElement(IPrimitiveTypeInitialiser init, Classifier target) { + var res = init.instantiate(); + + Assertions.assertFalse(init.setTarget(res, target)); + return res; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTarget(IPrimitiveTypeInitialiser init) { + var objOne = this.initElement(init, this.createMinimalClass("cls")); + var objTwo = init.instantiate(); + + this.testSimilarity(objOne, objTwo, PrimitiveType.class, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTargetNullCheck(IPrimitiveTypeInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalClass("cls1")), init, false, + PrimitiveType.class, TypesPackage.Literals.CLASSIFIER_REFERENCE__TARGET); + } +} \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ReferenceTest.java new file mode 100644 index 0000000000..71d234cfb4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/ReferenceTest.java @@ -0,0 +1,76 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.references.Reference; +import org.emftext.language.java.references.ReferencesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesArraySelectors; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesReferences; +import cipm.consistency.initialisers.jamopp.references.IReferenceInitialiser; + +public class ReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesReferences, UsesArraySelectors { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IReferenceInitialiser.class); + } + + protected Reference initElement(IReferenceInitialiser init, Reference next, ArraySelector[] arrSels) { + Reference ref = init.instantiate(); + Assertions.assertTrue(init.initialise(ref)); + Assertions.assertTrue(init.setNext(ref, next)); + Assertions.assertTrue(init.addArraySelectors(ref, arrSels)); + return ref; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testNext(IReferenceInitialiser init) { + var objOne = this.initElement(init, this.createMinimalSR("str1"), null); + var objTwo = this.initElement(init, this.createMinimalSR("str2"), null); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.REFERENCE__NEXT); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testNextNullCheck(IReferenceInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalSR("str1"), null), init, true, + ReferencesPackage.Literals.REFERENCE__NEXT); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArraySelector(IReferenceInitialiser init) { + var objOne = this.initElement(init, null, new ArraySelector[] { this.createMinimalAS(0) }); + var objTwo = this.initElement(init, null, new ArraySelector[] { this.createMinimalAS(1) }); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testArraySelectorSize(IReferenceInitialiser init) { + var objOne = this.initElement(init, null, + new ArraySelector[] { this.createMinimalAS(0), this.createMinimalAS(1) }); + var objTwo = this.initElement(init, null, new ArraySelector[] { this.createMinimalAS(0) }); + + this.testSimilarity(objOne, objTwo, ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testArraySelectorNullCheck(IReferenceInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, null, new ArraySelector[] { this.createMinimalAS(0) }), + init, true, ReferencesPackage.Literals.REFERENCE__ARRAY_SELECTORS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementContainerTest.java new file mode 100644 index 0000000000..a4c08f8c1e --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementContainerTest.java @@ -0,0 +1,47 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.statements.Statement; +import org.emftext.language.java.statements.StatementContainer; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements; +import cipm.consistency.initialisers.jamopp.statements.IStatementContainerInitialiser; + +public class StatementContainerTest extends AbstractJaMoPPSimilarityTest implements UsesStatements { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IStatementContainerInitialiser.class); + } + + protected StatementContainer initElement(IStatementContainerInitialiser init, Statement st) { + StatementContainer result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.setStatement(result, st)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testStatement(IStatementContainerInitialiser init) { + var objOne = this.initElement(init, this.createMinimalNullReturn()); + var objTwo = this.initElement(init, this.createMinimalTrivialAssert()); + + this.testSimilarity(objOne, objTwo, StatementsPackage.Literals.STATEMENT_CONTAINER__STATEMENT); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testStatementNullCheck(IStatementContainerInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalNullReturn()), init, true, + StatementsPackage.Literals.STATEMENT_CONTAINER__STATEMENT); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementListContainerTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementListContainerTest.java new file mode 100644 index 0000000000..413bd7719a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StatementListContainerTest.java @@ -0,0 +1,71 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.statements.Statement; +import org.emftext.language.java.statements.StatementListContainer; +import org.emftext.language.java.statements.StatementsPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesStatements; +import cipm.consistency.initialisers.jamopp.statements.IStatementListContainerInitialiser; + +/** + * {@link StatementListContainer} has no attributes itself. + * + * @author Alp Torac Genc + */ +public class StatementListContainerTest extends AbstractJaMoPPSimilarityTest implements UsesStatements { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(IStatementListContainerInitialiser.class); + } + + protected StatementListContainer initElement(IStatementListContainerInitialiser init, Statement[] sts) { + + StatementListContainer result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertEquals(init.canContainStatements(result), init.addStatements(result, sts)); + + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testStatements(IStatementListContainerInitialiser init) { + var objOne = this.initElement(init, new Statement[] { this.createMinimalNullReturn() }); + var objTwo = this.initElement(init, new Statement[] { this.createMinimalTrivialAssert() }); + + this.testSimilarity(objOne, objTwo, + this.getExpectedSimilarityResult(StatementsPackage.Literals.BLOCK__STATEMENTS).booleanValue() + || (!init.canContainStatements(objOne) && !init.canContainStatements(objTwo))); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testStatementsSize(IStatementListContainerInitialiser init) { + var objOne = this.initElement(init, + new Statement[] { this.createMinimalTrivialAssert(), this.createMinimalNullReturn() }); + var objTwo = this.initElement(init, new Statement[] { this.createMinimalTrivialAssert() }); + + this.testSimilarity(objOne, objTwo, + this.getExpectedSimilarityResult(StatementsPackage.Literals.BLOCK__STATEMENTS).booleanValue() + || (!init.canContainStatements(objOne) && !init.canContainStatements(objTwo))); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testStatementsNullCheck(IStatementListContainerInitialiser init) { + var objOne = this.initElement(init, new Statement[] { this.createMinimalNullReturn() }); + + this.testSimilarityNullCheck(objOne, init, true, + this.getExpectedSimilarityResult(StatementsPackage.Literals.BLOCK__STATEMENTS).booleanValue() + || (!init.canContainStatements(objOne))); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StaticImportTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StaticImportTest.java new file mode 100644 index 0000000000..80022646a2 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/StaticImportTest.java @@ -0,0 +1,45 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.imports.ImportsPackage; +import org.emftext.language.java.imports.StaticImport; +import org.emftext.language.java.modifiers.Static; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesImports; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesModifiers; +import cipm.consistency.initialisers.jamopp.imports.IStaticImportInitialiser; + +public class StaticImportTest extends AbstractJaMoPPSimilarityTest implements UsesImports, UsesModifiers { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IStaticImportInitialiser.class); + } + + protected StaticImport initElement(IStaticImportInitialiser init, Static st) { + StaticImport result = init.instantiate(); + Assertions.assertTrue(init.setStatic(result, st)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testStatic(IStaticImportInitialiser init) { + var objOne = this.initElement(init, this.createStatic()); + var objTwo = this.initElement(init, null); + + this.testSimilarity(objOne, objTwo, ImportsPackage.Literals.STATIC_IMPORT__STATIC); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testStaticNullCheck(IStaticImportInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createStatic()), init, false, + ImportsPackage.Literals.STATIC_IMPORT__STATIC); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeArgumentableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeArgumentableTest.java new file mode 100644 index 0000000000..81534d07a4 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeArgumentableTest.java @@ -0,0 +1,58 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.generics.GenericsPackage; +import org.emftext.language.java.generics.TypeArgument; +import org.emftext.language.java.generics.TypeArgumentable; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeArguments; +import cipm.consistency.initialisers.jamopp.generics.ITypeArgumentableInitialiser; + +public class TypeArgumentableTest extends AbstractJaMoPPSimilarityTest implements UsesTypeArguments { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ITypeArgumentableInitialiser.class); + } + + protected TypeArgumentable initElement(ITypeArgumentableInitialiser init, TypeArgument[] typeArgs) { + TypeArgumentable result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addTypeArguments(result, typeArgs)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTypeArgument(ITypeArgumentableInitialiser init) { + var objOne = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") }); + var objTwo = this.initElement(init, new TypeArgument[] { this.createMinimalSuperTAWithCls("cls2") }); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_ARGUMENTABLE__TYPE_ARGUMENTS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTypeArgumentSize(ITypeArgumentableInitialiser init) { + var objOne = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1"), + this.createMinimalSuperTAWithCls("cls2") }); + var objTwo = this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") }); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_ARGUMENTABLE__TYPE_ARGUMENTS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testTypeArgumentNullCheck(ITypeArgumentableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, new TypeArgument[] { this.createMinimalExtendsTAWithCls("cls1") }), init, true, + GenericsPackage.Literals.TYPE_ARGUMENTABLE__TYPE_ARGUMENTS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeParametrizableTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeParametrizableTest.java new file mode 100644 index 0000000000..f9ce191efe --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeParametrizableTest.java @@ -0,0 +1,58 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.generics.GenericsPackage; +import org.emftext.language.java.generics.TypeParameter; +import org.emftext.language.java.generics.TypeParametrizable; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeParameters; +import cipm.consistency.initialisers.jamopp.generics.ITypeParametrizableInitialiser; + +public class TypeParametrizableTest extends AbstractJaMoPPSimilarityTest implements UsesTypeParameters { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ITypeParametrizableInitialiser.class); + } + + protected TypeParametrizable initElement(ITypeParametrizableInitialiser init, TypeParameter[] tParams) { + TypeParametrizable result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addTypeParameters(result, tParams)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTypeParameters(ITypeParametrizableInitialiser init) { + var objOne = this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls1") }); + var objTwo = this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls2") }); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_PARAMETRIZABLE__TYPE_PARAMETERS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTypeParametersSize(ITypeParametrizableInitialiser init) { + var objOne = this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls1"), + this.createMinimalTypeParamWithClsRef("cls2") }); + var objTwo = this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls1") }); + + this.testSimilarity(objOne, objTwo, GenericsPackage.Literals.TYPE_PARAMETRIZABLE__TYPE_PARAMETERS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testTypeParametersNullCheck(ITypeParametrizableInitialiser init) { + this.testSimilarityNullCheck( + this.initElement(init, new TypeParameter[] { this.createMinimalTypeParamWithClsRef("cls1") }), init, + true, GenericsPackage.Literals.TYPE_PARAMETRIZABLE__TYPE_PARAMETERS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeReferenceTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeReferenceTest.java new file mode 100644 index 0000000000..67dec062a7 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypeReferenceTest.java @@ -0,0 +1,39 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.TypeReference; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesConcreteClassifiers; +import cipm.consistency.initialisers.jamopp.types.ITypeReferenceInitialiser; + +public class TypeReferenceTest extends AbstractJaMoPPSimilarityTest implements UsesConcreteClassifiers { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(ITypeReferenceInitialiser.class); + } + + protected TypeReference initElement(ITypeReferenceInitialiser init, Classifier target) { + var res = init.instantiate(); + + Assertions.assertEquals(init.canSetTargetTo(res, target), init.setTarget(res, target)); + return res; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTargetNullCheck(ITypeReferenceInitialiser init) { + var objOne = this.initElement(init, this.createMinimalClass("cls")); + var objTwo = init.instantiate(); + + // No expected result, because TypeReference does not have the "target" + // attribute, yet some of its implementors do. + Assertions.assertDoesNotThrow(() -> this.isSimilar(objOne, objTwo)); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementExtensionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementExtensionTest.java new file mode 100644 index 0000000000..2cf6e2c85f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementExtensionTest.java @@ -0,0 +1,57 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.types.TypeReference; +import org.emftext.language.java.types.TypedElementExtension; +import org.emftext.language.java.types.TypesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.types.ITypedElementExtensionInitialiser; + +public class TypedElementExtensionTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ITypedElementExtensionInitialiser.class); + } + + protected TypedElementExtension initElement(ITypedElementExtensionInitialiser init, TypeReference[] actualTargets) { + TypedElementExtension result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.addActualTargets(result, actualTargets)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testActualTarget(ITypedElementExtensionInitialiser init) { + var objOne = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") }); + var objTwo = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls2") }); + + this.testSimilarity(objOne, objTwo, TypesPackage.Literals.TYPED_ELEMENT_EXTENSION__ACTUAL_TARGETS); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testActualTargets(ITypedElementExtensionInitialiser init) { + var objOne = this.initElement(init, + new TypeReference[] { this.createMinimalClsRef("cls1"), this.createMinimalClsRef("cls2") }); + var objTwo = this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") }); + + this.testSimilarity(objOne, objTwo, TypesPackage.Literals.TYPED_ELEMENT_EXTENSION__ACTUAL_TARGETS); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testActualTargetNullCheck(ITypedElementExtensionInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, new TypeReference[] { this.createMinimalClsRef("cls1") }), + init, true, TypesPackage.Literals.TYPED_ELEMENT_EXTENSION__ACTUAL_TARGETS); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementTest.java new file mode 100644 index 0000000000..e0308f3d46 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/TypedElementTest.java @@ -0,0 +1,47 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.types.TypeReference; +import org.emftext.language.java.types.TypedElement; +import org.emftext.language.java.types.TypesPackage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesTypeReferences; +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public class TypedElementTest extends AbstractJaMoPPSimilarityTest implements UsesTypeReferences { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getEachInitialiserArgumentsOnceFor(ITypedElementInitialiser.class); + } + + protected TypedElement initElement(ITypedElementInitialiser init, TypeReference tRef) { + TypedElement result = init.instantiate(); + Assertions.assertTrue(init.initialise(result)); + Assertions.assertTrue(init.setTypeReference(result, tRef)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testTypeReference(ITypedElementInitialiser init) { + var objOne = this.initElement(init, this.createMinimalClsRef("cls1")); + var objTwo = this.initElement(init, this.createMinimalClsRef("cls2")); + + this.testSimilarity(objOne, objTwo, TypesPackage.Literals.TYPED_ELEMENT__TYPE_REFERENCE); + } + + @Disabled("Disabled till null pointer exceptions are fixed") + @ParameterizedTest + @MethodSource("provideArguments") + public void testTypeReferenceNullCheck(ITypedElementInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createMinimalClsRef("cls1")), init, true, + TypesPackage.Literals.TYPED_ELEMENT__TYPE_REFERENCE); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/UnaryModificationExpressionTest.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/UnaryModificationExpressionTest.java new file mode 100644 index 0000000000..3be70dbd0b --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/UnaryModificationExpressionTest.java @@ -0,0 +1,61 @@ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; + +import java.util.stream.Stream; + +import org.emftext.language.java.expressions.ExpressionsPackage; +import org.emftext.language.java.expressions.UnaryModificationExpression; +import org.emftext.language.java.expressions.UnaryModificationExpressionChild; +import org.emftext.language.java.operators.UnaryModificationOperator; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.fitests.similarity.jamopp.unittests.UsesExpressions; +import cipm.consistency.initialisers.jamopp.expressions.IUnaryModificationExpressionInitialiser; + +public class UnaryModificationExpressionTest extends AbstractJaMoPPSimilarityTest implements UsesExpressions { + + private static Stream provideArguments() { + return AbstractJaMoPPSimilarityTest.getAllInitialiserArgumentsFor(IUnaryModificationExpressionInitialiser.class); + } + + protected UnaryModificationExpression initElement(IUnaryModificationExpressionInitialiser init, + UnaryModificationExpressionChild child, UnaryModificationOperator op) { + UnaryModificationExpression result = init.instantiate(); + Assertions.assertTrue(init.setChild(result, child)); + Assertions.assertTrue(init.setOperator(result, op)); + return result; + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testChild(IUnaryModificationExpressionInitialiser init) { + this.testSimilarity(this.initElement(init, this.createDecimalIntegerLiteral(1), null), + this.initElement(init, this.createDecimalIntegerLiteral(2), null), + ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__CHILD); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testChildNullCheck(IUnaryModificationExpressionInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, this.createDecimalIntegerLiteral(1), null), init, false, + ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__CHILD); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testOperator(IUnaryModificationExpressionInitialiser init) { + this.testSimilarity(this.initElement(init, null, this.createPlusPlusOperator()), + this.initElement(init, null, this.createMinusMinusOperator()), + ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__OPERATOR); + } + + @ParameterizedTest + @MethodSource("provideArguments") + public void testOperatorNullCheck(IUnaryModificationExpressionInitialiser init) { + this.testSimilarityNullCheck(this.initElement(init, null, this.createPlusPlusOperator()), init, false, + ExpressionsPackage.Literals.UNARY_MODIFICATION_EXPRESSION__OPERATOR); + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/package-info.java new file mode 100644 index 0000000000..2b80519070 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/interfacetests/package-info.java @@ -0,0 +1,34 @@ +/** + * Contains unit tests for {@link EObject} types, which are extended by other + * EObject types within the {@link Commentable} type hierarchy. In the said + * tests, {@link EObject} instances are constructed programmatically and are + * checked for similarity.
+ *
+ * Since such types within the {@link Commentable} type hierarchy can have + * multiple sub-types, all tests should be parameterised over initialisers. + * Those initialisers may have to be adapted, if there are sub-types, which + * require additional setup steps to be "valid". Parameterising such tests help + * spare test code, as sub-types all need their mutual attributes to be tested. + *
+ *
+ * The tests within this package are meant to be minimal and only to test + * similarity checking with respect to individual attributes of {@link EObject} + * instances, in an isolated fashion. This means, each test performs similarity + * checking on 2 {@link EObject} instances, whose attributes are equal except + * for one of them. This way, one can pinpoint basic similarity checking errors + * regarding certain attributes of certain {@link EObject} implementors.
+ *
+ * It is highly recommended to make the construction of the "main" + * {@link EObject} instances as obvious and visible as possible, as their + * construction can get complicated and not knowing all the construction steps + * can lead to tests not fulfilling their goal. Furthermore, it is also + * important to adapt the initialisers, rather than using instanceof/if-blocks + * to define type-specific behaviour. Should certain sub-types diverge from + * their super type so much that they are incompatible with parameterised tests, + * it is suggested to instead define special unit tests for the said + * sub-types.
+ *
+ * See {@link cipm.consistency.fitests.similarity.jamopp.unittests} to find out + * more about what test methods do. + */ +package cipm.consistency.fitests.similarity.jamopp.unittests.interfacetests; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/package-info.java new file mode 100644 index 0000000000..8752dcd7c2 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/unittests/package-info.java @@ -0,0 +1,41 @@ +/** + * Contains interfaces that can be implemented by tests, where initialisers are + * used to instantiate {@link EObject} implementors present in JaMoPP. Each + * initialiser in this package offers default methods that help encapsulate the + * creation of such EObject instances, which are needed in tests.
+ *
+ * It is recommended to only use the interfaces in this package to instantiate + * EObject instances that are needed to setup the "main" EObject instances under + * test (i.e. instances used in similarity checking methods). The creation of + * the "main" EObject instances should be done within the corresponding test + * class explicitly via initialisers, in order to avoid implicit steps as much + * as possible.
+ *
+ * While adding further interfaces to this package, it is suggested to check the + * existing interfaces and to extend them, if possible. Doing so will help keep + * consistency across test cases.
+ *
+ * The sub-packages of this package contain unit tests for EObject + * classes/interfaces using initialisers. For each attribute X of EObject + * implementor/interface EO, there are currently up to 3 test categories. Let + * eo1 and eo2 be instances of type EO, then test categories do the following: + *
    + *
  • testX: Performs similarity checking on eo1 and eo2, whose + * attributes are all equal except for X, and checks the result. + *
  • testXSize: Same as testX, where X's value is an array and the + * corresponding arrays in eo1 and eo2 contain different amounts of elements: X + * of one eo contains 2 elements elem1 and elem2 (elem1 and elem2 are NOT + * similar), whereas the X of other eo only contains elem1. These test methods + * make sure that array-valued attributes are compared accordingly. + *
  • testXNullCheck: Same as testX, where eo1's X attribute is set and + * eo2's X attribute is not. These test methods ensure that no exceptions are + * thrown while performing similarity checking on EObject instances that are not + * initialised properly. + *
+ * Note that multiple similarity checks are performed in each test, in order + * to ensure that similarity checking is symmetric and that similarity checking + * yields the same result, if the EObject instances are cloned. Refer to the + * documentation of the similarity checking methods concrete test methods use + * for more information. + */ +package cipm.consistency.fitests.similarity.jamopp.unittests; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/UtilityTests.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/UtilityTests.java new file mode 100644 index 0000000000..a00994bc76 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/UtilityTests.java @@ -0,0 +1,129 @@ +package cipm.consistency.fitests.similarity.jamopp.utiltests; + +import java.io.File; +import java.nio.file.Paths; +import java.util.Collection; +import java.util.List; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.fitests.similarity.jamopp.AbstractJaMoPPSimilarityTest; +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.jamopp.IJaMoPPUtilityTest; + +/** + * A test class, whose tests can be used to make sure no initialiser interfaces, + * concrete initialisers or initialiser tests are missing. + * + * @author Alp Torac Genc + */ +public class UtilityTests extends AbstractJaMoPPSimilarityTest implements IJaMoPPUtilityTest { + /** + * Points at the parent package. Used by discovering methods in this class. + */ + private static final File root = new File(Paths + .get(new File("").toPath().toString(), "src", UtilityTests.class.getPackageName() + .substring(0, UtilityTests.class.getPackageName().lastIndexOf(".")).replace(".", File.separator)) + .toAbsolutePath().toUri()); + + /** + * The suffix used in tests. + */ + private static final String testSuffix = "Test"; + + /** + * @return The name of the test corresponding to cls. + */ + public String getTestName(Class cls) { + return cls.getSimpleName() + testSuffix; + } + + /** + * @return A list of all files under {@link #root}. + */ + public Collection getAllFiles() { + return this.getAllFiles(root); + } + + /** + * Checks if all necessary concrete initialisers can be accessed under the used + * initialiser package, which is used in initialiser tests.
+ *
+ * Prints the amount of accessible/registered initialiser types. The missing + * types can be found in the assertion message. + */ + @Test + public void testAllConcreteInitialisersRegistered() { + var clss = this.getAllConcreteInitialiserCandidates(); + var registeredInits = this.getUsedInitialiserPackage().getAllInitialiserInstances(); + + var matches = List.of( + clss.stream().filter((cls) -> registeredInits.stream().anyMatch((init) -> init.isInitialiserFor(cls))) + .toArray(Class[]::new)); + + this.getLogger().info(matches.size() + " out of " + clss.size() + " concrete initialisers are registered"); + + if (matches.size() != clss.size()) { + Assertions.fail("Concrete initialisers not registered: " + + this.clsStreamToString(clss.stream().filter((cls) -> !matches.contains(cls)))); + } + } + + /** + * Checks if all necessary initialiser interface types can be accessed under the + * used initialiser package, which is used in initialiser tests.
+ *
+ * Prints the amount of accessible/registered initialiser interface types. The + * missing types can be found in the assertion message. + */ + @Test + public void testAllInitialiserInterfacesRegistered() { + var clss = this.getAllInitialiserCandidates(); + var registeredInits = this.getUsedInitialiserPackage().getAllInitialiserInterfaceTypes(); + + var matches = List.of(clss.stream() + .filter((cls) -> registeredInits.stream() + .anyMatch((init) -> this.getInitialiserInterfaceName(cls).equals(init.getSimpleName()))) + .toArray(Class[]::new)); + + this.getLogger().info(matches.size() + " out of " + clss.size() + " initialiser interfaces are registered"); + + if (matches.size() != clss.size()) { + Assertions.fail("Initialiser interfaces not registered: " + + this.clsStreamToString(clss.stream().filter((cls) -> !matches.contains(cls)))); + } + } + + /** + * Checks if all classes in the need of an initialiser, which have their own + * methods that modify them (the methods they do not get from inheritance), have + * their corresponding test file.
+ *
+ * In short, checks if all necessary initialiser test files are present.
+ *
+ * Prints the number of required test files that are actually present. + * Information on the missing test files can be found in the assertion message. + *
+ *
+ * Only checks whether there are corresponding test files. Does not check + * the unit tests they implement. + */ + @Test + public void testAllInterfaceTestsPresent() { + var intfcs = this.getAllInitialiserCandidates(); + var allFiles = this.getAllFiles(); + + var matches = List.of(intfcs.stream() + .filter((c) -> !IInitialiser.declaresModificationMethods(this.getInitialiserInterfaceFor(c)) + || allFiles.stream().anyMatch((tf) -> fileNameEquals(tf, getTestName(c)))) + .toArray(Class[]::new)); + + this.getLogger().info(matches.size() + " out of " + intfcs.size() + " interfaces are covered by tests"); + + if (matches.size() != intfcs.size()) { + Assertions.fail("Tests missing for: " + + this.clsStreamToString(intfcs.stream().filter((e) -> !matches.contains(e)))); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/package-info.java new file mode 100644 index 0000000000..7f61f646ce --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/jamopp/utiltests/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains "meta-tests" that check whether other tests are setup properly, + * rather than testing similarity checking. + */ +package cipm.consistency.fitests.similarity.jamopp.utiltests; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/package-info.java new file mode 100644 index 0000000000..f01efa969d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/package-info.java @@ -0,0 +1,11 @@ +/** + * This package contains classes and interfaces that can be used to test + * similarity checking, regardless of which objects are compared during + * similarity checking.
+ *
+ * Sub-packages contain tests and utility classes that test similarity checking. + * They are named and structured to minimise dependencies concerning the context + * of similarity checking (such as {@link EObject} or JaMoPP). This way, + * re-using the contents of sub-packages is easier. + */ +package cipm.consistency.fitests.similarity; \ No newline at end of file diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/AbstractSimilarityValues.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/AbstractSimilarityValues.java new file mode 100644 index 0000000000..a1ce7a9069 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/AbstractSimilarityValues.java @@ -0,0 +1,233 @@ +package cipm.consistency.fitests.similarity.params; + +import java.util.HashMap; +import java.util.Map; + +/** + * An abstract class for classes to implement, which uses a {@link Map} to store + * mappings of (class object, attribute object) pairs to their expected + * similarity checking results. An attribute object denotes an attribute within + * a class (i.e. it serves as the identifier of the attribute), rather than the + * value of an attribute. + * + * @see {@link #addSimilarityEntry(Class, Object, Boolean)} for more information + * on adding entries. + * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information + * on expected similarity checking results. + * + * @author Alp Torac Genc + */ +public abstract class AbstractSimilarityValues implements ISimilarityValues { + /** + * The expected similarity checking result for cases, where there is no matching + * {@link SimilarityEntry} in this instance. + * + * @see {@link #getExpectedSimilarityResult(Class, Object)} + */ + private Boolean defaultSimResult = null; + /** + * Maps {@link SimilarityEntry} to their expected similarity checking result. + * + * @see {@link #getExpectedSimilarityResult(Class, Object)} + */ + private Map similarityValues; + + /** + * Constructs an instance and initialises the internal data structure that + * stores expected similarity checking results. + * + * @see {@link #addSimilarityEntry(Class, Object, Boolean)} for more information + * on adding entries. + * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information + * on expected similarity checking results. + */ + public AbstractSimilarityValues() { + this.similarityValues = this.initSimilarityValues(); + } + + /** + * @return Creates a {@link SimilarityEntry} with the given parameters. + */ + protected SimilarityEntry createEntry(Class objCls, Object attr) { + return new SimilarityEntry(objCls, attr); + } + + /** + * First, tries to find a direct match for the given parameters (see + * {@link #findDirectEntry(Class, Object)}). If there is no direct match, it + * relaxes objCls to super types of objCls and tries to find a match again (see + * {@link #findParentEntry(Class, Object)}). + * + * @param objCls The interface of the Object instance + * @param An attribute of the Object instance, which is the subject of the + * current similarity check + * @return The corresponding {@link SimilarityEntry} + */ + protected SimilarityEntry findEntry(Class objCls, Object attr) { + var directMatch = this.findDirectEntry(objCls, attr); + + return directMatch != null ? directMatch : this.findParentEntry(objCls, attr); + } + + /** + * Tries to find a directly matching entry (i.e. an entry with objCls-attr + * pair). Ignores entries belonging to super-types of objCls. + * + * @param objCls The interface of the Object instance + * @param attr An attribute of the Object instance, which is the subject of + * the current similarity check + * @return The corresponding {@link SimilarityEntry} + */ + protected SimilarityEntry findDirectEntry(Class objCls, Object attr) { + return this.similarityValues.keySet().stream() + .filter((se) -> se.getObjectClass().equals(objCls) && se.getAttribute().equals(attr)).findFirst() + .orElse(null); + } + + /** + * Tries to find an entry with a super-type of objCls using a depth-first + * recursion in the type hierarchy of objCls towards Object. If there is a + * direct entry (see {@link #findDirectEntry(Class, Object)}), returns it.
+ *
+ * + * @param objCls The interface of the Object instance + * @param attr An attribute of the Object instance, which is the subject of + * the current similarity check + * @return A corresponding {@link SimilarityEntry} + */ + protected SimilarityEntry findParentEntry(Class objCls, Object attr) { + var parents = objCls.getInterfaces(); + SimilarityEntry result = null; + + for (var p : parents) { + result = this.findDirectEntry(p, attr); + if (result != null) + return result; + + result = this.findParentEntry(p, attr); + if (result != null) + return result; + } + + return result; + } + + /** + * @return The map that will be used by this instance to store mappings of + * (object class, attribute object) pairs to their expected similarity + * value. + */ + protected Map initSimilarityValues() { + return new HashMap(); + } + + /** + * Adds the given {@link SimilarityEntry} along with its expected similarity + * result to this instance. + */ + protected void addEntry(SimilarityEntry se, Boolean expectedSimResult) { + this.similarityValues.put(se, expectedSimResult); + } + + @Override + public void addSimilarityEntry(Class objCls, Object attr, Boolean expectedSimResult) { + this.addEntry(this.createEntry(objCls, attr), expectedSimResult); + } + + @Override + public void removeSimilarityEntry(Class objCls, Object attr) { + var se = this.findEntry(objCls, attr); + + if (se != null) + this.similarityValues.remove(se); + } + + @Override + public Boolean getExpectedSimilarityResult(Class objCls, Object attr) { + var se = this.findEntry(objCls, attr); + + return se == null ? this.getDefaultSimilarityResult() : this.similarityValues.get(se); + } + + @Override + public void clear() { + this.similarityValues.clear(); + } + + @Override + public void setDefaultSimilarityResult(Boolean defSimRes) { + this.defaultSimResult = defSimRes; + } + + @Override + public Boolean getDefaultSimilarityResult() { + return this.defaultSimResult; + } + + /** + * Contains a class object and an attribute object of that class. An attribute + * object denotes an attribute within a class (i.e. it serves as the identifier + * of the attribute), rather than the value of an attribute. + * + * @author Alp Torac Genc + */ + protected class SimilarityEntry { + /** + * The class object. + */ + private final Class objCls; + /** + * An attribute object of {@link #objCls}. + */ + private final Object attr; + + /** + * @param objCls A class object + * @param attr An attribute object of {@link #objCls} + */ + private SimilarityEntry(Class objCls, Object attr) { + this.objCls = objCls; + this.attr = attr; + } + + /** + * @return The class object stored in this instance. + */ + public Class getObjectClass() { + return this.objCls; + } + + /** + * @return The attribute stored in this entry. + */ + public Object getAttribute() { + return this.attr; + } + + /** + * Compares two {@link SimilarityEntry} instances based on what they store. + */ + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + + if (obj == null || !(obj instanceof SimilarityEntry)) + return false; + + var castedO = (SimilarityEntry) obj; + + if (this.attr == null ^ castedO.attr == null) + return false; + + if (this.objCls == null ^ castedO.objCls == null) + return false; + + // Covers both members being null + if (this.attr == castedO.attr && this.objCls == castedO.objCls) + return true; + + return this.attr.equals(castedO.attr) && this.objCls.equals(castedO.objCls); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameterAdaptationStrategy.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameterAdaptationStrategy.java new file mode 100644 index 0000000000..edd3fbc23d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameterAdaptationStrategy.java @@ -0,0 +1,51 @@ +package cipm.consistency.fitests.similarity.params; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserBase; + +/** + * An interface for classes that encapsulate the logic to adapt + * {@link IInitialiserBase} parameters for tests, so that the object instances + * they create conform certain requirements.
+ *
+ * Contains the means to adapt collections of {@link IInitialiser} instances and + * making necessary adaptations for convenience. + * + * @see {@link IInitialiserAdapterStrategy} + */ +public interface IInitialiserParameterAdaptationStrategy { + /** + * Adapts the given {@link IInitialiser} instances, if they can be adapted. + * + * @see {@link IInitialiserAdapterStrategy} + */ + public default void adaptInitialisers(Collection inits) { + inits.forEach((i) -> this.adaptInitialiser(i)); + } + + /** + * Adapts the given {@link IInitialiserBase} instances. + * + * @see {@link IInitialiserAdapterStrategy} + */ + public default void adaptAdaptableInitialisers(Collection inits) { + inits.forEach((i) -> this.adaptAdaptableInitialiser(i)); + } + + /** + * A variant of {@link #adaptAdaptableInitialiser(IInitialiserBase)} that adapts + * the given {@link IInitialiser} init, if init implements + * {@link IInitialiserBase}. + */ + public default void adaptInitialiser(IInitialiser init) { + if (init instanceof IInitialiserBase) + this.adaptAdaptableInitialiser((IInitialiserBase) init); + } + + /** + * Adapts the given {@link IInitialiserBase} instance. + */ + public void adaptAdaptableInitialiser(IInitialiserBase init); +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameters.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameters.java new file mode 100644 index 0000000000..7dbc0db60f --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/IInitialiserParameters.java @@ -0,0 +1,179 @@ +package cipm.consistency.fitests.similarity.params; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.function.Predicate; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserBase; +import cipm.consistency.initialisers.IInitialiserPackage; + +/** + * An interface meant for classes that generate {@link IInitialiser} instances + * for tests.
+ *
+ * Implementors of this interface can be used to supply parameterised tests with + * {@link IInitialiser} instances. + */ +public interface IInitialiserParameters { + /** + * @return The {@link IInitialiserPackage} that will be used to generate + * initialiser parameters for tests. + */ + public IInitialiserPackage getUsedInitialiserPackage(); + + /** + * @return An instance of all {@link IInitialiser}s this encompasses. The + * returned {@link IInitialiser}s are not adapted. + */ + public default Collection getAllNonAdaptedInitialisers() { + return this.getUsedInitialiserPackage().getAllInitialiserInstances(); + } + + /** + * @return An adapted instance of all adaptable initialisers this encompasses. + * Adaptation logic returned by {@link #getAdaptationStrategy()} is used + * to adapt the generated initialiser instances. Only returns + * initialisers that are adapted. + */ + public default Collection getAllAdaptedInitialisers() { + var result = new ArrayList(); + var inits = this.getEachInitialiserOnce(); + + inits.forEach((init) -> { + if (init instanceof IInitialiserBase && ((IInitialiserBase) init).isAdapted()) + result.add((IInitialiserBase) init); + }); + + return result; + } + + /** + * Shortcut for {@link #getAllNonAdaptedInitialisers()} and + * {@link #getAllAdaptedInitialisers()}.
+ *
+ * Note: If a certain initialiser type is adaptable, returns one non-adapted + * and one adapted instance. + * + * @see {@link #getEachInitialiserOnce()} + */ + public default Collection getAllInitialisers() { + var result = new ArrayList(); + result.addAll(this.getAllNonAdaptedInitialisers()); + result.addAll(this.getAllAdaptedInitialisers()); + return result; + } + + /** + * @return The {@link IInitialiserParameterAdaptationStrategy} responsible for + * adapting the generated initialisers for + * {@link #getAdaptedInitialisersBySuper(Class)}. + */ + public IInitialiserParameterAdaptationStrategy getAdaptationStrategy(); + + /** + * @return All {@link IInitialiser} instances generated by + * {@link #getAllNonAdaptedInitialisers()} that fulfil the given + * predicate. + */ + public default Collection getNonAdaptedInitialisersBy(Predicate pred) { + var result = new ArrayList(); + this.getAllNonAdaptedInitialisers().stream().filter(pred).forEach((i) -> result.add(i)); + return result; + } + + /** + * @return All {@link IInitialiser} instances generated by + * {@link #getAllAdaptedInitialisers()} that fulfil the given predicate. + */ + public default Collection getAdaptedInitialisersBy(Predicate pred) { + var result = new ArrayList(); + this.getAllAdaptedInitialisers().stream().filter(pred).forEach((i) -> result.add(i)); + return result; + } + + /** + * @return All {@link IInitialiser} instances generated by + * {@link #getAllInitialisers()} that fulfil the given predicate. + */ + public default Collection getAllInitialisersBy(Predicate pred) { + var result = new ArrayList(); + this.getAllInitialisers().stream().filter(pred).forEach((i) -> result.add(i)); + return result; + } + + /** + * @return All {@link IInitialiser} instances generated by + * {@link #getAllNonAdaptedInitialisers()} that extend the given class + * T. + */ + @SuppressWarnings("unchecked") + public default Collection getNonAdaptedInitialisersBySuper(Class cls) { + return (Collection) this.getNonAdaptedInitialisersBy((i) -> cls.isInstance(i)); + } + + /** + * @return Adapted versions of all {@link IInitialiser} instances generated by + * {@link #getAllAdaptedInitialisers()} that extend the given class T. + */ + @SuppressWarnings("unchecked") + public default Collection getAdaptedInitialisersBySuper(Class cls) { + return (Collection) this.getAdaptedInitialisersBy((i) -> cls.isInstance(i)); + } + + /** + * @return All {@link IInitialiser} instances generated by + * {@link #getAllInitialisers()} that extend the given class. + * + * @see {@link #getEachInitialiserOnceBySuper(Class)} + */ + @SuppressWarnings("unchecked") + public default Collection getAllInitialisersBySuper(Class cls) { + return (Collection) this.getAllInitialisersBy((i) -> cls.isInstance(i)); + } + + /** + * @return An instance of each {@link IInitialiser} from + * {@link #getAllNonAdaptedInitialisers()}. Use this method, if only one + * instance init of each initialiser is desired. If + * {@link #getAdaptationStrategy()} can adapt init, it will do so. + * + * @see {@link #getAllInitialisers()} + */ + public default Collection getEachInitialiserOnce() { + var result = this.getAllNonAdaptedInitialisers(); + this.adaptInitialisers(result); + return result; + } + + /** + * @return An instance of each {@link IInitialiser} from + * {@link #getEachInitialiserOnce()}. Use this method, if only one + * instance init of each initialiser is desired. If + * {@link #getAdaptationStrategy()} can adapt init, it will do so. + * + * @see {@link #getAllInitialisersBySuper(Class)} + */ + @SuppressWarnings("unchecked") + public default Collection getEachInitialiserOnceBySuper(Class cls) { + var result = new ArrayList(); + this.getEachInitialiserOnce().stream().filter((init) -> cls.isInstance(init)) + .forEach((init) -> result.add((T) init)); + + return result; + } + + /** + * Applies the adaptation logic encapsulated by + * {@link IInitialiserParameterAdaptationStrategy} returned by + * {@link #getAdaptationStrategy()}. Non-adaptable initialisers will be + * unaffected. + */ + public default void adaptInitialisers(Collection inits) { + var strat = this.getAdaptationStrategy(); + + if (strat != null) { + strat.adaptInitialisers(inits); + } + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/ISimilarityValues.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/ISimilarityValues.java new file mode 100644 index 0000000000..227a8b1f37 --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/ISimilarityValues.java @@ -0,0 +1,169 @@ +package cipm.consistency.fitests.similarity.params; + +/** + * An interface for classes that contain expected similarity checking results + * for (class object, attribute object) pairs. An attribute object denotes an + * attribute within a class, rather than the value of an attribute.
+ *
+ * Variations of {@link #addSimilarityEntry(Class, Object, Boolean)} can be used + * to group entries better, while adding them. + * + * @see {@link #addSimilarityEntry(Class, Object, Boolean)} for more information + * on adding entries. + * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information + * on expected similarity checking values. + * + * @author Alp Torac Genc + */ +public interface ISimilarityValues { + /** + * A variant of {@link #addSimilarityEntry(Class, Object, Boolean)}, where + * objCls is extracted from attr. + * + * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information + * on expected similarity checking result. + * + * @see {@link #addSimilarityEntry(Class, Object, Boolean)} + */ + public void addSimilarityEntry(Object attr, Boolean expectedSimResult); + + /** + * Adds the (objCls, attr) pair, along with their expected similarity checking + * value to this instance. + * + * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information + * on expected similarity checking result and which entry is chosen, if + * entries for super/sub-types of objCls exist. + * + * @see {@link #addSimilarityEntry(Class[], Object, Boolean)} + * @see {@link #addSimilarityEntry(Class[], Object[], Boolean[])} + */ + public void addSimilarityEntry(Class objCls, Object attr, Boolean expectedSimResult); + + /** + * A variant of {@link #addSimilarityEntry(Class, Object, Boolean)} for an array + * of class objects.
+ *
+ * Let + * {@code objClsArr = [cls1, cls2, ..., clsN], attr = a1, expectedSimResults = true}. + * Then this method is equivalent to: + *
    + *
  • addSimilarityEntry(cls1, a1, true) + *
  • addSimilarityEntry(cls2, a1, true) + *
  • ... + *
  • addSimilarityEntry(clsN, a1, true) + *
+ * + * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information + * on expected similarity checking result. + * + * @see {@link #addSimilarityEntry(Class, Object, Boolean)} + * @see {@link #addSimilarityEntry(Class[], Object[], Boolean[])} + */ + public default void addSimilarityEntry(Class[] objClsArr, Object attr, Boolean expectedSimResult) { + if (objClsArr != null) { + for (var cls : objClsArr) { + this.addSimilarityEntry(cls, attr, expectedSimResult); + } + } + } + + /** + * A variant of {@link #addSimilarityEntry(Class, Object, Boolean)}.
+ *
+ * Combines objClsArr with (attrArr[i], expectedSimResults[i]) for all i:
+ *
+ * Let + * {@code objClsArr = [cls1, cls2, cls3], attrArr = [a1, a2], expectedSimResults = [true, false]}. + * Then this method is equivalent to: + *
    + *
  • addSimilarityEntry(objClsArr, a1, true) + *
  • addSimilarityEntry(objClsArr, a2, false) + *
+ * + * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information + * on expected similarity checking result. + * + * @see {@link #addSimilarityEntry(Class[], Object, Boolean)} + * @see {@link #addSimilarityEntry(Class, Object, Boolean)} + */ + public default void addSimilarityEntry(Class[] objClsArr, Object[] attrArr, Boolean[] expectedSimResults) { + if (attrArr == null || expectedSimResults == null || objClsArr == null) { + return; + } + + if (attrArr.length != expectedSimResults.length) { + return; + } + + for (int i = 0; i < attrArr.length; i++) { + var attr = attrArr[i]; + var simRes = expectedSimResults[i]; + this.addSimilarityEntry(objClsArr, attr, simRes); + } + } + + /** + * Removes the (objCls, attr) pair from this instance. + * + * @see {@link #getExpectedSimilarityResult(Class, Object)} for more information + * on expected similarity checking result. + * + * @see {@link #addSimilarityEntry(Class, Object, Boolean)} + */ + public void removeSimilarityEntry(Class objCls, Object attr); + + /** + * Clears all entries stored in this instance.
+ *
+ * Resets this instance. + */ + public void clear(); + + /** + * Returns the expected result of similarity checking 2 object instances of the + * class objCls, where both are the same, except for their attribute attr. + * + * @return Let a and b be object instances of the same class, which are the + * same, except for their attr attribute, then: + *
    + *
  • True: Similarity checking a and b yields true, despite them being + * different regarding attr. + *
  • False: Similarity checking a and b yields false, as they have + * different attr. + *
  • Null: The result of similarity checking a and b is not defined, + * i.e. differences in attr play no decisive role. + *
+ * Note: If this instance does not have the entry for (objCls, attr), it + * checks whether there is an entry for a parent class parObjCls (of + * objCls) and attr (parObjCls, attr). If there is one such entry, the + * expected result of similarity checking for (parObjCls, attr) is + * returned. If there are still no matching entries, + * {@link #getDefaultSimilarityResult()} is returned. + */ + public Boolean getExpectedSimilarityResult(Class objCls, Object attr); + + /** + * A variant of {@link #getExpectedSimilarityResult(Class, Object)} that + * extracts objCls from attr. + * + * @see {@link #getExpectedSimilarityResult(Class, Object)} + */ + public Boolean getExpectedSimilarityResult(Object attr); + + /** + * Sets the default return value for + * {@link #getExpectedSimilarityResult(Class, Object)}, in cases where no + * entries for a given (objCls, attr) pair is found. + * + * @param defSimRes The default return value for + * {@link #getExpectedSimilarityResult(Class, Object)} + */ + public void setDefaultSimilarityResult(Boolean defSimRes); + + /** + * @return The default return value for + * {@link #getExpectedSimilarityResult(Class, Object)} + */ + public Boolean getDefaultSimilarityResult(); +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/InitialiserTestSettingsProvider.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/InitialiserTestSettingsProvider.java new file mode 100644 index 0000000000..17b009a49d --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/InitialiserTestSettingsProvider.java @@ -0,0 +1,108 @@ +package cipm.consistency.fitests.similarity.params; + +import cipm.consistency.initialisers.IInitialiserPackage; + +/** + * A singleton class that provides central access to + * {@link IInitialiserParameters} and {@link ISimilarityValues} instance + * required by tests. + * + * @author Alp Torac Genc + */ +public class InitialiserTestSettingsProvider { + /** + * The only instance of this class. + */ + private static InitialiserTestSettingsProvider instance; + + /** + * An {@link IInitialiserParameters} instance, which has the means to supply + * parameterised tests with initialiser instances. + */ + private IInitialiserParameters params; + + /** + * An {@link ISimilarityValues} instance, which contains expected similarity + * values required by similarity checking tests. + */ + private ISimilarityValues simVals; + + private InitialiserTestSettingsProvider() { + }; + + /** + * Creates an instance of this class, if there is none. + */ + public static void initialise() { + if (instance == null) + instance = new InitialiserTestSettingsProvider(); + } + + /** + * @return The only instance of this class. If there is no such instance, + * creates an instance first. That will be the only instance of this + * class. + */ + public static InitialiserTestSettingsProvider getInstance() { + initialise(); + return instance; + } + + /** + * @return An {@link ISimilarityValues} instance, which contains expected + * similarity values required by similarity checking tests. + */ + public ISimilarityValues getSimilarityValues() { + return this.simVals; + } + + /** + * @param similarityValues Sets the {@link ISimilarityValues} instance, which + * contains expected similarity values required by + * similarity checking tests. + */ + public void setSimilarityValues(ISimilarityValues similarityValues) { + this.simVals = similarityValues; + } + + /** + * @return An {@link IInitialiserParameters} instance, which has the means to + * supply parameterised tests with initialiser instances. + */ + public IInitialiserParameters getParameters() { + return this.params; + } + + /** + * Sets the {@link IInitialiserParameters} instance, which has the means to + * supply parameterised tests with initialiser instances. + */ + public void setParameters(IInitialiserParameters prms) { + this.params = prms; + } + + /** + * Change the stored {@link IInitialiserParameters} instance to change the + * return value. + * + * @return The {@link IInitialiserPackage} used in the stored + * {@link IInitialiserParameters} + */ + public IInitialiserPackage getUsedInitialiserPackage() { + var params = this.getParameters(); + + if (params != null) { + return params.getUsedInitialiserPackage(); + } + + return null; + } + + /** + * Sets everything provided by this class, except its only instance, to null. + */ + public void reset() { + this.params = null; + this.simVals = null; + } +} diff --git a/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/package-info.java b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/package-info.java new file mode 100644 index 0000000000..8cac95229a --- /dev/null +++ b/commit-based-cipm/fi-tests/cipm.consistency.fitests/src/cipm/consistency/fitests/similarity/params/package-info.java @@ -0,0 +1,14 @@ +/** + * Contains various utility classes/interfaces that can be used in tests that + * use initialisers. This includes elements that provide access to and adapt + * initialiser instances + * ({@link cipm.consistency.fitests.similarity.params.IInitialiserParameters}) + * and elements that help bundle test results + * ({@link cipm.consistency.fitests.similarity.params.ISimilarityValues}). + *
+ *
+ * The singleton + * {@link cipm.consistency.fitests.similarity.params.InitialiserTestSettingsProvider} + * can be used to configure the elements mentioned above for all tests. + */ +package cipm.consistency.fitests.similarity.params; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/.classpath b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.classpath new file mode 100644 index 0000000000..e801ebfb46 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/.project b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.project new file mode 100644 index 0000000000..7bd4543292 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.project @@ -0,0 +1,28 @@ + + + cipm.consistency.initialisers + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/.settings/org.eclipse.jdt.core.prefs b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..c9545f06a4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.compliance=11 +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=11 diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/META-INF/MANIFEST.MF b/commit-based-cipm/initialisers/cipm.consistency.initialisers/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..3645675d6f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/META-INF/MANIFEST.MF @@ -0,0 +1,36 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: cipm.consistency.initialisers +Bundle-SymbolicName: cipm.consistency.initialisers +Bundle-Version: 1.0.0.qualifier +Automatic-Module-Name: cipm.consistency.initialisers +Bundle-RequiredExecutionEnvironment: JavaSE-11 +Require-Bundle: junit-jupiter-api, + junit-jupiter-engine, + junit-jupiter-params, + org.apache.log4j, + org.eclipse.emf.ecore, + org.emftext.language.java +Export-Package: cipm.consistency.initialisers, + cipm.consistency.initialisers.eobject, + cipm.consistency.initialisers.jamopp, + cipm.consistency.initialisers.jamopp.annotations, + cipm.consistency.initialisers.jamopp.arrays, + cipm.consistency.initialisers.jamopp.classifiers, + cipm.consistency.initialisers.jamopp.commons, + cipm.consistency.initialisers.jamopp.containers, + cipm.consistency.initialisers.jamopp.expressions, + cipm.consistency.initialisers.jamopp.generics, + cipm.consistency.initialisers.jamopp.imports, + cipm.consistency.initialisers.jamopp.initadapters, + cipm.consistency.initialisers.jamopp.instantiations, + cipm.consistency.initialisers.jamopp.literals, + cipm.consistency.initialisers.jamopp.members, + cipm.consistency.initialisers.jamopp.modifiers, + cipm.consistency.initialisers.jamopp.modules, + cipm.consistency.initialisers.jamopp.operators, + cipm.consistency.initialisers.jamopp.parameters, + cipm.consistency.initialisers.jamopp.references, + cipm.consistency.initialisers.jamopp.statements, + cipm.consistency.initialisers.jamopp.types, + cipm.consistency.initialisers.jamopp.variables diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/build.properties b/commit-based-cipm/initialisers/cipm.consistency.initialisers/build.properties new file mode 100644 index 0000000000..34d2e4d2da --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/AbstractInitialiserBase.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/AbstractInitialiserBase.java new file mode 100644 index 0000000000..c631057bc5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/AbstractInitialiserBase.java @@ -0,0 +1,69 @@ +package cipm.consistency.initialisers; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * An abstract class for {@link IInitialiserBase} implementors, which extends + * them with infrastructure and concrete methods for + * {@link IInitialiserAdapterStrategy}. + * + * @author Alp Torac Genc + */ +public abstract class AbstractInitialiserBase implements IInitialiserBase { + /** + * Stores the added {@link IInitialiserAdapterStrategy} instances. + */ + private Collection adaptingStrats; + + /** + * A variant of {@link #AbstractInitialiserBase(IInitialiserAdapterStrategy[])} + * that takes no {@link IInitialiserAdapterStrategy} instances. + */ + public AbstractInitialiserBase() { + this(null); + } + + /** + * Constructs an instance, which is adapted by the passed + * {@link IInitialiserAdapterStrategy} array. + */ + public AbstractInitialiserBase(IInitialiserAdapterStrategy[] adaptingStrats) { + this.adaptingStrats = this.createAdaptingStrategyCol(); + this.addAdaptingStrategies(adaptingStrats); + } + + /** + * @return A collection to store the added {@link IInitialiserAdapterStrategy} + * instances. Only creates and returns a collection instance, it still + * has to be assigned to relevant attributes and undergo additional + * setup steps (if any). + */ + protected Collection createAdaptingStrategyCol() { + return new ArrayList(); + } + + @Override + public void addAdaptingStrategy(IInitialiserAdapterStrategy strat) { + if (strat != null) + this.adaptingStrats.add(strat); + } + + @Override + public void removeAdaptingStrategy(IInitialiserAdapterStrategy strat) { + if (strat != null) + this.adaptingStrats.remove(strat); + } + + @Override + public void cleanAdaptingStrategy() { + this.adaptingStrats.clear(); + } + + @Override + public Collection getAdaptingStrategies() { + var res = this.createAdaptingStrategyCol(); + res.addAll(this.adaptingStrats); + return res; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiser.java new file mode 100644 index 0000000000..b038a1ea01 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiser.java @@ -0,0 +1,282 @@ +package cipm.consistency.initialisers; + +import java.util.function.BiFunction; + +/** + * An interface to be implemented by initialisers. Initialisers are interfaces + * or classes, which are meant to instantiate objects (designated objects) via + * {@link #instantiate()}. For intuition, their names can be used to denote what + * they instantiate.
+ *
+ * Initialisers can also implement (default) methods that modify their + * designated objects. It is suggested to have such modification methods return + * something that indicates whether they ran as expected. In general, + * modification methods DO NOT check, if the object that is being modified + * (modification target) is null. Attempting to use null as modification target + * will result in EXCEPTIONS. The reason behind this is the importance of + * knowing if the modification target is null, as this could hint towards faulty + * code.
+ *
+ * addSomething(...) methods have null checks for the passed parameters other + * than the modification target (i.e. modification parameters), which are used + * to perform modifications. By default, it is assumed that no null elements can + * be added to modification targets via addSomething(...). If modification + * parameters are null, no modification will be performed and the method will be + * assumed to have run as expected, since no modification was performed and + * failed. setSomething(...) methods, on the other hand, allow setting + * attributes of the modification target to null.
+ *
+ * It is recommended to separate instantiation and initialisation (modification) + * methods, as doing so will allow using the individual methods in sub-types. + * Implementing initialisers similar to their designated objects, in terms of + * type hierarchy and what modifications they allow from outside, may make + * initialisers more flexible and ease implementing them.
+ *
+ * A further suggestion is to not declare attributes in the concrete + * implementors, so that all functionality is present in form of methods. This + * alleviates having to declare unnecessary attributes in sub-types and makes + * overriding behaviour easier, since default methods can be overridden in + * interfaces. If initialisation of the designated objects is complex, consider + * realising it in form of initialiser adaptation strategies (see the links + * below). Note that calling {@link #initialise(Object)} in addition to + * {@link #instantiate()} is necessary for the said initialiser strategies to be + * used.
+ *
+ * This interface also contains some static utility methods. + * + * @author Alp Torac Genc + * @see {@link IInitialiserBase} + * @see {@link IInitialiserAdapterStrategy} + */ +public interface IInitialiser { + /** + * Can be used to create a copy of this.
+ *
+ * Note that the returned initialiser will not have the initialiser + * adaptation strategies this initialiser has. + * + * @return A fresh instance of this initialiser's class. + * + * @see {@link IInitialiserBase} + * @see {@link IInitialiserAdapterStrategy} + */ + public IInitialiser newInitialiser(); + + /** + * Attempts to instantiate the class this {@link IInitialiser} is designated + * for. Depending on the returned object, additional initialisation via + * {@link #initialise(Object)} may be necessary. Note that the said method must + * be called upon the return value, in order for the initialiser adaptation + * strategies to take effect. + * + * @see {@link IInitialiserBase} + * @see {@link IInitialiserAdapterStrategy} + */ + public Object instantiate(); + + /** + * Attempts to initialise obj, so that it is "valid".
+ *
+ * It is recommended to only use this method where necessary, as it may + * introduce additional modifications that are not obvious from outside. The + * said modifications originate from initialiser adaptation strategies and they + * will not take effect, unless this method is called upon the object created + * via {@link #instantiate()}. + * + * @param obj The object that will be made valid + * + * @return Whether the initialisation of obj was successful. + * + * @see {@link IInitialiserBase} + * @see {@link IInitialiserAdapterStrategy} + */ + public boolean initialise(Object obj); + + /** + * Checks whether a given {@link IInitialiser} type directly declares any + * methods that modify given object instances. Returns false, if + * {@code initCls == null}. + */ + public static boolean declaresModificationMethods(Class initCls) { + if (initCls == null) { + return false; + } + + var methods = initCls.getDeclaredMethods(); + + /* + * Instead of using a naming convention for modification methods, use the fact + * that modification methods take an object instance obj as a parameter, where + * initCls is capable of instantiating obj. + */ + for (var met : methods) { + + // A modification method must at least take obj as a parameter to modify it + if (met.getParameterCount() <= 0) + continue; + + // One of the parameters has to have the exact type of obj + // initCls should thus be able to instantiate the type obj + for (var p : met.getParameters()) { + var pType = p.getType(); + if (isInitialiserFor(initCls, pType)) { + return true; + } + } + } + + return false; + } + + /** + * A variant of {@link #declaresModificationMethods(Class)} for + * {@link IInitialiser} instances.
+ *
+ * Uses the type of the given parameter init. + */ + public static boolean declaresModificationMethods(IInitialiser init) { + return init != null && declaresModificationMethods(init.getClass()); + } + + /** + * An initialiser class is assumed to be able to instantiate the class objClass, + * if it has a method (instantiation method), whose return type is objClass and + * which has no parameters. Methods inherited by initCls will also be + * inspected.
+ *
+ * For the result to be true, initCls has to be able to instantiate + * exactly objClass, i.e. the return type of the instantiation + * method has to be exactly objClass.
+ *
+ * Methods that are generated internally by Java (synthetic methods and bridge + * methods) are excluded. + * + * @return True, if initCls is an initialiser type, which is meant to + * instantiate objects of class objClass (sub-types of objClass do not + * count). + */ + public static boolean isInitialiserFor(Class initCls, Class objClass) { + if (initCls == null || objClass == null) { + return false; + } + + /* + * Count inherited methods as well, in order to allow initialisers to be + * extended without having to explicitly declare/override their instantiation + * method. + */ + var methods = initCls.getMethods(); + + for (var m : methods) { + /* + * Instead of using name checks or annotations, use the fact that the + * instantiation method should have the return type objClass and that it should + * take no parameters. + * + * Also, make sure that the inspected methods are not generated internally by + * Java. + */ + if (!m.isBridge() && !m.isSynthetic() && m.getReturnType().equals(objClass) + && m.getParameters().length == 0) { + return true; + } + } + + return false; + } + + /** + * Returns whether the given initialiser init instantiates objects of type + * objClass.
+ *
+ * For the result to be true, init has to be able to instantiate + * exactly objClass, i.e. the return type of the instantiation + * method has to be exactly objClass. + */ + public static boolean isInitialiserFor(IInitialiser init, Class objClass) { + return init != null && init.getInstanceClassOfInitialiser().equals(objClass); + } + + /** + * Uses the return value of {@link #instantiate()} to determine the outcome. + * This method should not return null, as long as {@link #instantiate()} does + * not return null. + * + * @return The {@link Class} object of the type this initialiser instantiates, + * or null if {@link #instantiate()} returns null. + */ + public default Class getInstanceClassOfInitialiser() { + var obj = this.instantiate(); + return obj != null ? obj.getClass() : null; + } + + /** + * The dynamic variant of {@link #declaresModificationMethods(Class)}.
+ *
+ * Uses the class of this instance. + */ + public default boolean declaresModificationMethods() { + return declaresModificationMethods(this.getClass()); + } + + /** + * The dynamic variant of {@link #isInitialiserFor(IInitialiser, Class)}.
+ *
+ * Uses this initialiser as the initialiser parameter. + */ + public default boolean isInitialiserFor(Class objClass) { + return objClass != null && isInitialiserFor(this, objClass); + } + + /** + * A helper method for implementors, which provides them with a template for + * versions of their modification methods, which take arrays of parameters + * rather than singular ones, and perform multiple modifications. The purpose of + * this method is to help keep consistency across the said versions of the + * modification methods.
+ *
+ * If modificationFunction returns false for an element x of xs, the method + * will FAIL EARLY and return false. This means, modificationFunction WILL + * NOT be called for the remaining xs once it fails. Because of this, it is + * important to perform modifications one by one, if performing the said + * modifications is expected to fail for some x.
+ *
+ * This method is not intended to be used directly from outside. + * + * @param The type of the object being modified + * @param The parameter passed to the modification function + * (modificationFunction) + * @param obj The object being modified. {@code obj == null} + * will cause null pointer exceptions, if xs has at + * least one element. + * @param xs Array of parameters that will be passed to + * modificationFunction + * @param modificationFunction The modification function that will be run on + * obj, using xs as parameters (one + * modificationFunction call each x in xs) + * + * @return + *
    + *
  • True, if either: + *
      + *
    • xs is null (because no modifications were performed and nothing + * can fail) + *
    • All modification method calls returned true (i.e. all + * modifications were successfully performed) + *
    + *
  • Otherwise false, i.e. if {@code xs != null} and a modification + * method call returned false. + *
+ */ + public default boolean doMultipleModifications(T obj, X[] xs, + BiFunction modificationFunction) { + if (xs != null) { + for (var x : xs) { + if (!modificationFunction.apply(obj, x)) + return false; + } + } + + return true; + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserAdapterStrategy.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserAdapterStrategy.java new file mode 100644 index 0000000000..32df15d328 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserAdapterStrategy.java @@ -0,0 +1,30 @@ +package cipm.consistency.initialisers; + +/** + * An interface for classes and interfaces to implement, which encapsulate + * initialisation logic for complex objects instantiated by + * {@link IInitialiserBase} implementors.
+ *
+ * Although it is ultimately {@link IInitialiser}'s responsibility to + * instantiate and initialise objects, this interface allows extracting parts of + * it, especially the parts that revolve around other {@link IInitialiser}s. By + * extracting that logic from {@link IInitialiser} implementors, dependencies to + * other {@link IInitialiser}s can be spared. + * + * @author Alp Torac Genc + */ +public interface IInitialiserAdapterStrategy { + /** + * Applies the initialisation logic contained in this instance to the given + * object. Check the concrete class' documentation for more information, since + * the semantics of this method is tightly coupled with it. + * + * @return Whether this method did what it was supposed to do. + */ + public boolean apply(IInitialiser init, Object obj); + + /** + * @return Creates a deep clone of this instance. + */ + public IInitialiserAdapterStrategy newStrategy(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserBase.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserBase.java new file mode 100644 index 0000000000..b821e99d7c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserBase.java @@ -0,0 +1,103 @@ +package cipm.consistency.initialisers; + +import java.util.Collection; + +/** + * An interface meant to be implemented by {@link IInitialiser} implementors, + * which are supposed to be adaptable by {@link IInitialiserAdapterStrategy} + * instances. + * + * @author Alp Torac Genc + */ +public interface IInitialiserBase extends IInitialiser { + /** + * Adds the given {@link IInitialiserAdapterStrategy} to this instance. Does not + * add, if {@code strat == null}. + */ + public void addAdaptingStrategy(IInitialiserAdapterStrategy strat); + + /** + * Removes the given {@link IInitialiserAdapterStrategy} from this instance. + * Does nothing, if {@code strat == null}. + */ + public void removeAdaptingStrategy(IInitialiserAdapterStrategy strat); + + /** + * Removes all stored {@link IInitialiserAdapterStrategy} instances from this. + */ + public void cleanAdaptingStrategy(); + + /** + * @return All {@link IInitialiserAdapterStrategy} instances added to this. + * Returns an empty collection if there are none. Modifying the elements + * of the collection will modify the adaptation strategies adapting + * this. Modifying the returned collection itself will have no effect on + * this. + */ + public Collection getAdaptingStrategies(); + + /** + * The variant of {@link #addAdaptingStrategy(IInitialiserAdapterStrategy)} for + * arrays. Does nothing if {@code strats == null}. + */ + public default void addAdaptingStrategies(IInitialiserAdapterStrategy[] strats) { + if (strats != null) { + for (var i : strats) { + this.addAdaptingStrategy(i); + } + } + } + + /** + * @return Number of {@link IInitialiserAdapterStrategy} instances that are + * currently adapting this. + */ + public default int getAdaptingStrategyCount() { + return this.getAdaptingStrategies().size(); + } + + /** + * @return Whether any {@link IInitialiserAdapterStrategy} instances are + * currently adapting this. + */ + public default boolean isAdapted() { + return !this.getAdaptingStrategies().isEmpty(); + } + + /** + * For the sake of clarity, only use this method, if adaptation strategies + * are meant to be used.
+ *
+ * {@inheritDoc} + * + * @return Whether all initialiser adaptation strategies in this were applied + * successfully. If there are no such strategies; returns true, since no + * strategy was attempted to be applied and failed. + * + * @see {@link IInitialiserAdapterStrategy} + */ + @Override + public default boolean initialise(Object obj) { + boolean result = true; + + for (var strat : this.getAdaptingStrategies()) { + result = result && strat.apply(this, obj); + } + + return result; + } + + /** + * @return A new instance of this {@link IInitialiserBase} along with clones of + * adaptation strategies currently adapting it. + */ + public default IInitialiserBase newInitialiserWithStrategies() { + var newInit = (IInitialiserBase) this.newInitialiser(); + + // Create a new strategy for the new initialiser, so that neither the original + // strategy nor its copy are modified by the other one. + this.getAdaptingStrategies().forEach((s) -> newInit.addAdaptingStrategy(s.newStrategy())); + + return newInit; + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserPackage.java new file mode 100644 index 0000000000..84fcf6df64 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserPackage.java @@ -0,0 +1,176 @@ +package cipm.consistency.initialisers; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * An interface meant to be implemented by classes that provide access to groups + * of instances, classes and interfaces that implement {@link IInitialiser}. Can + * be used to discover which initialisers are present and to allow centralised + * access to initialisers.
+ *
+ * Override {@link #getInitialiserInstances()}, + * {@link #getInitialiserInterfaceTypes()} and {@link #getSubPackages()} to + * change what the implementors encompass. The default implementations of the + * methods only return an empty collection of their respective return type. + * + * @author Alp Torac Genc + */ +public interface IInitialiserPackage { + /** + * @return A freshly created instance of each {@link IInitialiser} sub-type, + * which this encompasses. + * + * @see {@link #getAllInitialiserInstances()} for all such initialisers that are + * accessible from sub-packages as well as this. + */ + public default Collection getInitialiserInstances() { + return this.initCol(); + } + + /** + * @return Class objects of {@link IInitialiser} types that are contained in + * this instance. Note that the returned types are not necessarily + * concrete, i.e. they can be interfaces and/or abstract classes. + * + * @see {@link #getAllInitialiserInterfaceTypes()} for all such initialiser + * types that are accessible from this. + */ + public default Collection> getInitialiserInterfaceTypes() { + return this.initCol(); + } + + /** + * @return All {@link IInitialiserPackage} instances nested in this, i.e. the + * sub-packages of this. + */ + public default Collection getSubPackages() { + return this.initCol(); + } + + /** + * Meant to be used only by {@link IInitialiserPackage} implementors. + * + * @return An empty collection that will be used to store objects of type T. + */ + public default Collection initCol() { + return new ArrayList(); + } + + /** + * Meant to be used only by {@link IInitialiserPackage} implementors.
+ *
+ * A variant of {@link #initCol()} that also adds the given elems to the created + * collection. + * + * @return A collection containing elems. + */ + public default Collection initCol(T[] elems) { + Collection res = this.initCol(); + + for (var e : elems) { + res.add(e); + } + + return res; + } + + /** + * Recursively discovers all nested {@link IInitialiserPackage} instances + * reachable from this instance. + * + * @return All {@link IInitialiserPackage} instances accessible from this. + * + * @see {@link #getSubPackages()} for initialiser packages that are contained in + * this directly. + */ + public default Collection getAllSubPackages() { + var result = this.getSubPackages(); + + for (var pac : this.getSubPackages()) { + result.addAll(pac.getSubPackages()); + } + + return result; + } + + /** + * Recursively discovers all nested {@link IInitialiserPackage} instances + * reachable from this instance. + * + * @return Freshly created {@link IInitialiser} instances for each initialiser + * accessible from this. + * + * @see {@link #getInitialiserInstances()} for initialiser instances that are + * contained in this directly. + */ + public default Collection getAllInitialiserInstances() { + var result = this.getInitialiserInstances(); + + for (var pac : this.getAllSubPackages()) { + result.addAll(pac.getInitialiserInstances()); + } + + return result; + } + + /** + * Recursively discovers all nested {@link IInitialiserPackage} instances + * reachable from this instance. + * + * @return All initialiser types that are accessible from this. + * + * @see {@link #getInitialiserInterfaceTypes()} for initialiser types that are + * contained in this directly. + */ + public default Collection> getAllInitialiserInterfaceTypes() { + var result = this.getInitialiserInterfaceTypes(); + + for (var pac : this.getAllSubPackages()) { + result.addAll(pac.getInitialiserInterfaceTypes()); + } + + return result; + } + + /** + * Recursively looks through all nested {@link IInitialiserPackage} instances + * for an {@link IInitialiser} type, which is capable of instantiating the given + * cls. + * + * @return The class object of the {@link IInitialiser} type meant to + * instantiate the given cls. Null, if there is no such + * {@link IInitialiser} reachable from this. + */ + public default Class getInitialiserInterfaceTypeFor(Class cls) { + var initClss = this.getAllInitialiserInterfaceTypes(); + + for (var initCls : initClss) { + if (IInitialiser.isInitialiserFor(initCls, cls)) { + return initCls; + } + } + + return null; + } + + /** + * Recursively looks for an {@link IInitialiser} instance, which is capable of + * instantiating the given cls. + * + * @return An instance of the {@link IInitialiser} that is meant to instantiate + * cls. Null, if there is no such {@link IInitialiser} reachable from + * this. + */ + public default IInitialiser getInitialiserInstanceFor(Class cls) { + var init = this.getAllInitialiserInstances(); + + for (var i : init) { + if (i.isInitialiserFor(cls)) { + return i; + } + } + + return null; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserUtilityTest.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserUtilityTest.java new file mode 100644 index 0000000000..763f0f2c00 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/IInitialiserUtilityTest.java @@ -0,0 +1,101 @@ +package cipm.consistency.initialisers; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Stream; + +/** + * An interface that contains various methods that can be used in utility tests, + * which ensure that all initialisers and/or tests associated with them are + * present. Not implemented as an abstract class, since utility tests are likely + * to have to inherit from an abstract test class anyway. + * + * @author Alp Torac Genc + */ +public interface IInitialiserUtilityTest { + /** + * @return The {@link IInitialiserPackage} that will be used within the utility + * test. + */ + public IInitialiserPackage getUsedInitialiserPackage(); + + /** + * @return A list of all files under the given path and its sub-directories. + */ + public default Collection getAllFiles(File currentPath) { + var result = new ArrayList(); + + if (currentPath.isFile()) { + result.add(currentPath); + } else { + var files = currentPath.listFiles(); + if (files != null) { + for (var f : files) { + result.addAll(this.getAllFiles(f)); + } + } + } + + return result; + } + + /** + * @return Whether the given file's name (without extension) is equal to the + * given fileName. + */ + public default boolean fileNameEquals(File file, String fileName) { + return file != null && file.getName().split("\\.")[0].equals(fileName); + } + + /** + * @return A String representing the given stream. The provided toStringFunc + * will be used to transform stream elements into Strings. + */ + public default String streamToString(Stream stream, Function toStringFunc) { + return stream.map((e) -> toStringFunc.apply(e)).reduce("", (s1, s2) -> s1 + ", " + s2).substring(2); + } + + /** + * Opens a stream on the given list and delegates to + * {@link #clsStreamToString(Stream)}. + */ + public default String clsListToString(List> list) { + return this.clsStreamToString(list.stream()); + } + + /** + * A variant of {@link #streamToString(Stream, Function)} for Class streams. + * + * Maps stream elements (classes) to String by returning their simple name. + */ + public default String clsStreamToString(Stream> list) { + return this.streamToString(list, (cls) -> cls.getSimpleName()); + } + + /** + * @return An instance of all initialisers accessible from + * {@link #getUsedInitialiserPackage()}. + */ + public default Collection getAllInitialiserInstances() { + return this.getUsedInitialiserPackage().getAllInitialiserInstances(); + } + + /** + * @return Types of all initialisers accessible from + * {@link #getUsedInitialiserPackage()}. + */ + public default Collection> getAllInitialiserInterfaceTypes() { + return this.getUsedInitialiserPackage().getAllInitialiserInterfaceTypes(); + } + + /** + * @return The type of the initialiser meant to instantiate objClass, which is + * accessible from {@link #getUsedInitialiserPackage()}.. + */ + public default Class getInitialiserInterfaceFor(Class objClass) { + return this.getUsedInitialiserPackage().getInitialiserInterfaceTypeFor(objClass); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectInitialiser.java new file mode 100644 index 0000000000..84f03c8ace --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectInitialiser.java @@ -0,0 +1,42 @@ +package cipm.consistency.initialisers.eobject; + +import org.eclipse.emf.ecore.EObject; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; + +/** + * An interface for {@link IInitialiser} sub-types, whose purpose is to create + * and modify {@link EObject} instances. + * + * @author Alp Torac Genc + */ +public interface IEObjectInitialiser extends IInitialiser { + /** + * {@inheritDoc}
+ *
+ * Note: The created instance may not be "valid" due to certain attributes + * not being set. Using proper {@link IInitialiserAdapter} instances on + * implementors can circumvent potential issues. + * + * @see {@link IInitialiserAdapter}, {@link IInitialiserAdapterStrategy} + */ + @Override + public EObject instantiate(); + + @Override + public IEObjectInitialiser newInitialiser(); + + /** + * {@inheritDoc} + * + * @return The instance class associated with the EClass of the return value of + * {@link #instantiate()}, or null if the said method returns null. + */ + @SuppressWarnings("unchecked") + @Override + public default Class getInstanceClassOfInitialiser() { + var obj = this.instantiate(); + return obj != null ? (Class) obj.eClass().getInstanceClass() : null; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectUtilityTest.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectUtilityTest.java new file mode 100644 index 0000000000..0d92727943 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/IEObjectUtilityTest.java @@ -0,0 +1,33 @@ +package cipm.consistency.initialisers.eobject; + +import cipm.consistency.initialisers.IInitialiserUtilityTest; + +/** + * An interface that extends {@link IInitialiserUtilityTest} with further + * utility methods, focusing on EObject. + * + * @author Alp Torac Genc + */ +public interface IEObjectUtilityTest extends IInitialiserUtilityTest { + /** + * @return The {@link InitialiserNameHelper} instance that will be used in the + * other methods. + */ + public default InitialiserNameHelper getInitialiserNameHelper() { + return new InitialiserNameHelper(); + } + + /** + * {@link InitialiserNameHelper#getInitialiserInterfaceName(Class)} + */ + public default String getInitialiserInterfaceName(Class cls) { + return this.getInitialiserNameHelper().getInitialiserInterfaceName(cls); + } + + /** + * {@link InitialiserNameHelper#getConcreteInitialiserName(Class)} + */ + public default String getConcreteInitialiserName(Class ifc) { + return this.getInitialiserNameHelper().getConcreteInitialiserName(ifc); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/InitialiserNameHelper.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/InitialiserNameHelper.java new file mode 100644 index 0000000000..4f211dbc8f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/InitialiserNameHelper.java @@ -0,0 +1,41 @@ +package cipm.consistency.initialisers.eobject; + +/** + * A utility class that contains information about the naming convention used + * within the sub-packages of this package.
+ *
+ * This class is intended to be used from tests, which ensure that all necessary + * initialisers are implemented and are accessible. + * + * @author Alp Torac Genc + */ +public class InitialiserNameHelper { + + /** + * @return The name of the concrete initialiser corresponding to cls. + */ + public String getConcreteInitialiserName(Class cls) { + return cls.getSimpleName() + this.getInitialiserSuffix(); + } + + /** + * @return The name of the initialiser interface corresponding to cls. + */ + public String getInitialiserInterfaceName(Class cls) { + return getInitialiserInterfacePrefix() + cls.getSimpleName() + this.getInitialiserSuffix(); + } + + /** + * The prefix used in initialiser interfaces. + */ + public String getInitialiserInterfacePrefix() { + return "I"; + } + + /** + * The suffix used in initialisers. + */ + public String getInitialiserSuffix() { + return "Initialiser"; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/package-info.java new file mode 100644 index 0000000000..fff1daa7f3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/eobject/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains the means to extend {@link IInitialiser} for {@link EObject} + * implementors. + */ +package cipm.consistency.initialisers.eobject; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPEObjectInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPEObjectInitialiser.java new file mode 100644 index 0000000000..567d02c076 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPEObjectInitialiser.java @@ -0,0 +1,15 @@ +package cipm.consistency.initialisers.jamopp; + +import cipm.consistency.initialisers.eobject.IEObjectInitialiser; + +/** + * An interface meant to be implemented by {@link IEObjectInitialiser} + * sub-types, whose purpose is to create {@link EObject} implementors within + * JaMoPP. + * + * @author Alp Torac Genc + */ +public interface IJaMoPPEObjectInitialiser extends IEObjectInitialiser { + @Override + public IJaMoPPEObjectInitialiser newInitialiser(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPUtilityTest.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPUtilityTest.java new file mode 100644 index 0000000000..0fcbe86451 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/IJaMoPPUtilityTest.java @@ -0,0 +1,44 @@ +package cipm.consistency.initialisers.jamopp; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.emf.ecore.EObject; + +import cipm.consistency.initialisers.eobject.IEObjectUtilityTest; + +/** + * An interface that extends {@link IEObjectUtilityTest} with further utility + * methods, focusing on EObject types used within JaMoPP. + * + * @author Alp Torac Genc + */ +public interface IJaMoPPUtilityTest extends IEObjectUtilityTest { + /** + * @return The {@link JaMoPPHelper} instance that will be used in other methods. + */ + public default JaMoPPHelper getJaMoPPHelper() { + return new JaMoPPHelper(); + } + + /** + * {@link JaMoPPHelper#getAllPossibleTypes()} + */ + public default Set> getAllPossibleJaMoPPEObjectTypes() { + return this.getJaMoPPHelper().getAllPossibleTypes(); + } + + /** + * {@link JaMoPPHelper#getAllInitialiserCandidates()} + */ + public default Collection> getAllInitialiserCandidates() { + return this.getJaMoPPHelper().getAllInitialiserCandidates(); + } + + /** + * {@link JaMoPPHelper#getAllConcreteInitialiserCandidates()} + */ + public default Collection> getAllConcreteInitialiserCandidates() { + return this.getJaMoPPHelper().getAllConcreteInitialiserCandidates(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPHelper.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPHelper.java new file mode 100644 index 0000000000..8d4149b6dc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPHelper.java @@ -0,0 +1,238 @@ +package cipm.consistency.initialisers.jamopp; + +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import java.util.function.Predicate; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.emftext.language.java.JavaPackage; + +/** + * A utility class that provides information about EObjects used by JaMoPP, as + * well as methods to access their types. There are further methods, which map + * their types to the initialisers implemented in sub-packages.
+ *
+ * This class is intended to be used in tests, which ensure that all necessary + * initialisers are implemented and can be accessed. + * + * @author Alp Torac Genc + */ +public class JaMoPPHelper { + /** + * A variant of {@link #getAllClasses(Predicate)} with no given predicate. + */ + public Collection> getAllClasses() { + return this.getAllClasses(null); + } + + /** + * If the given predicate is null, does not filter the found types. + * + * @return All types accessible under the sub-packages of {@link JavaPackage} in + * form of {@link EClass}, whose instance class + * {@code eClass.getInstanceClass()} will be in the return value, which + * fulfill the given predicate. + */ + public Collection> getAllClasses(Predicate pred) { + var res = new ArrayList>(); + Predicate predToUse = pred != null ? pred : (a) -> true; + this.getAllEClasses().stream().filter(predToUse) + .forEach((eCls) -> res.add(this.getInstanceClassOfEClassifier(eCls))); + return res; + } + + /** + * @return All {@link EClass}es accessible under the sub-packages of + * {@link JavaPackage}. + */ + public Collection getAllEClasses() { + var res = new ArrayList(); + var ePacs = JavaPackage.eINSTANCE.getESubpackages(); + ePacs.forEach((pac) -> pac.getEClassifiers().stream().filter((eClsf) -> eClsf instanceof EClass) + .forEach((c) -> res.add((EClass) c))); + return res; + } + + protected Class getInstanceClassOfEObject(T obj) { + return this.getInstanceClassOfEClassifier(obj.eClass()); + } + + @SuppressWarnings("unchecked") + protected Class getInstanceClassOfEClassifier(EClassifier eClsfier) { + return (Class) eClsfier.getInstanceClass(); + } + + /** + * Finds the {@link EClass} corresponding to the given cls, whose instance class + * is equal to cls: {@code eCls.getInstanceClass().equals(cls)}. + * + * @param cls The type of the Java element, whose {@link EClass} will be + * returned, if cls is the type of a Java element. + * + * @return The {@link EClass} corresponding to the class represented by cls. + * Null, if no such {@link EClass} is found under {@link JavaPackage}. + */ + public EClass getEClassForJavaElement(Class cls) { + var ePacs = JavaPackage.eINSTANCE.getESubpackages(); + for (var ePac : ePacs) { + var eClss = ePac.getEClassifiers(); + for (var eCls : eClss) { + if (eCls.getInstanceClass().equals(cls)) { + return (EClass) eCls; + } + } + } + return null; + } + + /** + * Finds the {@link EClass} corresponding to the given cls, whose instance + * class' concrete type is equal to cls. + * + * @param cls The type of the concrete implementation of the Java element, whose + * corresponding {@link EClass} will be returned. + * + * @return The {@link EClass} corresponding to the interface type of cls. Null, + * if no such {@link EClass} is found under {@link JavaPackage}. Note + * that the returned {@link EClass} will be from the interface of cls. + * This means, if cls represents the type xImpl, the returned + * {@link EClass} will belong to x. + */ + public EClass getEClassForJavaElementImpl(Class cls) { + var interfaceType = this.getInterfaceTypeForJavaElementImpl(cls); + if (interfaceType != null) { + return this.getEClassForJavaElement(interfaceType); + } + return null; + } + + /** + * The interface {@code I} of the implementation of a Java element type + * {@code T} within JaMoPP is directly implemented by it and also contains its + * name, i.e.:
+ *
+ * T extends I directly and the simple name of T contains the simple name of I. + * T can neither be an interface nor abstract. + * + * @param The type of the passed parameter. Used to allow making assumptions + * on the return value. + * @param cls The type of an implementation of a Java element within JaMoPP. + * @return The interface of cls matching the description from above, if it + * exists. Otherwise null. + */ + @SuppressWarnings("unchecked") + public Class getInterfaceTypeForJavaElementImpl(Class cls) { + if (cls.isInterface() || Modifier.isAbstract(cls.getModifiers())) { + return null; + } + + var directIfcs = cls.getInterfaces(); + for (var ifc : directIfcs) { + if (cls.getSimpleName().contains(ifc.getSimpleName())) { + return (Class) ifc; + } + } + + return null; + } + + /** + * @return Types of concrete implementations and interfaces of all Java-Model + * elements. + */ + public Set> getAllPossibleTypes() { + return this.getAllPossibleTypes(JavaPackage.eINSTANCE.getESubpackages()); + } + + /** + * Recursively discovers sub-packages of cPac (including cPac) for + * {@link EClassifier}s contained within, aggregates the types represented by + * the EClassifiers as a Set and returns the Set. + * + * @param cPac The package, which is the start point of the discovery. + * @return All types represented by EClassifiers contained in cPac and its + * sub-packages. Includes types of interfaces as well as concrete + * implementation classes. + */ + public Set> getAllPossibleTypes(EPackage cPac) { + var clss = cPac.getEClassifiers(); + var subPacs = cPac.getESubpackages(); + + var foundClss = new HashSet>(); + + if (clss != null) { + for (var cls : clss) { + foundClss.add(this.getInstanceClassOfEClassifier(cls)); + + /* + * Although cls is technically of type EClassifier, it also implements EClass + */ + if (cls instanceof EClass) { + var castedCls = (EClass) cls; + + /* + * Add the concrete implementation class, if cls represents a concrete class + */ + if (!castedCls.isAbstract()) { + foundClss.add(cPac.getEFactoryInstance().create(castedCls).getClass()); + } + } + } + } + + if (subPacs != null) { + foundClss.addAll(this.getAllPossibleTypes(subPacs)); + } + + return foundClss; + } + + /** + * @return All types represented by {@link EClassifiers} contained in pacs and + * their sub-packages. Includes types of interfaces as well as concrete + * implementation classes. + * @see {@link #getAllPossibleTypes(EPackage)}} + */ + public Set> getAllPossibleTypes(Collection pacs) { + var foundClss = new HashSet>(); + + for (var pac : pacs) { + foundClss.addAll(this.getAllPossibleTypes(pac)); + } + + return foundClss; + } + + /** + * Used to determine which EObject implementors should have an initialiser + * interface. + * + * @return The class objects within {@link #getAllEClasses()} which should have + * a corresponding initialiser interface. Currently, all of them. + */ + public Collection> getAllInitialiserCandidates() { + var result = new ArrayList>(); + this.getAllEClasses().stream().forEach((e) -> result.add(this.getInstanceClassOfEClassifier(e))); + return result; + } + + /** + * Used to determine which EObject implementors should have a concrete + * initialiser implementation. + * + * @return The class objects within {@link #getAllEClasses()} which should have + * a corresponding concrete initialiser implementation. + */ + public Collection> getAllConcreteInitialiserCandidates() { + var result = new ArrayList>(); + this.getAllEClasses().stream().filter((e) -> !e.isAbstract()) + .forEach((e) -> result.add(this.getInstanceClassOfEClassifier(e))); + return result; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPInitialiserPackage.java new file mode 100644 index 0000000000..13f201a97d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/JaMoPPInitialiserPackage.java @@ -0,0 +1,45 @@ +package cipm.consistency.initialisers.jamopp; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiserPackage; +import cipm.consistency.initialisers.jamopp.annotations.AnnotationsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.arrays.ArraysInitialiserPackage; +import cipm.consistency.initialisers.jamopp.classifiers.ClassifierInitialiserPackage; +import cipm.consistency.initialisers.jamopp.commons.CommonsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.containers.ContainersInitialiserPackage; +import cipm.consistency.initialisers.jamopp.expressions.ExpressionsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.generics.GenericsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.imports.ImportsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.instantiations.InstantiationsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.literals.LiteralsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.members.MembersInitialiserPackage; +import cipm.consistency.initialisers.jamopp.modifiers.ModifiersInitialiserPackage; +import cipm.consistency.initialisers.jamopp.modules.ModulesInitialiserPackage; +import cipm.consistency.initialisers.jamopp.operators.OperatorsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.parameters.ParametersInitialiserPackage; +import cipm.consistency.initialisers.jamopp.references.ReferencesInitialiserPackage; +import cipm.consistency.initialisers.jamopp.statements.StatementsInitialiserPackage; +import cipm.consistency.initialisers.jamopp.types.TypesInitialiserPackage; +import cipm.consistency.initialisers.jamopp.variables.VariablesInitialiserPackage; + +/** + * The topmost implementor of {@link IInitialiserPackage} for EObject + * implementors used by JaMoPP. + * + * @author Alp Torac Genc + */ +public class JaMoPPInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getSubPackages() { + return this.initCol(new IInitialiserPackage[] { new AnnotationsInitialiserPackage(), + new ArraysInitialiserPackage(), new ClassifierInitialiserPackage(), new CommonsInitialiserPackage(), + new ContainersInitialiserPackage(), new ExpressionsInitialiserPackage(), + new GenericsInitialiserPackage(), new ImportsInitialiserPackage(), + new InstantiationsInitialiserPackage(), new LiteralsInitialiserPackage(), + new MembersInitialiserPackage(), new ModifiersInitialiserPackage(), new ModulesInitialiserPackage(), + new OperatorsInitialiserPackage(), new ParametersInitialiserPackage(), + new ReferencesInitialiserPackage(), new StatementsInitialiserPackage(), new TypesInitialiserPackage(), + new VariablesInitialiserPackage() }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationAttributeSettingInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationAttributeSettingInitialiser.java new file mode 100644 index 0000000000..25793b9fb5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationAttributeSettingInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationAttributeSetting; +import org.emftext.language.java.annotations.AnnotationsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AnnotationAttributeSettingInitialiser extends AbstractInitialiserBase + implements IAnnotationAttributeSettingInitialiser { + @Override + public IAnnotationAttributeSettingInitialiser newInitialiser() { + return new AnnotationAttributeSettingInitialiser(); + } + + @Override + public AnnotationAttributeSetting instantiate() { + return AnnotationsFactory.eINSTANCE.createAnnotationAttributeSetting(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationInstanceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationInstanceInitialiser.java new file mode 100644 index 0000000000..1aa1eca795 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationInstanceInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.annotations.AnnotationInstance; + +public class AnnotationInstanceInitialiser extends AbstractInitialiserBase implements IAnnotationInstanceInitialiser { + @Override + public AnnotationInstance instantiate() { + var fac = AnnotationsFactory.eINSTANCE; + return fac.createAnnotationInstance(); + } + + @Override + public IAnnotationInstanceInitialiser newInitialiser() { + return new AnnotationInstanceInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationParameterListInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationParameterListInitialiser.java new file mode 100644 index 0000000000..0c5197ef9a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationParameterListInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.annotations.AnnotationParameterList; + +public class AnnotationParameterListInitialiser extends AbstractInitialiserBase + implements IAnnotationParameterListInitialiser { + @Override + public IAnnotationParameterListInitialiser newInitialiser() { + return new AnnotationParameterListInitialiser(); + } + + @Override + public AnnotationParameterList instantiate() { + return AnnotationsFactory.eINSTANCE.createAnnotationParameterList(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationsInitialiserPackage.java new file mode 100644 index 0000000000..52d37e8eb2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/AnnotationsInitialiserPackage.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class AnnotationsInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol( + new IInitialiser[] { new AnnotationAttributeSettingInitialiser(), new AnnotationInstanceInitialiser(), + new AnnotationParameterListInitialiser(), new SingleAnnotationParameterInitialiser() }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAnnotableInitialiser.class, IAnnotationAttributeSettingInitialiser.class, + IAnnotationInstanceInitialiser.class, IAnnotationParameterInitialiser.class, + IAnnotationParameterListInitialiser.class, IAnnotationValueInitialiser.class, + ISingleAnnotationParameterInitialiser.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotableInitialiser.java new file mode 100644 index 0000000000..8aa528e96d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotableInitialiser.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.Annotable; +import org.emftext.language.java.annotations.AnnotationInstance; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IAnnotableInitialiser extends ICommentableInitialiser { + @Override + public Annotable instantiate(); + + public default boolean addAnnotation(Annotable aObj, AnnotationInstance anno) { + if (anno != null) { + aObj.getAnnotations().add(anno); + return aObj.getAnnotations().contains(anno); + } + + return true; + } + + public default boolean addAnnotations(Annotable aObj, AnnotationInstance[] annos) { + return this.doMultipleModifications(aObj, annos, this::addAnnotation); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationAttributeSettingInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationAttributeSettingInitialiser.java new file mode 100644 index 0000000000..9d44645a05 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationAttributeSettingInitialiser.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationAttributeSetting; +import org.emftext.language.java.annotations.AnnotationValue; +import org.emftext.language.java.members.InterfaceMethod; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IAnnotationAttributeSettingInitialiser extends ICommentableInitialiser { + @Override + public AnnotationAttributeSetting instantiate(); + + public default boolean setAttribute(AnnotationAttributeSetting aas, InterfaceMethod attr) { + aas.setAttribute(attr); + return (attr == null && aas.getAttribute() == null) || aas.getAttribute().equals(attr); + } + + public default boolean setValue(AnnotationAttributeSetting aas, AnnotationValue val) { + aas.setValue(val); + return (val == null && aas.getValue() == null) || aas.getValue().equals(val); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationInstanceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationInstanceInitialiser.java new file mode 100644 index 0000000000..bcd71e1e69 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationInstanceInitialiser.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationInstance; +import org.emftext.language.java.annotations.AnnotationParameter; +import org.emftext.language.java.classifiers.Classifier; + +import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser; + +public interface IAnnotationInstanceInitialiser extends INamespaceAwareElementInitialiser { + @Override + public AnnotationInstance instantiate(); + + public default boolean setAnnotation(AnnotationInstance ai, Classifier anno) { + ai.setAnnotation(anno); + return (anno == null && ai.getAnnotation() == null) || ai.getAnnotation().equals(anno); + } + + public default boolean setParameter(AnnotationInstance ai, AnnotationParameter param) { + ai.setParameter(param); + return (param == null && ai.getParameter() == null) || ai.getParameter().equals(param); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterInitialiser.java new file mode 100644 index 0000000000..fcc8df3021 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationParameter; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IAnnotationParameterInitialiser extends ICommentableInitialiser { + @Override + public AnnotationParameter instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterListInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterListInitialiser.java new file mode 100644 index 0000000000..98f57efb0d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationParameterListInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationAttributeSetting; +import org.emftext.language.java.annotations.AnnotationParameterList; + +public interface IAnnotationParameterListInitialiser extends IAnnotationParameterInitialiser { + @Override + public AnnotationParameterList instantiate(); + + public default boolean addSetting(AnnotationParameterList apl, AnnotationAttributeSetting setting) { + if (setting != null) { + apl.getSettings().add(setting); + return apl.getSettings().contains(setting); + } + return true; + } + + public default boolean addSettings(AnnotationParameterList apl, AnnotationAttributeSetting[] settings) { + return this.doMultipleModifications(apl, settings, this::addSetting); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationValueInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationValueInitialiser.java new file mode 100644 index 0000000000..a7816d9346 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/IAnnotationValueInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationValue; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IAnnotationValueInitialiser extends ICommentableInitialiser { + @Override + public AnnotationValue instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/ISingleAnnotationParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/ISingleAnnotationParameterInitialiser.java new file mode 100644 index 0000000000..6c2ddf03e2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/ISingleAnnotationParameterInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationValue; +import org.emftext.language.java.annotations.SingleAnnotationParameter; + +public interface ISingleAnnotationParameterInitialiser extends IAnnotationParameterInitialiser { + @Override + public SingleAnnotationParameter instantiate(); + + public default boolean setValue(SingleAnnotationParameter sap, AnnotationValue val) { + sap.setValue(val); + return (val == null && sap.getValue() == null) || sap.getValue().equals(val); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/SingleAnnotationParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/SingleAnnotationParameterInitialiser.java new file mode 100644 index 0000000000..185f00118a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/SingleAnnotationParameterInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.annotations; + +import org.emftext.language.java.annotations.AnnotationsFactory; +import org.emftext.language.java.annotations.SingleAnnotationParameter; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SingleAnnotationParameterInitialiser extends AbstractInitialiserBase + implements ISingleAnnotationParameterInitialiser { + @Override + public ISingleAnnotationParameterInitialiser newInitialiser() { + return new SingleAnnotationParameterInitialiser(); + } + + @Override + public SingleAnnotationParameter instantiate() { + return AnnotationsFactory.eINSTANCE.createSingleAnnotationParameter(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/package-info.java new file mode 100644 index 0000000000..5796ca11e9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/annotations/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.annotations}. + */ +package cipm.consistency.initialisers.jamopp.annotations; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayDimensionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayDimensionInitialiser.java new file mode 100644 index 0000000000..858fb0c149 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayDimensionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArraysFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.arrays.ArrayDimension; + +public class ArrayDimensionInitialiser extends AbstractInitialiserBase implements IArrayDimensionInitialiser { + @Override + public IArrayDimensionInitialiser newInitialiser() { + return new ArrayDimensionInitialiser(); + } + + @Override + public ArrayDimension instantiate() { + return ArraysFactory.eINSTANCE.createArrayDimension(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInitializerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInitializerInitialiser.java new file mode 100644 index 0000000000..91a244f67c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInitializerInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArraysFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.arrays.ArrayInitializer; + +public class ArrayInitializerInitialiser extends AbstractInitialiserBase implements IArrayInitializerInitialiser { + @Override + public IArrayInitializerInitialiser newInitialiser() { + return new ArrayInitializerInitialiser(); + } + + @Override + public ArrayInitializer instantiate() { + return ArraysFactory.eINSTANCE.createArrayInitializer(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationBySizeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationBySizeInitialiser.java new file mode 100644 index 0000000000..cc199d7aac --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationBySizeInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInstantiationBySize; +import org.emftext.language.java.arrays.ArraysFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ArrayInstantiationBySizeInitialiser extends AbstractInitialiserBase + implements IArrayInstantiationBySizeInitialiser { + @Override + public IArrayInstantiationBySizeInitialiser newInitialiser() { + return new ArrayInstantiationBySizeInitialiser(); + } + + @Override + public ArrayInstantiationBySize instantiate() { + return ArraysFactory.eINSTANCE.createArrayInstantiationBySize(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesTypedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesTypedInitialiser.java new file mode 100644 index 0000000000..d6d53022e2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesTypedInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped; +import org.emftext.language.java.arrays.ArraysFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ArrayInstantiationByValuesTypedInitialiser extends AbstractInitialiserBase + implements IArrayInstantiationByValuesTypedInitialiser { + @Override + public IArrayInstantiationByValuesTypedInitialiser newInitialiser() { + return new ArrayInstantiationByValuesTypedInitialiser(); + } + + @Override + public ArrayInstantiationByValuesTyped instantiate() { + return ArraysFactory.eINSTANCE.createArrayInstantiationByValuesTyped(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesUntypedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesUntypedInitialiser.java new file mode 100644 index 0000000000..ba8ee9e7e9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArrayInstantiationByValuesUntypedInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped; +import org.emftext.language.java.arrays.ArraysFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ArrayInstantiationByValuesUntypedInitialiser extends AbstractInitialiserBase + implements IArrayInstantiationByValuesUntypedInitialiser { + @Override + public IArrayInstantiationByValuesUntypedInitialiser newInitialiser() { + return new ArrayInstantiationByValuesUntypedInitialiser(); + } + + @Override + public ArrayInstantiationByValuesUntyped instantiate() { + return ArraysFactory.eINSTANCE.createArrayInstantiationByValuesUntyped(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraySelectorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraySelectorInitialiser.java new file mode 100644 index 0000000000..8433c8ca8b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraySelectorInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.arrays.ArraysFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ArraySelectorInitialiser extends AbstractInitialiserBase implements IArraySelectorInitialiser { + @Override + public IArraySelectorInitialiser newInitialiser() { + return new ArraySelectorInitialiser(); + } + + @Override + public ArraySelector instantiate() { + return ArraysFactory.eINSTANCE.createArraySelector(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraysInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraysInitialiserPackage.java new file mode 100644 index 0000000000..0af267885e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/ArraysInitialiserPackage.java @@ -0,0 +1,25 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ArraysInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new ArrayDimensionInitialiser(), new ArrayInitializerInitialiser(), + new ArrayInstantiationBySizeInitialiser(), new ArrayInstantiationByValuesTypedInitialiser(), + new ArrayInstantiationByValuesUntypedInitialiser(), new ArraySelectorInitialiser() }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IArrayDimensionInitialiser.class, IArrayInitializationValueInitialiser.class, + IArrayInitializerInitialiser.class, IArrayInstantiationBySizeInitialiser.class, + IArrayInstantiationByValuesInitialiser.class, IArrayInstantiationByValuesTypedInitialiser.class, + IArrayInstantiationByValuesUntypedInitialiser.class, IArrayInstantiationInitialiser.class, + IArraySelectorInitialiser.class, IArrayTypeableInitialiser.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayDimensionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayDimensionInitialiser.java new file mode 100644 index 0000000000..806493e3b2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayDimensionInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayDimension; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IArrayDimensionInitialiser extends IAnnotableInitialiser, ICommentableInitialiser { + @Override + public ArrayDimension instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializationValueInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializationValueInitialiser.java new file mode 100644 index 0000000000..4bf9ec4414 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializationValueInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInitializationValue; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IArrayInitializationValueInitialiser extends ICommentableInitialiser { + @Override + public ArrayInitializationValue instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializerInitialiser.java new file mode 100644 index 0000000000..c7ea435d5e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInitializerInitialiser.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInitializationValue; +import org.emftext.language.java.arrays.ArrayInitializer; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotationValueInitialiser; + +public interface IArrayInitializerInitialiser + extends IAnnotationValueInitialiser, IArrayInitializationValueInitialiser { + @Override + public ArrayInitializer instantiate(); + + public default boolean addInitialValue(ArrayInitializer ai, ArrayInitializationValue initVal) { + if (initVal != null) { + ai.getInitialValues().add(initVal); + return ai.getInitialValues().contains(initVal); + } + return true; + } + + public default boolean addInitialValues(ArrayInitializer ai, ArrayInitializationValue[] initVals) { + return this.doMultipleModifications(ai, initVals, this::addInitialValue); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationBySizeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationBySizeInitialiser.java new file mode 100644 index 0000000000..38df6b44a1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationBySizeInitialiser.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInstantiationBySize; +import org.emftext.language.java.expressions.Expression; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IArrayInstantiationBySizeInitialiser extends IArrayInstantiationInitialiser, ITypedElementInitialiser { + + @Override + public ArrayInstantiationBySize instantiate(); + + public default boolean addSize(ArrayInstantiationBySize arrIns, Expression size) { + if (size != null) { + arrIns.getSizes().add(size); + return arrIns.getSizes().contains(size); + } + return true; + } + + public default boolean addSizes(ArrayInstantiationBySize arrIns, Expression[] sizes) { + return this.doMultipleModifications(arrIns, sizes, this::addSize); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesInitialiser.java new file mode 100644 index 0000000000..128f2fd41c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInitializer; +import org.emftext.language.java.arrays.ArrayInstantiationByValues; + +public interface IArrayInstantiationByValuesInitialiser extends IArrayInstantiationInitialiser { + + @Override + public ArrayInstantiationByValues instantiate(); + + public default boolean setArrayInitializer(ArrayInstantiationByValues arrIns, ArrayInitializer arrInit) { + arrIns.setArrayInitializer(arrInit); + return (arrInit == null && arrIns.getArrayInitializer() == null) + || arrIns.getArrayInitializer().equals(arrInit); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesTypedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesTypedInitialiser.java new file mode 100644 index 0000000000..62dde8bfed --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesTypedInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInstantiationByValuesTyped; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IArrayInstantiationByValuesTypedInitialiser + extends IArrayInstantiationByValuesInitialiser, ITypedElementInitialiser { + @Override + public ArrayInstantiationByValuesTyped instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesUntypedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesUntypedInitialiser.java new file mode 100644 index 0000000000..e9a6d68b5a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationByValuesUntypedInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInstantiationByValuesUntyped; + +public interface IArrayInstantiationByValuesUntypedInitialiser extends IArrayInstantiationByValuesInitialiser { + @Override + public ArrayInstantiationByValuesUntyped instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationInitialiser.java new file mode 100644 index 0000000000..4af666ff1c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayInstantiationInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayInstantiation; + +import cipm.consistency.initialisers.jamopp.references.IReferenceInitialiser; + +public interface IArrayInstantiationInitialiser extends IReferenceInitialiser { + @Override + public ArrayInstantiation instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArraySelectorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArraySelectorInitialiser.java new file mode 100644 index 0000000000..de628f49ca --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArraySelectorInitialiser.java @@ -0,0 +1,17 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.expressions.Expression; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IArraySelectorInitialiser extends IAnnotableInitialiser, ICommentableInitialiser { + @Override + public ArraySelector instantiate(); + + public default boolean setPosition(ArraySelector as, Expression pos) { + as.setPosition(pos); + return (pos == null && as.getPosition() == null) || as.getPosition().equals(pos); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayTypeableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayTypeableInitialiser.java new file mode 100644 index 0000000000..4456f650f2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/IArrayTypeableInitialiser.java @@ -0,0 +1,35 @@ +package cipm.consistency.initialisers.jamopp.arrays; + +import org.emftext.language.java.arrays.ArrayDimension; +import org.emftext.language.java.arrays.ArrayTypeable; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IArrayTypeableInitialiser extends ICommentableInitialiser { + @Override + public ArrayTypeable instantiate(); + + public default boolean addArrayDimensionAfter(ArrayTypeable at, ArrayDimension arrDimAfter) { + if (arrDimAfter != null) { + at.getArrayDimensionsAfter().add(arrDimAfter); + return at.getArrayDimensionsAfter().contains(arrDimAfter); + } + return true; + } + + public default boolean addArrayDimensionBefore(ArrayTypeable at, ArrayDimension arrDimBefore) { + if (arrDimBefore != null) { + at.getArrayDimensionsBefore().add(arrDimBefore); + return at.getArrayDimensionsBefore().contains(arrDimBefore); + } + return true; + } + + public default boolean addArrayDimensionsAfter(ArrayTypeable at, ArrayDimension[] arrDimsAfter) { + return this.doMultipleModifications(at, arrDimsAfter, this::addArrayDimensionAfter); + } + + public default boolean addArrayDimensionsBefore(ArrayTypeable at, ArrayDimension[] arrDimsBefore) { + return this.doMultipleModifications(at, arrDimsBefore, this::addArrayDimensionBefore); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/package-info.java new file mode 100644 index 0000000000..81b6e0ef3b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/arrays/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.arrays}. + */ +package cipm.consistency.initialisers.jamopp.arrays; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnnotationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnnotationInitialiser.java new file mode 100644 index 0000000000..d9d9282819 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnnotationInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.Annotation; +import org.emftext.language.java.classifiers.ClassifiersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AnnotationInitialiser extends AbstractInitialiserBase implements IAnnotationInitialiser { + @Override + public Annotation instantiate() { + var fac = ClassifiersFactory.eINSTANCE; + return fac.createAnnotation(); + } + + @Override + public AnnotationInitialiser newInitialiser() { + return new AnnotationInitialiser(); + } + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnonymousClassInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnonymousClassInitialiser.java new file mode 100644 index 0000000000..8423d31510 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/AnonymousClassInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.ClassifiersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.classifiers.AnonymousClass; + +public class AnonymousClassInitialiser extends AbstractInitialiserBase implements IAnonymousClassInitialiser { + @Override + public IAnonymousClassInitialiser newInitialiser() { + return new AnonymousClassInitialiser(); + } + + @Override + public AnonymousClass instantiate() { + return ClassifiersFactory.eINSTANCE.createAnonymousClass(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassInitialiser.java new file mode 100644 index 0000000000..419c6de41b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.ClassifiersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.classifiers.Class; + +public class ClassInitialiser extends AbstractInitialiserBase implements IClassInitialiser { + @Override + public Class instantiate() { + var fac = ClassifiersFactory.eINSTANCE; + return fac.createClass(); + } + + @Override + public ClassInitialiser newInitialiser() { + return new ClassInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassifierInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassifierInitialiserPackage.java new file mode 100644 index 0000000000..80a09e1155 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/ClassifierInitialiserPackage.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ClassifierInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new AnnotationInitialiser(), new AnonymousClassInitialiser(), + new ClassInitialiser(), new EnumerationInitialiser(), new InterfaceInitialiser() }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAnnotationInitialiser.class, IAnonymousClassInitialiser.class, + IClassifierInitialiser.class, IClassInitialiser.class, IConcreteClassifierInitialiser.class, + IEnumerationInitialiser.class, IImplementorInitialiser.class, IInterfaceInitialiser.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/EnumerationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/EnumerationInitialiser.java new file mode 100644 index 0000000000..c177fa3b87 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/EnumerationInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.ClassifiersFactory; +import org.emftext.language.java.classifiers.Enumeration; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class EnumerationInitialiser extends AbstractInitialiserBase implements IEnumerationInitialiser { + @Override + public Enumeration instantiate() { + var fac = ClassifiersFactory.eINSTANCE; + return fac.createEnumeration(); + } + + @Override + public EnumerationInitialiser newInitialiser() { + return new EnumerationInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnnotationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnnotationInitialiser.java new file mode 100644 index 0000000000..e93400b262 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnnotationInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.Annotation; + +public interface IAnnotationInitialiser extends IConcreteClassifierInitialiser { + @Override + public Annotation instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnonymousClassInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnonymousClassInitialiser.java new file mode 100644 index 0000000000..8e15726db6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IAnonymousClassInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.AnonymousClass; + +import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypeInitialiser; + +public interface IAnonymousClassInitialiser extends IMemberContainerInitialiser, ITypeInitialiser { + @Override + public AnonymousClass instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassInitialiser.java new file mode 100644 index 0000000000..7f73eb9305 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.Class; +import org.emftext.language.java.types.TypeReference; + +public interface IClassInitialiser extends IConcreteClassifierInitialiser, IImplementorInitialiser { + @Override + public Class instantiate(); + + public default boolean setDefaultExtends(Class cls, TypeReference defExt) { + cls.setDefaultExtends(defExt); + return (defExt == null && cls.getDefaultExtends() == null) || cls.getDefaultExtends().equals(defExt); + } + + public default boolean setExtends(Class cls, TypeReference ext) { + cls.setExtends(ext); + return (ext == null && cls.getExtends() == null) || cls.getExtends().equals(ext); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassifierInitialiser.java new file mode 100644 index 0000000000..67ca490b91 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IClassifierInitialiser.java @@ -0,0 +1,93 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.imports.Import; +import org.emftext.language.java.imports.PackageImport; + +import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypeInitialiser; + +/** + * An interface meant for {@link IInitialiser} implementors that are supposed to + * create {@link Classifier} instances.
+ *
+ * Note: The methods addImport/addPackageImport of {@link Classifier} add the + * imports to its {@link CompilationUnit}. {@link Classifier} has no attributes + * itself. The same holds for their corresponding methods in this + * initialiser.. Use the methods {@link #canAddImports(Classifier)} and + * {@link #canAddPackageImports(Classifier)} to determine, whether certain + * imports can be added. + * + * @author Alp Torac Genc + */ + +public interface IClassifierInitialiser extends ITypeInitialiser, IReferenceableElementInitialiser { + @Override + public Classifier instantiate(); + + /** + * Adds the given {@link Import} to the {@link CompilationUnit} containing the + * given {@link Classifier}.
+ *
+ * Attempting to add null imports will return true, since there is no + * modification to perform. + * + * @see {@link IClassifierInitialiser} + */ + public default boolean addImport(Classifier cls, Import imp) { + if (imp != null) { + if (!this.canAddImports(cls)) { + return false; + } + var cu = cls.getContainingCompilationUnit(); + cu.getImports().add(imp); + return cu.getImports().stream().anyMatch((i) -> i.equals(imp)); + } + return true; + } + + public default boolean addImports(Classifier cls, Import[] imps) { + return this.doMultipleModifications(cls, imps, this::addImport); + } + + /** + * Whether {@link Import}s can be added via + * {@link #addImport(Classifier, Import)} + */ + public default boolean canAddImports(Classifier cls) { + return cls.getContainingCompilationUnit() != null; + } + + /** + * Whether {@link PackageImport}s can be added via + * {@link #addPackageImport(Classifier, PackageImport)} + */ + public default boolean canAddPackageImports(Classifier cls) { + return cls.getContainingCompilationUnit() != null; + } + + /** + * Adds the given {@link PackageImport} to the {@link CompilationUnit} + * containing the given {@link Classifier}.
+ *
+ * Attempting to add null package imports will return true, since there is no + * modification to perform. + * + * @see {@link IClassifierInitialiser} + */ + public default boolean addPackageImport(Classifier cls, PackageImport imp) { + if (imp != null) { + if (!this.canAddPackageImports(cls)) { + return false; + } + var cu = cls.getContainingCompilationUnit(); + cu.getImports().add(imp); + return cu.getImports().stream().anyMatch((i) -> i.equals(imp)); + } + return true; + } + + public default boolean addPackageImports(Classifier cls, PackageImport[] imps) { + return this.doMultipleModifications(cls, imps, this::addPackageImport); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IConcreteClassifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IConcreteClassifierInitialiser.java new file mode 100644 index 0000000000..8026bc4ded --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IConcreteClassifierInitialiser.java @@ -0,0 +1,39 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.emftext.language.java.containers.Package; + +import cipm.consistency.initialisers.jamopp.generics.ITypeParametrizableInitialiser; +import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser; +import cipm.consistency.initialisers.jamopp.members.IMemberInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser; +import cipm.consistency.initialisers.jamopp.statements.IStatementInitialiser; + +/** + * An interface meant for {@link IInitialiser} implementors that are supposed to + * create {@link ConcreteClassifier} instances.
+ *
+ * Note: {@link #setPackage(ConcreteClassifier, Package)} does not add the + * given {@link ConcreteClassifier} to the given {@link Package}. + * + * @author Alp Torac Genc + * + */ +public interface IConcreteClassifierInitialiser extends IAnnotableAndModifiableInitialiser, IMemberContainerInitialiser, + IMemberInitialiser, IStatementInitialiser, IClassifierInitialiser, ITypeParametrizableInitialiser { + + @Override + public ConcreteClassifier instantiate(); + + /** + * Sets the package of cls as pac.
+ *
+ * Note: DOES NOT modify the classifiers contained by pac. + * + * @see {@link IConcreteClassifierInitialiser} + */ + public default boolean setPackage(ConcreteClassifier cls, Package pac) { + cls.setPackage(pac); + return (pac == null && cls.getPackage() == null) || cls.getPackage().equals(pac); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IEnumerationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IEnumerationInitialiser.java new file mode 100644 index 0000000000..3da9091378 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IEnumerationInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.Enumeration; +import org.emftext.language.java.members.EnumConstant; + +public interface IEnumerationInitialiser extends IConcreteClassifierInitialiser, IImplementorInitialiser { + @Override + public Enumeration instantiate(); + + public default boolean addConstant(Enumeration enm, EnumConstant cnst) { + if (cnst != null) { + enm.getConstants().add(cnst); + return enm.getConstants().contains(cnst) && enm.getContainedConstant(cnst.getName()).equals(cnst); + } + return true; + } + + public default boolean addConstants(Enumeration enm, EnumConstant[] cnsts) { + return this.doMultipleModifications(enm, cnsts, this::addConstant); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IImplementorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IImplementorInitialiser.java new file mode 100644 index 0000000000..f0fbdebd03 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IImplementorInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.Implementor; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IImplementorInitialiser extends ICommentableInitialiser { + @Override + public Implementor instantiate(); + + public default boolean addImplements(Implementor implementor, TypeReference impls) { + if (impls != null) { + implementor.getImplements().add(impls); + return implementor.getImplements().contains(impls); + } + return true; + } + + public default boolean addImplements(Implementor implementor, TypeReference[] implsArr) { + return this.doMultipleModifications(implementor, implsArr, this::addImplements); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IInterfaceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IInterfaceInitialiser.java new file mode 100644 index 0000000000..33bafa69ce --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/IInterfaceInitialiser.java @@ -0,0 +1,33 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.Interface; +import org.emftext.language.java.types.TypeReference; + +public interface IInterfaceInitialiser extends IConcreteClassifierInitialiser { + @Override + public Interface instantiate(); + + public default boolean addDefaultExtends(Interface intfc, TypeReference defExt) { + if (defExt != null) { + intfc.getDefaultExtends().add(defExt); + return intfc.getDefaultExtends().contains(defExt); + } + return true; + } + + public default boolean addDefaultExtends(Interface intfc, TypeReference[] defExts) { + return this.doMultipleModifications(intfc, defExts, this::addDefaultExtends); + } + + public default boolean addExtends(Interface intfc, TypeReference ext) { + if (ext != null) { + intfc.getExtends().add(ext); + return intfc.getExtends().contains(ext); + } + return true; + } + + public default boolean addExtends(Interface intfc, TypeReference[] exts) { + return this.doMultipleModifications(intfc, exts, this::addExtends); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/InterfaceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/InterfaceInitialiser.java new file mode 100644 index 0000000000..da4fdb2809 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/InterfaceInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.classifiers; + +import org.emftext.language.java.classifiers.ClassifiersFactory; +import org.emftext.language.java.classifiers.Interface; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class InterfaceInitialiser extends AbstractInitialiserBase implements IInterfaceInitialiser { + @Override + public Interface instantiate() { + var fac = ClassifiersFactory.eINSTANCE; + return fac.createInterface(); + } + + @Override + public InterfaceInitialiser newInitialiser() { + return new InterfaceInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/package-info.java new file mode 100644 index 0000000000..d93f4a1234 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/classifiers/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.classifiers}. + */ +package cipm.consistency.initialisers.jamopp.classifiers; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/CommonsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/CommonsInitialiserPackage.java new file mode 100644 index 0000000000..f8c470efe3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/CommonsInitialiserPackage.java @@ -0,0 +1,15 @@ +package cipm.consistency.initialisers.jamopp.commons; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class CommonsInitialiserPackage implements IInitialiserPackage { + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { ICommentableInitialiser.class, INamedElementInitialiser.class, + INamespaceAwareElementInitialiser.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/ICommentableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/ICommentableInitialiser.java new file mode 100644 index 0000000000..4a7aabc787 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/ICommentableInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.commons; + +import org.emftext.language.java.commons.Commentable; + +import cipm.consistency.initialisers.jamopp.IJaMoPPEObjectInitialiser; + +public interface ICommentableInitialiser extends IJaMoPPEObjectInitialiser { + @Override + public Commentable instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamedElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamedElementInitialiser.java new file mode 100644 index 0000000000..ea1de18495 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamedElementInitialiser.java @@ -0,0 +1,49 @@ +package cipm.consistency.initialisers.jamopp.commons; + +import org.emftext.language.java.commons.NamedElement; + +/** + * An interface meant to be implemented by initialisers, which are meant to + * create {@link NamedElement} instances.
+ *
+ * Since some {@link NamedElement} implementations' name attribute cannot be + * modified as expected, {@link #canSetName(NamedElement)} can be used to + * determine the modifiability of the name attribute in implementors. + * + * @author Alp Torac Genc + */ +public interface INamedElementInitialiser extends ICommentableInitialiser { + @Override + public NamedElement instantiate(); + + /** + * Sets the name attribute of the given element to the given name, if its name + * can be set.
+ *
+ * Note: If {@code name == null}, the return value will be true, regardless of + * the name attribute being modifiable. + * + * @see {@link #canSetName(NamedElement)} + */ + public default boolean setName(NamedElement ne, String name) { + if (!this.canSetName(ne)) { + return false; + } + ne.setName(name); + return (name == null && ne.getName() == null) || ne.getName().equals(name); + } + + /** + * Extracted from {@link #setName(NamedElement, String)} because there are + * implementors, whose name cannot be modified via + * {@link #setName(NamedElement, String)}. This way, such implementors can + * override this method to indicate, whether their name attribute can be + * modified. + * + * @return Whether {@link #setName(NamedElement, String)} can be used to modify + * the given {@link NamedElement} instance ne. + */ + public default boolean canSetName(NamedElement ne) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamespaceAwareElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamespaceAwareElementInitialiser.java new file mode 100644 index 0000000000..bb739cddf0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/INamespaceAwareElementInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.commons; + +import org.emftext.language.java.commons.NamespaceAwareElement; + +public interface INamespaceAwareElementInitialiser extends ICommentableInitialiser { + @Override + public NamespaceAwareElement instantiate(); + + public default boolean addNamespaces(NamespaceAwareElement nae, String[] namespaces) { + return this.doMultipleModifications(nae, namespaces, this::addNamespace); + } + + public default boolean addNamespace(NamespaceAwareElement nae, String namespace) { + if (namespace != null) { + nae.getNamespaces().add(namespace); + return nae.getNamespaces().contains(namespace); + } + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/package-info.java new file mode 100644 index 0000000000..18bb567649 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/commons/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.commons}. + */ +package cipm.consistency.initialisers.jamopp.commons; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/CompilationUnitInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/CompilationUnitInitialiser.java new file mode 100644 index 0000000000..74180fcb86 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/CompilationUnitInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.containers.CompilationUnit; +import org.emftext.language.java.containers.ContainersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class CompilationUnitInitialiser extends AbstractInitialiserBase implements ICompilationUnitInitialiser { + @Override + public CompilationUnit instantiate() { + var fac = ContainersFactory.eINSTANCE; + return fac.createCompilationUnit(); + } + + @Override + public ICompilationUnitInitialiser newInitialiser() { + return new CompilationUnitInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ContainersInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ContainersInitialiserPackage.java new file mode 100644 index 0000000000..e4297bcd3a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ContainersInitialiserPackage.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ContainersInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new CompilationUnitInitialiser(), new EmptyModelInitialiser(), + new ModuleInitialiser(), new PackageInitialiser() }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { ICompilationUnitInitialiser.class, IEmptyModelInitialiser.class, + IJavaRootInitialiser.class, IModuleInitialiser.class, IPackageInitialiser.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/EmptyModelInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/EmptyModelInitialiser.java new file mode 100644 index 0000000000..1589d25ca9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/EmptyModelInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.containers.ContainersFactory; +import org.emftext.language.java.containers.EmptyModel; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class EmptyModelInitialiser extends AbstractInitialiserBase implements IEmptyModelInitialiser { + @Override + public IEmptyModelInitialiser newInitialiser() { + return new EmptyModelInitialiser(); + } + + @Override + public EmptyModel instantiate() { + return ContainersFactory.eINSTANCE.createEmptyModel(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ICompilationUnitInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ICompilationUnitInitialiser.java new file mode 100644 index 0000000000..67414db54f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ICompilationUnitInitialiser.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.emftext.language.java.containers.CompilationUnit; + +public interface ICompilationUnitInitialiser extends IJavaRootInitialiser { + @Override + public CompilationUnit instantiate(); + + public default boolean addClassifier(CompilationUnit cu, ConcreteClassifier cls) { + if (cls != null) { + cu.getClassifiers().add(cls); + return cu.getClassifiers().contains(cls) && cu.getContainedClassifier(cls.getQualifiedName()) != null + && cu.getContainedClassifier(cls.getQualifiedName()).equals(cls); + } + return true; + } + + public default boolean addClassifiers(CompilationUnit cu, ConcreteClassifier[] clss) { + return this.doMultipleModifications(cu, clss, this::addClassifier); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IEmptyModelInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IEmptyModelInitialiser.java new file mode 100644 index 0000000000..3f85c41b3f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IEmptyModelInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.containers.EmptyModel; + +public interface IEmptyModelInitialiser extends IJavaRootInitialiser { + @Override + public EmptyModel instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IJavaRootInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IJavaRootInitialiser.java new file mode 100644 index 0000000000..ba6b8d2941 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IJavaRootInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.containers.JavaRoot; +import org.emftext.language.java.containers.Origin; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; +import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser; +import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser; +import cipm.consistency.initialisers.jamopp.imports.IImportingElementInitialiser; + +public interface IJavaRootInitialiser extends INamedElementInitialiser, INamespaceAwareElementInitialiser, + IAnnotableInitialiser, IImportingElementInitialiser { + @Override + public JavaRoot instantiate(); + + public default boolean setOrigin(JavaRoot jr, Origin origin) { + jr.setOrigin(origin); + return (origin == null && jr.getOrigin() == null) || jr.getOrigin().equals(origin); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IModuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IModuleInitialiser.java new file mode 100644 index 0000000000..2509f04c44 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IModuleInitialiser.java @@ -0,0 +1,40 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.containers.Module; +import org.emftext.language.java.containers.Package; +import org.emftext.language.java.modifiers.Open; +import org.emftext.language.java.modules.ModuleDirective; + +public interface IModuleInitialiser extends IJavaRootInitialiser { + @Override + public Module instantiate(); + + public default boolean setOpen(Module mod, Open open) { + mod.setOpen(open); + return (open == null && mod.getOpen() == null) || mod.getOpen().equals(open); + } + + public default boolean addTarget(Module mod, ModuleDirective target) { + if (target != null) { + mod.getTarget().add(target); + return mod.getTarget().contains(target); + } + return true; + } + + public default boolean addTargets(Module mod, ModuleDirective[] targets) { + return this.doMultipleModifications(mod, targets, this::addTarget); + } + + public default boolean addPackage(Module mod, Package pac) { + if (pac != null) { + mod.getPackages().add(pac); + return mod.getPackages().contains(pac); + } + return true; + } + + public default boolean addPackages(Module mod, Package[] pacs) { + return this.doMultipleModifications(mod, pacs, this::addPackage); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IPackageInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IPackageInitialiser.java new file mode 100644 index 0000000000..a7e605cbf5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/IPackageInitialiser.java @@ -0,0 +1,54 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.emftext.language.java.commons.NamedElement; +import org.emftext.language.java.containers.Module; +import org.emftext.language.java.containers.Package; + +import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser; + +/** + * An interface meant to be implemented by {@link IInitialiser} implementors + * that are supposed to create {@link Package} instances.
+ *
+ * Note: Package names {@code package.getName()} is supposed to be left + * empty. Changing it HAS NO EFFECT on the name of the package in similarity + * checking. Package's name consists of the concatenation of its namespaces with + * dots ".". Therefore, use + * {@link #addNamespace(org.emftext.language.java.commons.NamespaceAwareElement, String)} + * to modify its name. + * + * @author Alp Torac Genc + */ +public interface IPackageInitialiser extends IJavaRootInitialiser, IReferenceableElementInitialiser { + @Override + public Package instantiate(); + + /** + * @return False, because the return value of {@code package.getName()} is + * determined by the namespaces of the package instead. + * + * @see {@link IPackageInitialiser} + */ + @Override + public default boolean canSetName(NamedElement ne) { + return false; + } + + public default boolean setModule(Package pac, Module mod) { + pac.setModule(mod); + return (mod == null && pac.getModule() == null) || pac.getModule().equals(mod); + } + + public default boolean addClassifier(Package pac, ConcreteClassifier cls) { + if (cls != null) { + pac.getClassifiers().add(cls); + return pac.getClassifiers().contains(cls); + } + return true; + } + + public default boolean addClassifiers(Package pac, ConcreteClassifier[] clss) { + return this.doMultipleModifications(pac, clss, this::addClassifier); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ModuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ModuleInitialiser.java new file mode 100644 index 0000000000..b3fae657d8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/ModuleInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.containers.ContainersFactory; +import org.emftext.language.java.containers.Module; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ModuleInitialiser extends AbstractInitialiserBase implements IModuleInitialiser { + @Override + public Module instantiate() { + var fac = ContainersFactory.eINSTANCE; + return fac.createModule(); + } + + @Override + public IModuleInitialiser newInitialiser() { + return new ModuleInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/PackageInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/PackageInitialiser.java new file mode 100644 index 0000000000..d7703c1dc0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/PackageInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.containers; + +import org.emftext.language.java.containers.ContainersFactory; +import org.emftext.language.java.containers.Package; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PackageInitialiser extends AbstractInitialiserBase implements IPackageInitialiser { + @Override + public Package instantiate() { + var fac = ContainersFactory.eINSTANCE; + return fac.createPackage(); + } + + @Override + public IPackageInitialiser newInitialiser() { + return new PackageInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/package-info.java new file mode 100644 index 0000000000..38e5ae774d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/containers/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.containers}. + */ +package cipm.consistency.initialisers.jamopp.containers; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AdditiveExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AdditiveExpressionInitialiser.java new file mode 100644 index 0000000000..ff852e645e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AdditiveExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.expressions.AdditiveExpression; + +public class AdditiveExpressionInitialiser extends AbstractInitialiserBase implements IAdditiveExpressionInitialiser { + @Override + public IAdditiveExpressionInitialiser newInitialiser() { + return new AdditiveExpressionInitialiser(); + } + + @Override + public AdditiveExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createAdditiveExpression(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AndExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AndExpressionInitialiser.java new file mode 100644 index 0000000000..2aea4bd856 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AndExpressionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.AndExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AndExpressionInitialiser extends AbstractInitialiserBase implements IAndExpressionInitialiser { + @Override + public IAndExpressionInitialiser newInitialiser() { + return new AndExpressionInitialiser(); + } + + @Override + public AndExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createAndExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ArrayConstructorReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ArrayConstructorReferenceExpressionInitialiser.java new file mode 100644 index 0000000000..d93075cbea --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ArrayConstructorReferenceExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ArrayConstructorReferenceExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ArrayConstructorReferenceExpressionInitialiser extends AbstractInitialiserBase + implements IArrayConstructorReferenceExpressionInitialiser { + @Override + public IArrayConstructorReferenceExpressionInitialiser newInitialiser() { + return new ArrayConstructorReferenceExpressionInitialiser(); + } + + @Override + public ArrayConstructorReferenceExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createArrayConstructorReferenceExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AssignmentExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AssignmentExpressionInitialiser.java new file mode 100644 index 0000000000..128b436f8f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/AssignmentExpressionInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.expressions.AssignmentExpression; + +public class AssignmentExpressionInitialiser extends AbstractInitialiserBase + implements IAssignmentExpressionInitialiser { + @Override + public IAssignmentExpressionInitialiser newInitialiser() { + return new AssignmentExpressionInitialiser(); + } + + @Override + public AssignmentExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createAssignmentExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/CastExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/CastExpressionInitialiser.java new file mode 100644 index 0000000000..d92d254e8a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/CastExpressionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.CastExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class CastExpressionInitialiser extends AbstractInitialiserBase implements ICastExpressionInitialiser { + @Override + public ICastExpressionInitialiser newInitialiser() { + return new CastExpressionInitialiser(); + } + + @Override + public CastExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createCastExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ClassTypeConstructorReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ClassTypeConstructorReferenceExpressionInitialiser.java new file mode 100644 index 0000000000..79ac600d35 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ClassTypeConstructorReferenceExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ClassTypeConstructorReferenceExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ClassTypeConstructorReferenceExpressionInitialiser extends AbstractInitialiserBase + implements IClassTypeConstructorReferenceExpressionInitialiser { + @Override + public IClassTypeConstructorReferenceExpressionInitialiser newInitialiser() { + return new ClassTypeConstructorReferenceExpressionInitialiser(); + } + + @Override + public ClassTypeConstructorReferenceExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createClassTypeConstructorReferenceExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalAndExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalAndExpressionInitialiser.java new file mode 100644 index 0000000000..00db270c26 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalAndExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ConditionalAndExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ConditionalAndExpressionInitialiser extends AbstractInitialiserBase + implements IConditionalAndExpressionInitialiser { + @Override + public IConditionalAndExpressionInitialiser newInitialiser() { + return new ConditionalAndExpressionInitialiser(); + } + + @Override + public ConditionalAndExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createConditionalAndExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalExpressionInitialiser.java new file mode 100644 index 0000000000..4f49051bf7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ConditionalExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ConditionalExpressionInitialiser extends AbstractInitialiserBase + implements IConditionalExpressionInitialiser { + @Override + public IConditionalExpressionInitialiser newInitialiser() { + return new ConditionalExpressionInitialiser(); + } + + @Override + public ConditionalExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createConditionalExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalOrExpressionInitialiser.java new file mode 100644 index 0000000000..5fd7e9b375 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ConditionalOrExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ConditionalOrExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ConditionalOrExpressionInitialiser extends AbstractInitialiserBase + implements IConditionalOrExpressionInitialiser { + @Override + public IConditionalOrExpressionInitialiser newInitialiser() { + return new ConditionalOrExpressionInitialiser(); + } + + @Override + public ConditionalOrExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createConditionalOrExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/EqualityExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/EqualityExpressionInitialiser.java new file mode 100644 index 0000000000..8658bbe0e2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/EqualityExpressionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.EqualityExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class EqualityExpressionInitialiser extends AbstractInitialiserBase implements IEqualityExpressionInitialiser { + @Override + public IEqualityExpressionInitialiser newInitialiser() { + return new EqualityExpressionInitialiser(); + } + + @Override + public EqualityExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createEqualityExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExclusiveOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExclusiveOrExpressionInitialiser.java new file mode 100644 index 0000000000..81695281a5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExclusiveOrExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExclusiveOrExpression; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ExclusiveOrExpressionInitialiser extends AbstractInitialiserBase + implements IExclusiveOrExpressionInitialiser { + @Override + public IExclusiveOrExpressionInitialiser newInitialiser() { + return new ExclusiveOrExpressionInitialiser(); + } + + @Override + public ExclusiveOrExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createExclusiveOrExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExplicitlyTypedLambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExplicitlyTypedLambdaParametersInitialiser.java new file mode 100644 index 0000000000..7de0a674fb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExplicitlyTypedLambdaParametersInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExplicitlyTypedLambdaParameters; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ExplicitlyTypedLambdaParametersInitialiser extends AbstractInitialiserBase + implements IExplicitlyTypedLambdaParametersInitialiser { + @Override + public IExplicitlyTypedLambdaParametersInitialiser newInitialiser() { + return new ExplicitlyTypedLambdaParametersInitialiser(); + } + + @Override + public ExplicitlyTypedLambdaParameters instantiate() { + return ExpressionsFactory.eINSTANCE.createExplicitlyTypedLambdaParameters(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionListInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionListInitialiser.java new file mode 100644 index 0000000000..26697a7211 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionListInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionList; +import org.emftext.language.java.expressions.ExpressionsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ExpressionListInitialiser extends AbstractInitialiserBase implements IExpressionListInitialiser { + @Override + public IExpressionListInitialiser newInitialiser() { + return new ExpressionListInitialiser(); + } + + @Override + public ExpressionList instantiate() { + return ExpressionsFactory.eINSTANCE.createExpressionList(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionsInitialiserPackage.java new file mode 100644 index 0000000000..73461eb5aa --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ExpressionsInitialiserPackage.java @@ -0,0 +1,54 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ExpressionsInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new AdditiveExpressionInitialiser(), new AndExpressionInitialiser(), + new ArrayConstructorReferenceExpressionInitialiser(), new AssignmentExpressionInitialiser(), + new CastExpressionInitialiser(), new ClassTypeConstructorReferenceExpressionInitialiser(), + new ConditionalAndExpressionInitialiser(), new ConditionalExpressionInitialiser(), + new ConditionalOrExpressionInitialiser(), new EqualityExpressionInitialiser(), + new ExclusiveOrExpressionInitialiser(), new ExplicitlyTypedLambdaParametersInitialiser(), + new ExpressionListInitialiser(), new ImplicitlyTypedLambdaParametersInitialiser(), + new InclusiveOrExpressionInitialiser(), new InstanceOfExpressionInitialiser(), + new LambdaExpressionInitialiser(), new MultiplicativeExpressionInitialiser(), + new NestedExpressionInitialiser(), new PrefixUnaryModificationExpressionInitialiser(), + new PrimaryExpressionReferenceExpressionInitialiser(), new RelationExpressionInitialiser(), + new ShiftExpressionInitialiser(), new SingleImplicitLambdaParameterInitialiser(), + new SuffixUnaryModificationExpressionInitialiser(), new UnaryExpressionInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAdditiveExpressionChildInitialiser.class, + IAdditiveExpressionInitialiser.class, IAndExpressionChildInitialiser.class, + IAndExpressionInitialiser.class, IArrayConstructorReferenceExpressionInitialiser.class, + IAssignmentExpressionChildInitialiser.class, IAssignmentExpressionInitialiser.class, + ICastExpressionInitialiser.class, IClassTypeConstructorReferenceExpressionInitialiser.class, + IConditionalAndExpressionChildInitialiser.class, IConditionalAndExpressionInitialiser.class, + IConditionalExpressionChildInitialiser.class, IConditionalExpressionInitialiser.class, + IConditionalOrExpressionChildInitialiser.class, IConditionalOrExpressionInitialiser.class, + IEqualityExpressionChildInitialiser.class, IEqualityExpressionInitialiser.class, + IExclusiveOrExpressionChildInitialiser.class, IExclusiveOrExpressionInitialiser.class, + IExplicitlyTypedLambdaParametersInitialiser.class, IExpressionInitialiser.class, + IExpressionListInitialiser.class, IImplicitlyTypedLambdaParametersInitialiser.class, + IInclusiveOrExpressionChildInitialiser.class, IInclusiveOrExpressionInitialiser.class, + IInstanceOfExpressionChildInitialiser.class, IInstanceOfExpressionInitialiser.class, + ILambdaBodyInitialiser.class, ILambdaExpressionInitialiser.class, ILambdaParametersInitialiser.class, + IMethodReferenceExpressionChildInitialiser.class, IMethodReferenceExpressionInitialiser.class, + IMultiplicativeExpressionChildInitialiser.class, IMultiplicativeExpressionInitialiser.class, + INestedExpressionInitialiser.class, IPrefixUnaryModificationExpressionInitialiser.class, + IPrimaryExpressionInitialiser.class, IPrimaryExpressionReferenceExpressionInitialiser.class, + IRelationExpressionChildInitialiser.class, IRelationExpressionInitialiser.class, + IShiftExpressionChildInitialiser.class, IShiftExpressionInitialiser.class, + ISingleImplicitLambdaParameterInitialiser.class, ISuffixUnaryModificationExpressionInitialiser.class, + IUnaryExpressionChildInitialiser.class, IUnaryExpressionInitialiser.class, + IUnaryModificationExpressionChildInitialiser.class, IUnaryModificationExpressionInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionChildInitialiser.java new file mode 100644 index 0000000000..979101f307 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.AdditiveExpressionChild; + +public interface IAdditiveExpressionChildInitialiser extends IShiftExpressionChildInitialiser { + @Override + public AdditiveExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionInitialiser.java new file mode 100644 index 0000000000..169acc2732 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAdditiveExpressionInitialiser.java @@ -0,0 +1,34 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.AdditiveExpression; +import org.emftext.language.java.expressions.AdditiveExpressionChild; +import org.emftext.language.java.operators.AdditiveOperator; + +public interface IAdditiveExpressionInitialiser extends IShiftExpressionChildInitialiser { + @Override + public AdditiveExpression instantiate(); + + public default boolean addAdditiveOperator(AdditiveExpression ae, AdditiveOperator op) { + if (op != null) { + ae.getAdditiveOperators().add(op); + return ae.getAdditiveOperators().contains(op); + } + return true; + } + + public default boolean addAdditiveOperators(AdditiveExpression ae, AdditiveOperator[] ops) { + return this.doMultipleModifications(ae, ops, this::addAdditiveOperator); + } + + public default boolean addChild(AdditiveExpression ae, AdditiveExpressionChild child) { + if (child != null) { + ae.getChildren().add(child); + return ae.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(AdditiveExpression ae, AdditiveExpressionChild[] children) { + return this.doMultipleModifications(ae, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionChildInitialiser.java new file mode 100644 index 0000000000..a7343a1151 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.AndExpressionChild; + +public interface IAndExpressionChildInitialiser extends IExclusiveOrExpressionChildInitialiser { + @Override + public AndExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionInitialiser.java new file mode 100644 index 0000000000..2b7f69aa32 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAndExpressionInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.AndExpression; +import org.emftext.language.java.expressions.AndExpressionChild; + +public interface IAndExpressionInitialiser extends IExclusiveOrExpressionChildInitialiser { + @Override + public AndExpression instantiate(); + + public default boolean addChild(AndExpression ae, AndExpressionChild child) { + if (child != null) { + ae.getChildren().add(child); + return ae.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(AndExpression ae, AndExpressionChild[] children) { + return this.doMultipleModifications(ae, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IArrayConstructorReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IArrayConstructorReferenceExpressionInitialiser.java new file mode 100644 index 0000000000..8a6367ab26 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IArrayConstructorReferenceExpressionInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ArrayConstructorReferenceExpression; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IArrayConstructorReferenceExpressionInitialiser + extends IMethodReferenceExpressionInitialiser, ITypedElementInitialiser { + @Override + public ArrayConstructorReferenceExpression instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionChildInitialiser.java new file mode 100644 index 0000000000..1b8e2f5928 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionChildInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.AssignmentExpressionChild; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotationValueInitialiser; + +public interface IAssignmentExpressionChildInitialiser extends IAnnotationValueInitialiser, IExpressionInitialiser { + @Override + public AssignmentExpressionChild instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionInitialiser.java new file mode 100644 index 0000000000..89fbd8b5b5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IAssignmentExpressionInitialiser.java @@ -0,0 +1,26 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.AssignmentExpression; +import org.emftext.language.java.expressions.AssignmentExpressionChild; +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.operators.AssignmentOperator; + +public interface IAssignmentExpressionInitialiser extends IExpressionInitialiser { + @Override + public AssignmentExpression instantiate(); + + public default boolean setAssignmentOperator(AssignmentExpression ae, AssignmentOperator op) { + ae.setAssignmentOperator(op); + return (op == null && ae.getAssignmentOperator() == null) || ae.getAssignmentOperator().equals(op); + } + + public default boolean setChild(AssignmentExpression ae, AssignmentExpressionChild child) { + ae.setChild(child); + return (child == null && ae.getChild() == null) || ae.getChild().equals(child); + } + + public default boolean setValue(AssignmentExpression ae, Expression val) { + ae.setValue(val); + return (val == null && ae.getValue() == null) || ae.getValue().equals(val); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ICastExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ICastExpressionInitialiser.java new file mode 100644 index 0000000000..c77cfb6296 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ICastExpressionInitialiser.java @@ -0,0 +1,49 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.CastExpression; +import org.emftext.language.java.expressions.MultiplicativeExpressionChild; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +/** + * An interface meant to be implemented by initialisers, which are supposed to + * create {@link CastExpression} instances.
+ *
+ * For a {@link CastExpression} instance ce, {@code ce.getChild()} has the same + * return value as {@code ce.getGeneralChild()}, it merely returns the child + * attribute as {@link Expression} rather than + * {@link MultiplicativeExpressionChild}.
+ *
+ * Similarly, {@code ce.setGeneralChild(...)} is equivalent to + * {@code ce.setChild(...)}, just with a more general parameter type. + * + * @author Alp Torac Genc + */ +public interface ICastExpressionInitialiser + extends ITypedElementInitialiser, IUnaryModificationExpressionChildInitialiser { + @Override + public CastExpression instantiate(); + + public default boolean addAdditionalBound(CastExpression ce, TypeReference additionalBounds) { + if (additionalBounds != null) { + ce.getAdditionalBounds().add(additionalBounds); + return ce.getAdditionalBounds().contains(additionalBounds); + } + return true; + } + + public default boolean addAdditionalBounds(CastExpression ce, TypeReference[] additionalBoundsArr) { + return this.doMultipleModifications(ce, additionalBoundsArr, this::addAdditionalBound); + } + + /** + * Adds the given child to ce. Uses {@code ce.setChild(...)} to do so. + * + * @see {@link ICastExpressionInitialiser} + */ + public default boolean setChild(CastExpression ce, MultiplicativeExpressionChild child) { + ce.setChild(child); + return (child == null && ce.getChild() == null) || ce.getChild().equals(child); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IClassTypeConstructorReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IClassTypeConstructorReferenceExpressionInitialiser.java new file mode 100644 index 0000000000..9f3c882f1b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IClassTypeConstructorReferenceExpressionInitialiser.java @@ -0,0 +1,12 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ClassTypeConstructorReferenceExpression; + +import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IClassTypeConstructorReferenceExpressionInitialiser + extends ICallTypeArgumentableInitialiser, IMethodReferenceExpressionInitialiser, ITypedElementInitialiser { + @Override + public ClassTypeConstructorReferenceExpression instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionChildInitialiser.java new file mode 100644 index 0000000000..3386c67b3e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ConditionalAndExpressionChild; + +public interface IConditionalAndExpressionChildInitialiser extends IConditionalOrExpressionChildInitialiser { + @Override + public ConditionalAndExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionInitialiser.java new file mode 100644 index 0000000000..6cfc77f3b1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalAndExpressionInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ConditionalAndExpression; +import org.emftext.language.java.expressions.ConditionalAndExpressionChild; + +public interface IConditionalAndExpressionInitialiser extends IConditionalOrExpressionChildInitialiser { + @Override + public ConditionalAndExpression instantiate(); + + public default boolean addChild(ConditionalAndExpression cae, ConditionalAndExpressionChild child) { + if (child != null) { + cae.getChildren().add(child); + return cae.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(ConditionalAndExpression cae, ConditionalAndExpressionChild[] children) { + return this.doMultipleModifications(cae, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionChildInitialiser.java new file mode 100644 index 0000000000..6ae4d3b1cc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ConditionalExpressionChild; + +public interface IConditionalExpressionChildInitialiser extends IAssignmentExpressionChildInitialiser { + @Override + public ConditionalExpressionChild instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionInitialiser.java new file mode 100644 index 0000000000..00f51ddb77 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalExpressionInitialiser.java @@ -0,0 +1,32 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.AssignmentExpressionChild; +import org.emftext.language.java.expressions.ConditionalExpression; +import org.emftext.language.java.expressions.ConditionalExpressionChild; +import org.emftext.language.java.expressions.Expression; + +public interface IConditionalExpressionInitialiser extends IAssignmentExpressionChildInitialiser { + @Override + public ConditionalExpression instantiate(); + + public default boolean setChild(ConditionalExpression ce, ConditionalExpressionChild child) { + ce.setChild(child); + return (child == null && ce.getChild() == null) || ce.getChild().equals(child); + } + + public default boolean setExpressionChild(ConditionalExpression ce, AssignmentExpressionChild exprChild) { + ce.setExpressionChild(exprChild); + return (exprChild == null && ce.getExpressionElse() == null) || ce.getExpressionElse().equals(exprChild); + } + + public default boolean setExpressionIf(ConditionalExpression ce, Expression exprIf) { + ce.setExpressionIf(exprIf); + return (exprIf == null && ce.getExpressionIf() == null) || ce.getExpressionIf().equals(exprIf); + } + + public default boolean setGeneralExpressionElse(ConditionalExpression ce, Expression generalExprElse) { + ce.setGeneralExpressionElse(generalExprElse); + return (generalExprElse == null && ce.getGeneralExpressionElse() == null) + || ce.getGeneralExpressionElse().equals(generalExprElse); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionChildInitialiser.java new file mode 100644 index 0000000000..52c8f44f9d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ConditionalOrExpressionChild; + +public interface IConditionalOrExpressionChildInitialiser extends IConditionalExpressionChildInitialiser { + @Override + public ConditionalOrExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionInitialiser.java new file mode 100644 index 0000000000..fd5400d256 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IConditionalOrExpressionInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ConditionalOrExpression; +import org.emftext.language.java.expressions.ConditionalOrExpressionChild; + +public interface IConditionalOrExpressionInitialiser extends IConditionalExpressionChildInitialiser { + @Override + public ConditionalOrExpression instantiate(); + + public default boolean addChild(ConditionalOrExpression coe, ConditionalOrExpressionChild child) { + if (child != null) { + coe.getChildren().add(child); + return coe.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(ConditionalOrExpression coe, ConditionalOrExpressionChild[] children) { + return this.doMultipleModifications(coe, children, this::addChild); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionChildInitialiser.java new file mode 100644 index 0000000000..783d40ebf0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.EqualityExpressionChild; + +public interface IEqualityExpressionChildInitialiser extends IAndExpressionChildInitialiser { + @Override + public EqualityExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionInitialiser.java new file mode 100644 index 0000000000..f71c43da54 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IEqualityExpressionInitialiser.java @@ -0,0 +1,34 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.EqualityExpression; +import org.emftext.language.java.expressions.EqualityExpressionChild; +import org.emftext.language.java.operators.EqualityOperator; + +public interface IEqualityExpressionInitialiser extends IAndExpressionChildInitialiser { + @Override + public EqualityExpression instantiate(); + + public default boolean addEqualityOperator(EqualityExpression eqEx, EqualityOperator op) { + if (op != null) { + eqEx.getEqualityOperators().add(op); + return eqEx.getEqualityOperators().contains(op); + } + return true; + } + + public default boolean addChild(EqualityExpression eqEx, EqualityExpressionChild child) { + if (child != null) { + eqEx.getChildren().add(child); + return eqEx.getChildren().contains(child); + } + return true; + } + + public default boolean addEqualityOperators(EqualityExpression eqEx, EqualityOperator[] ops) { + return this.doMultipleModifications(eqEx, ops, this::addEqualityOperator); + } + + public default boolean addChildren(EqualityExpression eqEx, EqualityExpressionChild[] children) { + return this.doMultipleModifications(eqEx, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionChildInitialiser.java new file mode 100644 index 0000000000..08415382a9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExclusiveOrExpressionChild; + +public interface IExclusiveOrExpressionChildInitialiser extends IInclusiveOrExpressionChildInitialiser { + @Override + public ExclusiveOrExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionInitialiser.java new file mode 100644 index 0000000000..98fde0fdeb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExclusiveOrExpressionInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExclusiveOrExpression; +import org.emftext.language.java.expressions.ExclusiveOrExpressionChild; + +public interface IExclusiveOrExpressionInitialiser extends IInclusiveOrExpressionChildInitialiser { + @Override + public ExclusiveOrExpression instantiate(); + + public default boolean addChild(ExclusiveOrExpression eoe, ExclusiveOrExpressionChild child) { + if (child != null) { + eoe.getChildren().add(child); + return eoe.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(ExclusiveOrExpression eoe, ExclusiveOrExpressionChild[] children) { + return this.doMultipleModifications(eoe, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExplicitlyTypedLambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExplicitlyTypedLambdaParametersInitialiser.java new file mode 100644 index 0000000000..34f21301c2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExplicitlyTypedLambdaParametersInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExplicitlyTypedLambdaParameters; + +public interface IExplicitlyTypedLambdaParametersInitialiser extends ILambdaParametersInitialiser { + @Override + public ExplicitlyTypedLambdaParameters instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionInitialiser.java new file mode 100644 index 0000000000..d9e72faf47 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.Expression; + +import cipm.consistency.initialisers.jamopp.arrays.IArrayInitializationValueInitialiser; + +public interface IExpressionInitialiser extends IArrayInitializationValueInitialiser, ILambdaBodyInitialiser { + @Override + public Expression instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionListInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionListInitialiser.java new file mode 100644 index 0000000000..cc94f34132 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IExpressionListInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.expressions.ExpressionList; + +import cipm.consistency.initialisers.jamopp.statements.IForLoopInitializerInitialiser; + +public interface IExpressionListInitialiser extends IForLoopInitializerInitialiser { + @Override + public ExpressionList instantiate(); + + public default boolean addExpression(ExpressionList exprList, Expression expr) { + if (expr != null) { + exprList.getExpressions().add(expr); + return exprList.getExpressions().contains(expr); + } + return true; + } + + public default boolean addExpressions(ExpressionList exprList, Expression[] exprs) { + return this.doMultipleModifications(exprList, exprs, this::addExpression); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IImplicitlyTypedLambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IImplicitlyTypedLambdaParametersInitialiser.java new file mode 100644 index 0000000000..83f877410a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IImplicitlyTypedLambdaParametersInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ImplicitlyTypedLambdaParameters; + +public interface IImplicitlyTypedLambdaParametersInitialiser extends ILambdaParametersInitialiser { + @Override + public ImplicitlyTypedLambdaParameters instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionChildInitialiser.java new file mode 100644 index 0000000000..934a69644e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.InclusiveOrExpressionChild; + +public interface IInclusiveOrExpressionChildInitialiser extends IConditionalAndExpressionChildInitialiser { + @Override + public InclusiveOrExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionInitialiser.java new file mode 100644 index 0000000000..6158dbd89f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInclusiveOrExpressionInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.InclusiveOrExpression; +import org.emftext.language.java.expressions.InclusiveOrExpressionChild; + +public interface IInclusiveOrExpressionInitialiser extends IConditionalAndExpressionChildInitialiser { + @Override + public InclusiveOrExpression instantiate(); + + public default boolean addChild(InclusiveOrExpression ioe, InclusiveOrExpressionChild child) { + if (child != null) { + ioe.getChildren().add(child); + return ioe.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(InclusiveOrExpression ioe, InclusiveOrExpressionChild[] children) { + return this.doMultipleModifications(ioe, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionChildInitialiser.java new file mode 100644 index 0000000000..dbeb44c250 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.InstanceOfExpressionChild; + +public interface IInstanceOfExpressionChildInitialiser extends IEqualityExpressionChildInitialiser { + @Override + public InstanceOfExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionInitialiser.java new file mode 100644 index 0000000000..d6fd448497 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IInstanceOfExpressionInitialiser.java @@ -0,0 +1,17 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.InstanceOfExpression; +import org.emftext.language.java.expressions.InstanceOfExpressionChild; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IInstanceOfExpressionInitialiser + extends IEqualityExpressionChildInitialiser, ITypedElementInitialiser { + @Override + public InstanceOfExpression instantiate(); + + public default boolean setChild(InstanceOfExpression ioe, InstanceOfExpressionChild child) { + ioe.setChild(child); + return (child == null && ioe.getChild() == null) || ioe.getChild().equals(child); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaBodyInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaBodyInitialiser.java new file mode 100644 index 0000000000..d7498f5c9a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaBodyInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.LambdaBody; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface ILambdaBodyInitialiser extends ICommentableInitialiser { + @Override + public LambdaBody instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaExpressionInitialiser.java new file mode 100644 index 0000000000..a055acaef7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaExpressionInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.LambdaBody; +import org.emftext.language.java.expressions.LambdaExpression; +import org.emftext.language.java.expressions.LambdaParameters; + +public interface ILambdaExpressionInitialiser extends IExpressionInitialiser { + @Override + public LambdaExpression instantiate(); + + public default boolean setBody(LambdaExpression le, LambdaBody body) { + le.setBody(body); + return (body == null && le.getBody() == null) || le.getBody().equals(body); + } + + public default boolean setParameters(LambdaExpression le, LambdaParameters param) { + le.setParameters(param); + return (param == null && le.getParameters() == null) || le.getParameters().equals(param); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaParametersInitialiser.java new file mode 100644 index 0000000000..fc78f7336d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ILambdaParametersInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.LambdaParameters; + +import cipm.consistency.initialisers.jamopp.parameters.IParametrizableInitialiser; + +public interface ILambdaParametersInitialiser extends IParametrizableInitialiser { + @Override + public LambdaParameters instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionChildInitialiser.java new file mode 100644 index 0000000000..ebd83fc9a2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.MethodReferenceExpressionChild; + +public interface IMethodReferenceExpressionChildInitialiser extends IUnaryModificationExpressionChildInitialiser { + @Override + public MethodReferenceExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionInitialiser.java new file mode 100644 index 0000000000..73bb7aaca3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMethodReferenceExpressionInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.MethodReferenceExpression; + +public interface IMethodReferenceExpressionInitialiser extends IUnaryModificationExpressionChildInitialiser { + @Override + public MethodReferenceExpression instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionChildInitialiser.java new file mode 100644 index 0000000000..1373fe3155 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.MultiplicativeExpressionChild; + +public interface IMultiplicativeExpressionChildInitialiser extends IAdditiveExpressionChildInitialiser { + @Override + public MultiplicativeExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionInitialiser.java new file mode 100644 index 0000000000..c0e1270feb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IMultiplicativeExpressionInitialiser.java @@ -0,0 +1,34 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.MultiplicativeExpression; +import org.emftext.language.java.expressions.MultiplicativeExpressionChild; +import org.emftext.language.java.operators.MultiplicativeOperator; + +public interface IMultiplicativeExpressionInitialiser extends IAdditiveExpressionChildInitialiser { + @Override + public MultiplicativeExpression instantiate(); + + public default boolean addMultiplicativeOperator(MultiplicativeExpression ae, MultiplicativeOperator op) { + if (op != null) { + ae.getMultiplicativeOperators().add(op); + return ae.getMultiplicativeOperators().contains(op); + } + return true; + } + + public default boolean addMultiplicativeOperators(MultiplicativeExpression ae, MultiplicativeOperator[] ops) { + return this.doMultipleModifications(ae, ops, this::addMultiplicativeOperator); + } + + public default boolean addChild(MultiplicativeExpression ae, MultiplicativeExpressionChild child) { + if (child != null) { + ae.getChildren().add(child); + return ae.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(MultiplicativeExpression ae, MultiplicativeExpressionChild[] children) { + return this.doMultipleModifications(ae, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/INestedExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/INestedExpressionInitialiser.java new file mode 100644 index 0000000000..20f759c777 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/INestedExpressionInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.expressions.NestedExpression; + +import cipm.consistency.initialisers.jamopp.references.IReferenceInitialiser; + +public interface INestedExpressionInitialiser extends IReferenceInitialiser { + @Override + public NestedExpression instantiate(); + + public default boolean setExpression(NestedExpression ne, Expression expr) { + ne.setExpression(expr); + return (expr == null && ne.getExpression() == null) || ne.getExpression().equals(expr); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrefixUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrefixUnaryModificationExpressionInitialiser.java new file mode 100644 index 0000000000..2cb783c114 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrefixUnaryModificationExpressionInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.PrefixUnaryModificationExpression; + +public interface IPrefixUnaryModificationExpressionInitialiser extends IUnaryModificationExpressionInitialiser { + @Override + public PrefixUnaryModificationExpression instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionInitialiser.java new file mode 100644 index 0000000000..1ec6a0d9fb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.PrimaryExpression; + +public interface IPrimaryExpressionInitialiser extends IMethodReferenceExpressionChildInitialiser { + @Override + public PrimaryExpression instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionReferenceExpressionInitialiser.java new file mode 100644 index 0000000000..03cd0b9e8a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IPrimaryExpressionReferenceExpressionInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.MethodReferenceExpressionChild; +import org.emftext.language.java.expressions.PrimaryExpressionReferenceExpression; +import org.emftext.language.java.references.Reference; + +import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser; + +public interface IPrimaryExpressionReferenceExpressionInitialiser + extends ICallTypeArgumentableInitialiser, IMethodReferenceExpressionInitialiser { + @Override + public PrimaryExpressionReferenceExpression instantiate(); + + public default boolean setChild(PrimaryExpressionReferenceExpression pere, MethodReferenceExpressionChild mrec) { + pere.setChild(mrec); + return (mrec == null && pere.getChild() == null) || pere.getChild().equals(mrec); + } + + public default boolean setMethodReference(PrimaryExpressionReferenceExpression pere, Reference metRef) { + pere.setMethodReference(metRef); + return (metRef == null && pere.getMethodReference() == null) || pere.getMethodReference().equals(metRef); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionChildInitialiser.java new file mode 100644 index 0000000000..51ce44e741 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.RelationExpressionChild; + +public interface IRelationExpressionChildInitialiser extends IInstanceOfExpressionChildInitialiser { + @Override + public RelationExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionInitialiser.java new file mode 100644 index 0000000000..78c8870353 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IRelationExpressionInitialiser.java @@ -0,0 +1,34 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.RelationExpression; +import org.emftext.language.java.expressions.RelationExpressionChild; +import org.emftext.language.java.operators.RelationOperator; + +public interface IRelationExpressionInitialiser extends IInstanceOfExpressionChildInitialiser { + @Override + public RelationExpression instantiate(); + + public default boolean addRelationOperator(RelationExpression re, RelationOperator op) { + if (op != null) { + re.getRelationOperators().add(op); + return re.getRelationOperators().contains(op); + } + return true; + } + + public default boolean addRelationOperators(RelationExpression re, RelationOperator[] ops) { + return this.doMultipleModifications(re, ops, this::addRelationOperator); + } + + public default boolean addChild(RelationExpression cae, RelationExpressionChild child) { + if (child != null) { + cae.getChildren().add(child); + return cae.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(RelationExpression cae, RelationExpressionChild[] children) { + return this.doMultipleModifications(cae, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionChildInitialiser.java new file mode 100644 index 0000000000..bef581a0b2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ShiftExpressionChild; + +public interface IShiftExpressionChildInitialiser extends IRelationExpressionChildInitialiser { + @Override + public ShiftExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionInitialiser.java new file mode 100644 index 0000000000..c27fc8225b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IShiftExpressionInitialiser.java @@ -0,0 +1,34 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ShiftExpression; +import org.emftext.language.java.expressions.ShiftExpressionChild; +import org.emftext.language.java.operators.ShiftOperator; + +public interface IShiftExpressionInitialiser extends IRelationExpressionChildInitialiser { + @Override + public ShiftExpression instantiate(); + + public default boolean addShiftOperator(ShiftExpression se, ShiftOperator op) { + if (op != null) { + se.getShiftOperators().add(op); + return se.getShiftOperators().contains(op); + } + return true; + } + + public default boolean addShiftOperators(ShiftExpression se, ShiftOperator[] ops) { + return this.doMultipleModifications(se, ops, this::addShiftOperator); + } + + public default boolean addChild(ShiftExpression se, ShiftExpressionChild child) { + if (child != null) { + se.getChildren().add(child); + return se.getChildren().contains(child); + } + return true; + } + + public default boolean addChildren(ShiftExpression se, ShiftExpressionChild[] children) { + return this.doMultipleModifications(se, children, this::addChild); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISingleImplicitLambdaParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISingleImplicitLambdaParameterInitialiser.java new file mode 100644 index 0000000000..0a42080df4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISingleImplicitLambdaParameterInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.SingleImplicitLambdaParameter; + +public interface ISingleImplicitLambdaParameterInitialiser extends IImplicitlyTypedLambdaParametersInitialiser { + @Override + public SingleImplicitLambdaParameter instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISuffixUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISuffixUnaryModificationExpressionInitialiser.java new file mode 100644 index 0000000000..6cf7f829f2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ISuffixUnaryModificationExpressionInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.SuffixUnaryModificationExpression; + +public interface ISuffixUnaryModificationExpressionInitialiser extends IUnaryModificationExpressionInitialiser { + @Override + public SuffixUnaryModificationExpression instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionChildInitialiser.java new file mode 100644 index 0000000000..08dc42d671 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.UnaryExpressionChild; + +public interface IUnaryExpressionChildInitialiser extends IMultiplicativeExpressionChildInitialiser { + @Override + public UnaryExpressionChild instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionInitialiser.java new file mode 100644 index 0000000000..ec57e30f85 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryExpressionInitialiser.java @@ -0,0 +1,27 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.UnaryExpression; +import org.emftext.language.java.expressions.UnaryExpressionChild; +import org.emftext.language.java.operators.UnaryOperator; + +public interface IUnaryExpressionInitialiser extends IMultiplicativeExpressionChildInitialiser { + @Override + public UnaryExpression instantiate(); + + public default boolean addOperator(UnaryExpression ue, UnaryOperator op) { + if (op != null) { + ue.getOperators().add(op); + return ue.getOperators().contains(op); + } + return true; + } + + public default boolean addOperators(UnaryExpression ue, UnaryOperator[] ops) { + return this.doMultipleModifications(ue, ops, this::addOperator); + } + + public default boolean setChild(UnaryExpression ue, UnaryExpressionChild child) { + ue.setChild(child); + return (child == null && ue.getChild() == null) || ue.getChild().equals(child); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionChildInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionChildInitialiser.java new file mode 100644 index 0000000000..0c7bbee94f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionChildInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.UnaryModificationExpressionChild; + +public interface IUnaryModificationExpressionChildInitialiser extends IUnaryExpressionChildInitialiser { + @Override + public UnaryModificationExpressionChild instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionInitialiser.java new file mode 100644 index 0000000000..913501f924 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/IUnaryModificationExpressionInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.UnaryModificationExpression; +import org.emftext.language.java.expressions.UnaryModificationExpressionChild; +import org.emftext.language.java.operators.UnaryModificationOperator; + +public interface IUnaryModificationExpressionInitialiser extends IUnaryExpressionChildInitialiser { + @Override + public UnaryModificationExpression instantiate(); + + public default boolean setChild(UnaryModificationExpression ume, UnaryModificationExpressionChild child) { + ume.setChild(child); + return (child == null && ume.getChild() == null) || ume.getChild().equals(child); + } + + public default boolean setOperator(UnaryModificationExpression ume, UnaryModificationOperator op) { + ume.setOperator(op); + return (op == null && ume.getOperator() == null) || ume.getOperator().equals(op); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ImplicitlyTypedLambdaParametersInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ImplicitlyTypedLambdaParametersInitialiser.java new file mode 100644 index 0000000000..3fbe2cbada --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ImplicitlyTypedLambdaParametersInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.ImplicitlyTypedLambdaParameters; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ImplicitlyTypedLambdaParametersInitialiser extends AbstractInitialiserBase + implements IImplicitlyTypedLambdaParametersInitialiser { + @Override + public IImplicitlyTypedLambdaParametersInitialiser newInitialiser() { + return new ImplicitlyTypedLambdaParametersInitialiser(); + } + + @Override + public ImplicitlyTypedLambdaParameters instantiate() { + return ExpressionsFactory.eINSTANCE.createImplicitlyTypedLambdaParameters(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InclusiveOrExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InclusiveOrExpressionInitialiser.java new file mode 100644 index 0000000000..2d6381b150 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InclusiveOrExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.InclusiveOrExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class InclusiveOrExpressionInitialiser extends AbstractInitialiserBase + implements IInclusiveOrExpressionInitialiser { + @Override + public IInclusiveOrExpressionInitialiser newInitialiser() { + return new InclusiveOrExpressionInitialiser(); + } + + @Override + public InclusiveOrExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createInclusiveOrExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InstanceOfExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InstanceOfExpressionInitialiser.java new file mode 100644 index 0000000000..a1869c8e97 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/InstanceOfExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.InstanceOfExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class InstanceOfExpressionInitialiser extends AbstractInitialiserBase + implements IInstanceOfExpressionInitialiser { + @Override + public IInstanceOfExpressionInitialiser newInitialiser() { + return new InstanceOfExpressionInitialiser(); + } + + @Override + public InstanceOfExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createInstanceOfExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/LambdaExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/LambdaExpressionInitialiser.java new file mode 100644 index 0000000000..7da443c16e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/LambdaExpressionInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.LambdaExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class LambdaExpressionInitialiser extends AbstractInitialiserBase implements ILambdaExpressionInitialiser { + + @Override + public ILambdaExpressionInitialiser newInitialiser() { + return new LambdaExpressionInitialiser(); + } + + @Override + public LambdaExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createLambdaExpression(); + } + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/MultiplicativeExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/MultiplicativeExpressionInitialiser.java new file mode 100644 index 0000000000..d0b8a5bc30 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/MultiplicativeExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.MultiplicativeExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class MultiplicativeExpressionInitialiser extends AbstractInitialiserBase + implements IMultiplicativeExpressionInitialiser { + @Override + public IMultiplicativeExpressionInitialiser newInitialiser() { + return new MultiplicativeExpressionInitialiser(); + } + + @Override + public MultiplicativeExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createMultiplicativeExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/NestedExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/NestedExpressionInitialiser.java new file mode 100644 index 0000000000..3dab5684bf --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/NestedExpressionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.NestedExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NestedExpressionInitialiser extends AbstractInitialiserBase implements INestedExpressionInitialiser { + @Override + public INestedExpressionInitialiser newInitialiser() { + return new NestedExpressionInitialiser(); + } + + @Override + public NestedExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createNestedExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrefixUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrefixUnaryModificationExpressionInitialiser.java new file mode 100644 index 0000000000..091028a319 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrefixUnaryModificationExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.PrefixUnaryModificationExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PrefixUnaryModificationExpressionInitialiser extends AbstractInitialiserBase + implements IPrefixUnaryModificationExpressionInitialiser { + @Override + public IPrefixUnaryModificationExpressionInitialiser newInitialiser() { + return new PrefixUnaryModificationExpressionInitialiser(); + } + + @Override + public PrefixUnaryModificationExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createPrefixUnaryModificationExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrimaryExpressionReferenceExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrimaryExpressionReferenceExpressionInitialiser.java new file mode 100644 index 0000000000..bc959ae2c0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/PrimaryExpressionReferenceExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.PrimaryExpressionReferenceExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PrimaryExpressionReferenceExpressionInitialiser extends AbstractInitialiserBase + implements IPrimaryExpressionReferenceExpressionInitialiser { + @Override + public IPrimaryExpressionReferenceExpressionInitialiser newInitialiser() { + return new PrimaryExpressionReferenceExpressionInitialiser(); + } + + @Override + public PrimaryExpressionReferenceExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createPrimaryExpressionReferenceExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/RelationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/RelationExpressionInitialiser.java new file mode 100644 index 0000000000..d2e56f1c7b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/RelationExpressionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.RelationExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class RelationExpressionInitialiser extends AbstractInitialiserBase implements IRelationExpressionInitialiser { + @Override + public IRelationExpressionInitialiser newInitialiser() { + return new RelationExpressionInitialiser(); + } + + @Override + public RelationExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createRelationExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ShiftExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ShiftExpressionInitialiser.java new file mode 100644 index 0000000000..561f3365ae --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/ShiftExpressionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.ShiftExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ShiftExpressionInitialiser extends AbstractInitialiserBase implements IShiftExpressionInitialiser { + @Override + public IShiftExpressionInitialiser newInitialiser() { + return new ShiftExpressionInitialiser(); + } + + @Override + public ShiftExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createShiftExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SingleImplicitLambdaParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SingleImplicitLambdaParameterInitialiser.java new file mode 100644 index 0000000000..dc24929276 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SingleImplicitLambdaParameterInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.SingleImplicitLambdaParameter; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SingleImplicitLambdaParameterInitialiser extends AbstractInitialiserBase + implements ISingleImplicitLambdaParameterInitialiser { + @Override + public ISingleImplicitLambdaParameterInitialiser newInitialiser() { + return new SingleImplicitLambdaParameterInitialiser(); + } + + @Override + public SingleImplicitLambdaParameter instantiate() { + return ExpressionsFactory.eINSTANCE.createSingleImplicitLambdaParameter(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SuffixUnaryModificationExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SuffixUnaryModificationExpressionInitialiser.java new file mode 100644 index 0000000000..bee3478537 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/SuffixUnaryModificationExpressionInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.SuffixUnaryModificationExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SuffixUnaryModificationExpressionInitialiser extends AbstractInitialiserBase + implements ISuffixUnaryModificationExpressionInitialiser { + @Override + public ISuffixUnaryModificationExpressionInitialiser newInitialiser() { + return new SuffixUnaryModificationExpressionInitialiser(); + } + + @Override + public SuffixUnaryModificationExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createSuffixUnaryModificationExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/UnaryExpressionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/UnaryExpressionInitialiser.java new file mode 100644 index 0000000000..1bda0b4eb3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/UnaryExpressionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.expressions; + +import org.emftext.language.java.expressions.ExpressionsFactory; +import org.emftext.language.java.expressions.UnaryExpression; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class UnaryExpressionInitialiser extends AbstractInitialiserBase implements IUnaryExpressionInitialiser { + @Override + public IUnaryExpressionInitialiser newInitialiser() { + return new UnaryExpressionInitialiser(); + } + + @Override + public UnaryExpression instantiate() { + return ExpressionsFactory.eINSTANCE.createUnaryExpression(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/package-info.java new file mode 100644 index 0000000000..7ad2105963 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/expressions/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.expressions}. + */ +package cipm.consistency.initialisers.jamopp.expressions; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ExtendsTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ExtendsTypeArgumentInitialiser.java new file mode 100644 index 0000000000..9d651b1c41 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ExtendsTypeArgumentInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.ExtendsTypeArgument; +import org.emftext.language.java.generics.GenericsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ExtendsTypeArgumentInitialiser extends AbstractInitialiserBase implements IExtendsTypeArgumentInitialiser { + @Override + public IExtendsTypeArgumentInitialiser newInitialiser() { + return new ExtendsTypeArgumentInitialiser(); + } + + @Override + public ExtendsTypeArgument instantiate() { + return GenericsFactory.eINSTANCE.createExtendsTypeArgument(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/GenericsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/GenericsInitialiserPackage.java new file mode 100644 index 0000000000..aee7de7ad0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/GenericsInitialiserPackage.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class GenericsInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new ExtendsTypeArgumentInitialiser(), + new QualifiedTypeArgumentInitialiser(), new SuperTypeArgumentInitialiser(), + new TypeParameterInitialiser(), new UnknownTypeArgumentInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { ICallTypeArgumentableInitialiser.class, IExtendsTypeArgumentInitialiser.class, + IQualifiedTypeArgumentInitialiser.class, ISuperTypeArgumentInitialiser.class, + ITypeArgumentableInitialiser.class, ITypeArgumentInitialiser.class, ITypeParameterInitialiser.class, + ITypeParametrizableInitialiser.class, IUnknownTypeArgumentInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ICallTypeArgumentableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ICallTypeArgumentableInitialiser.java new file mode 100644 index 0000000000..fec3a9d20b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ICallTypeArgumentableInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.CallTypeArgumentable; +import org.emftext.language.java.generics.TypeArgument; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface ICallTypeArgumentableInitialiser extends ICommentableInitialiser { + @Override + public CallTypeArgumentable instantiate(); + + public default boolean addCallTypeArgument(CallTypeArgumentable cta, TypeArgument callTypeArg) { + if (callTypeArg != null) { + cta.getCallTypeArguments().add(callTypeArg); + return cta.getCallTypeArguments().contains(callTypeArg); + } + return true; + } + + public default boolean addCallTypeArguments(CallTypeArgumentable cta, TypeArgument[] callTypeArgs) { + return this.doMultipleModifications(cta, callTypeArgs, this::addCallTypeArgument); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IExtendsTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IExtendsTypeArgumentInitialiser.java new file mode 100644 index 0000000000..7c985fc808 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IExtendsTypeArgumentInitialiser.java @@ -0,0 +1,32 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.ExtendsTypeArgument; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; + +/** + * An interface meant to be implemented by initialisers, which are supposed to + * create {@link ExtendsTypeArgument} instances.
+ *
+ * For an {@link ExtendsTypeArgument} instance eta, + * {@code eta.getExtendTypes().add(...)} does not modify eta. + * + * @author Alp Torac Genc + */ +public interface IExtendsTypeArgumentInitialiser extends IAnnotableInitialiser, ITypeArgumentInitialiser { + @Override + public ExtendsTypeArgument instantiate(); + + /** + * Sets the extend type of the given {@link ExtendsTypeArgument} to extType. + * Uses {@code eta.setExtendType(...)} to do so. + * + * @see {@link IExtendsTypeArgumentInitialiser} + */ + public default boolean setExtendType(ExtendsTypeArgument eta, TypeReference extType) { + eta.setExtendType(extType); + return (extType == null && eta.getExtendType() == null) + || eta.getExtendType().equals(extType) && eta.getExtendTypes().contains(extType); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IQualifiedTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IQualifiedTypeArgumentInitialiser.java new file mode 100644 index 0000000000..f913899c9b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IQualifiedTypeArgumentInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.QualifiedTypeArgument; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IQualifiedTypeArgumentInitialiser extends ITypeArgumentInitialiser, ITypedElementInitialiser { + @Override + public QualifiedTypeArgument instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ISuperTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ISuperTypeArgumentInitialiser.java new file mode 100644 index 0000000000..9ba6065db6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ISuperTypeArgumentInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.SuperTypeArgument; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; + +public interface ISuperTypeArgumentInitialiser extends IAnnotableInitialiser, ITypeArgumentInitialiser { + @Override + public SuperTypeArgument instantiate(); + + public default boolean setSuperType(SuperTypeArgument sta, TypeReference superType) { + sta.setSuperType(superType); + return (superType == null && sta.getSuperType() == null) || sta.getSuperType().equals(superType); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentInitialiser.java new file mode 100644 index 0000000000..136509941b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.TypeArgument; + +import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser; + +public interface ITypeArgumentInitialiser extends IArrayTypeableInitialiser { + @Override + public TypeArgument instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentableInitialiser.java new file mode 100644 index 0000000000..bd4a733d06 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeArgumentableInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.TypeArgument; +import org.emftext.language.java.generics.TypeArgumentable; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface ITypeArgumentableInitialiser extends ICommentableInitialiser { + @Override + public TypeArgumentable instantiate(); + + public default boolean addTypeArgument(TypeArgumentable ta, TypeArgument tArg) { + if (tArg != null) { + ta.getTypeArguments().add(tArg); + return ta.getTypeArguments().contains(tArg); + } + return true; + } + + public default boolean addTypeArguments(TypeArgumentable ta, TypeArgument[] tArgs) { + return this.doMultipleModifications(ta, tArgs, this::addTypeArgument); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParameterInitialiser.java new file mode 100644 index 0000000000..6663b9cc2e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParameterInitialiser.java @@ -0,0 +1,60 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.generics.TypeParameter; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; +import cipm.consistency.initialisers.jamopp.classifiers.IClassifierInitialiser; + +/** + * An interface meant for {@link IInitialiser} implementors that are supposed to + * create {@link TypeParameter} instances.
+ *
+ * Note: {@link TypeParameter} cannot add imports to its container, so + * attempting to add imports to it has no effect. This is caused by the + * inconsistency in the {@link Classifier} sub-hierarchy. + * + * @author Alp Torac Genc + * + */ +public interface ITypeParameterInitialiser extends IClassifierInitialiser, IAnnotableInitialiser { + @Override + public TypeParameter instantiate(); + + public default boolean addExtendType(TypeParameter tp, TypeReference extType) { + if (extType != null) { + tp.getExtendTypes().add(extType); + return tp.getExtendTypes().contains(extType); + } + return true; + } + + /** + * {@inheritDoc} + * + * @return Returns false in case of {@link TypeParameter}. + * + * @see {@link ITypeParameterInitialiser} + */ + @Override + public default boolean canAddImports(Classifier cls) { + return false; + } + + /** + * {@inheritDoc} + * + * @return Returns false in case of {@link TypeParameter}. + * + * @see {@link ITypeParameterInitialiser} + */ + @Override + public default boolean canAddPackageImports(Classifier cls) { + return false; + } + + public default boolean addExtendTypes(TypeParameter tp, TypeReference[] extTypes) { + return this.doMultipleModifications(tp, extTypes, this::addExtendType); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParametrizableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParametrizableInitialiser.java new file mode 100644 index 0000000000..b7368a9e94 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/ITypeParametrizableInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.TypeParameter; +import org.emftext.language.java.generics.TypeParametrizable; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface ITypeParametrizableInitialiser extends ICommentableInitialiser { + @Override + public TypeParametrizable instantiate(); + + public default boolean addTypeParameter(TypeParametrizable tp, TypeParameter typeParam) { + if (typeParam != null) { + tp.getTypeParameters().add(typeParam); + return tp.getTypeParameters().contains(typeParam); + } + return true; + } + + public default boolean addTypeParameters(TypeParametrizable tp, TypeParameter[] typeParams) { + return this.doMultipleModifications(tp, typeParams, this::addTypeParameter); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IUnknownTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IUnknownTypeArgumentInitialiser.java new file mode 100644 index 0000000000..12478c656b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/IUnknownTypeArgumentInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.UnknownTypeArgument; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; + +public interface IUnknownTypeArgumentInitialiser extends IAnnotableInitialiser, ITypeArgumentInitialiser { + @Override + public UnknownTypeArgument instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/QualifiedTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/QualifiedTypeArgumentInitialiser.java new file mode 100644 index 0000000000..ad032fa859 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/QualifiedTypeArgumentInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.GenericsFactory; +import org.emftext.language.java.generics.QualifiedTypeArgument; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class QualifiedTypeArgumentInitialiser extends AbstractInitialiserBase + implements IQualifiedTypeArgumentInitialiser { + @Override + public IQualifiedTypeArgumentInitialiser newInitialiser() { + return new QualifiedTypeArgumentInitialiser(); + } + + @Override + public QualifiedTypeArgument instantiate() { + return GenericsFactory.eINSTANCE.createQualifiedTypeArgument(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/SuperTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/SuperTypeArgumentInitialiser.java new file mode 100644 index 0000000000..c5f10edc64 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/SuperTypeArgumentInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.GenericsFactory; +import org.emftext.language.java.generics.SuperTypeArgument; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SuperTypeArgumentInitialiser extends AbstractInitialiserBase implements ISuperTypeArgumentInitialiser { + @Override + public ISuperTypeArgumentInitialiser newInitialiser() { + return new SuperTypeArgumentInitialiser(); + } + + @Override + public SuperTypeArgument instantiate() { + return GenericsFactory.eINSTANCE.createSuperTypeArgument(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/TypeParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/TypeParameterInitialiser.java new file mode 100644 index 0000000000..482d894d90 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/TypeParameterInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.TypeParameter; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.generics.GenericsFactory; + +public class TypeParameterInitialiser extends AbstractInitialiserBase implements ITypeParameterInitialiser { + @Override + public TypeParameter instantiate() { + return GenericsFactory.eINSTANCE.createTypeParameter(); + } + + @Override + public ITypeParameterInitialiser newInitialiser() { + return new TypeParameterInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/UnknownTypeArgumentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/UnknownTypeArgumentInitialiser.java new file mode 100644 index 0000000000..f662c6676e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/UnknownTypeArgumentInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.generics; + +import org.emftext.language.java.generics.GenericsFactory; +import org.emftext.language.java.generics.UnknownTypeArgument; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class UnknownTypeArgumentInitialiser extends AbstractInitialiserBase implements IUnknownTypeArgumentInitialiser { + @Override + public IUnknownTypeArgumentInitialiser newInitialiser() { + return new UnknownTypeArgumentInitialiser(); + } + + @Override + public UnknownTypeArgument instantiate() { + return GenericsFactory.eINSTANCE.createUnknownTypeArgument(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/package-info.java new file mode 100644 index 0000000000..7d369e81bd --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/generics/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.generics}. + */ +package cipm.consistency.initialisers.jamopp.generics; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ClassifierImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ClassifierImportInitialiser.java new file mode 100644 index 0000000000..b50a83041b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ClassifierImportInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.ClassifierImport; +import org.emftext.language.java.imports.ImportsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ClassifierImportInitialiser extends AbstractInitialiserBase implements IClassifierImportInitialiser { + @Override + public IClassifierImportInitialiser newInitialiser() { + return new ClassifierImportInitialiser(); + } + + @Override + public ClassifierImport instantiate() { + return ImportsFactory.eINSTANCE.createClassifierImport(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IClassifierImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IClassifierImportInitialiser.java new file mode 100644 index 0000000000..d340c1d59e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IClassifierImportInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.ClassifierImport; + +public interface IClassifierImportInitialiser extends IImportInitialiser { + @Override + public ClassifierImport instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportInitialiser.java new file mode 100644 index 0000000000..96599398cb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.emftext.language.java.imports.Import; + +import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser; + +public interface IImportInitialiser extends INamespaceAwareElementInitialiser { + @Override + public Import instantiate(); + + public default boolean setClassifier(Import imp, ConcreteClassifier cls) { + imp.setClassifier(cls); + return (cls == null && imp.getClassifier() == null) || imp.getClassifier().equals(cls); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportingElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportingElementInitialiser.java new file mode 100644 index 0000000000..d697652b01 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IImportingElementInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.Import; +import org.emftext.language.java.imports.ImportingElement; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IImportingElementInitialiser extends ICommentableInitialiser { + @Override + public ImportingElement instantiate(); + + public default boolean addImport(ImportingElement ie, Import imp) { + if (imp != null) { + ie.getImports().add(imp); + return ie.getImports().contains(imp); + } + return true; + } + + public default boolean addImports(ImportingElement ie, Import[] imps) { + return this.doMultipleModifications(ie, imps, this::addImport); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IPackageImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IPackageImportInitialiser.java new file mode 100644 index 0000000000..fe4e5b6a4f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IPackageImportInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.PackageImport; + +public interface IPackageImportInitialiser extends IImportInitialiser { + @Override + public PackageImport instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticClassifierImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticClassifierImportInitialiser.java new file mode 100644 index 0000000000..c5a95ed255 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticClassifierImportInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.StaticClassifierImport; + +public interface IStaticClassifierImportInitialiser extends IStaticImportInitialiser { + @Override + public StaticClassifierImport instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticImportInitialiser.java new file mode 100644 index 0000000000..23db2c82d7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticImportInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.StaticImport; +import org.emftext.language.java.modifiers.Static; + +public interface IStaticImportInitialiser extends IImportInitialiser { + @Override + public StaticImport instantiate(); + + public default boolean setStatic(StaticImport sImp, Static st) { + sImp.setStatic(st); + return (st == null && sImp.getStatic() == null) || sImp.getStatic().equals(st); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticMemberImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticMemberImportInitialiser.java new file mode 100644 index 0000000000..79c1552ecc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/IStaticMemberImportInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.StaticMemberImport; +import org.emftext.language.java.references.ReferenceableElement; + +public interface IStaticMemberImportInitialiser extends IStaticImportInitialiser { + @Override + public StaticMemberImport instantiate(); + + public default boolean addStaticMember(StaticMemberImport smi, ReferenceableElement staticMem) { + if (staticMem != null) { + smi.getStaticMembers().add(staticMem); + return smi.getStaticMembers().contains(staticMem); + } + return true; + } + + public default boolean addStaticMembers(StaticMemberImport smi, ReferenceableElement[] staticMems) { + return this.doMultipleModifications(smi, staticMems, this::addStaticMember); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ImportsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ImportsInitialiserPackage.java new file mode 100644 index 0000000000..c40c859db8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/ImportsInitialiserPackage.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ImportsInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new ClassifierImportInitialiser(), new PackageImportInitialiser(), + new StaticClassifierImportInitialiser(), new StaticMemberImportInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IClassifierImportInitialiser.class, IImportingElementInitialiser.class, + IImportInitialiser.class, IPackageImportInitialiser.class, IStaticClassifierImportInitialiser.class, + IStaticImportInitialiser.class, IStaticMemberImportInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/PackageImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/PackageImportInitialiser.java new file mode 100644 index 0000000000..7ede42f682 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/PackageImportInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.ImportsFactory; +import org.emftext.language.java.imports.PackageImport; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PackageImportInitialiser extends AbstractInitialiserBase implements IPackageImportInitialiser { + @Override + public IPackageImportInitialiser newInitialiser() { + return new PackageImportInitialiser(); + } + + @Override + public PackageImport instantiate() { + return ImportsFactory.eINSTANCE.createPackageImport(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticClassifierImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticClassifierImportInitialiser.java new file mode 100644 index 0000000000..f6fde342c4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticClassifierImportInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.ImportsFactory; +import org.emftext.language.java.imports.StaticClassifierImport; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class StaticClassifierImportInitialiser extends AbstractInitialiserBase + implements IStaticClassifierImportInitialiser { + @Override + public IStaticClassifierImportInitialiser newInitialiser() { + return new StaticClassifierImportInitialiser(); + } + + @Override + public StaticClassifierImport instantiate() { + return ImportsFactory.eINSTANCE.createStaticClassifierImport(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticMemberImportInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticMemberImportInitialiser.java new file mode 100644 index 0000000000..4fb7c7ef7a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/StaticMemberImportInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.imports; + +import org.emftext.language.java.imports.ImportsFactory; +import org.emftext.language.java.imports.StaticMemberImport; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class StaticMemberImportInitialiser extends AbstractInitialiserBase implements IStaticMemberImportInitialiser { + @Override + public IStaticMemberImportInitialiser newInitialiser() { + return new StaticMemberImportInitialiser(); + } + + @Override + public StaticMemberImport instantiate() { + return ImportsFactory.eINSTANCE.createStaticMemberImport(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/package-info.java new file mode 100644 index 0000000000..d8e4cf29c0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/imports/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.imports}. + */ +package cipm.consistency.initialisers.jamopp.imports; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/BlockContainerInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/BlockContainerInitialiserAdapter.java new file mode 100644 index 0000000000..238cac8386 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/BlockContainerInitialiserAdapter.java @@ -0,0 +1,64 @@ +package cipm.consistency.initialisers.jamopp.initadapters; + +import org.emftext.language.java.statements.BlockContainer; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; +import cipm.consistency.initialisers.jamopp.statements.IBlockContainerInitialiser; +import cipm.consistency.initialisers.jamopp.statements.IBlockInitialiser; + +/** + * An {@link IInitialiserAdapterStrategy} implementation that can be used with + * {@link IInitialiserBase} implementors that instantiate + * {@link BlockContainer}.
+ *
+ * Adds a {@link Block} to the created {@link BlockContainer}. If the + * {@link BlockContainer} instance already has a {@link Block}, does not modify + * it. This way, similarity checking should not cause exceptions while comparing + * 2 {@link BlockContainer} instances, because of them not having a + * {@link Block}. + * + * @author Alp Torac Genc + */ +public class BlockContainerInitialiserAdapter implements IInitialiserAdapterStrategy { + /** + * The initialiser that creates {@link Block}s to realise the functionality of + * this instance. + */ + private IBlockInitialiser bInit; + + /** + * Constructs an instance with the given {@link IBlockInitialiser}. + */ + public BlockContainerInitialiserAdapter(IBlockInitialiser bInit) { + this.bInit = bInit; + } + + /** + * @return The initialiser contained in this instance, which is responsible for + * creating {@link Block}s. + */ + public IBlockInitialiser getBInit() { + return this.bInit; + } + + @Override + public boolean apply(IInitialiser init, Object obj) { + var castedInit = (IBlockContainerInitialiser) init; + var castedO = (BlockContainer) obj; + + if (castedO.getBlock() == null) { + var bInit = this.getBInit(); + + var block = bInit.instantiate(); + return bInit.initialise(block) && castedInit.setBlock(castedO, block); + } + + return true; + } + + @Override + public IInitialiserAdapterStrategy newStrategy() { + return new BlockContainerInitialiserAdapter((IBlockInitialiser) this.getBInit().newInitialiser()); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ClassMethodInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ClassMethodInitialiserAdapter.java new file mode 100644 index 0000000000..8cfe3f38b0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ClassMethodInitialiserAdapter.java @@ -0,0 +1,84 @@ +package cipm.consistency.initialisers.jamopp.initadapters; + +import org.emftext.language.java.members.ClassMethod; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; +import cipm.consistency.initialisers.jamopp.members.IClassMethodInitialiser; +import cipm.consistency.initialisers.jamopp.statements.IBlockInitialiser; + +/** + * An {@link IInitialiserAdapterStrategy} implementation that can be used with + * {@link IInitialiserBase} implementors that instantiate {@link ClassMethod}. + *
+ *
+ * Adds a {@link Block} instance to the {@link ClassMethod} via + * {@code classMethod.setStatement(...)}, if its statement accessed via + * {@code classMethod.getStatement()} is not a {@link Block} (in that case + * {@code classMethod.getBlock()} will return null). If the {@link ClassMethod} + * has its {@link Statement} st set, st will be added to the added block + * instance.
+ *
+ * Due to inconsistencies regarding {@link ClassMethod}, it provides 2 methods + * for adding {@link Statement} instances to it. Since adding multiple + * statements is only possible via {@code classMethod.getStatement().add(...)}, + * which only works if classMethod has a block as its statement, this adaptation + * is necessary. Otherwise, one may only add a single statement to + * {@link ClassMethod} via {@code classMethod.setStatement(...)}.
+ *
+ * Note that the said method will REPLACE the former statement when used. + * + * + * @author Alp Torac Genc + * + */ +public class ClassMethodInitialiserAdapter implements IInitialiserAdapterStrategy { + /** + * The initialiser that creates {@link Block}s to realise the functionality of + * this instance. + */ + private IBlockInitialiser bInit; + + /** + * Constructs an instance with the given {@link IBlockInitialiser}. + */ + public ClassMethodInitialiserAdapter(IBlockInitialiser bInit) { + this.bInit = bInit; + } + + /** + * @return The initialiser contained in this instance, which is responsible for + * creating {@link Block}s. + */ + public IBlockInitialiser getBInit() { + return this.bInit; + } + + @Override + public boolean apply(IInitialiser init, Object obj) { + var castedInit = (IClassMethodInitialiser) init; + var castedO = (ClassMethod) obj; + + if (castedO.getBlock() == null) { + var formerSt = castedO.getStatement(); + + var bInit = this.getBInit(); + var block = bInit.instantiate(); + + var res = bInit.initialise(block) && castedInit.setStatement(castedO, block); + + if (formerSt != null) { + res = res && castedInit.addStatement(castedO, formerSt); + } + + return res; + } + + return true; + } + + @Override + public IInitialiserAdapterStrategy newStrategy() { + return new ClassMethodInitialiserAdapter((IBlockInitialiser) this.getBInit().newInitialiser()); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ConcreteClassifierInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ConcreteClassifierInitialiserAdapter.java new file mode 100644 index 0000000000..63c157e3cc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/ConcreteClassifierInitialiserAdapter.java @@ -0,0 +1,63 @@ +package cipm.consistency.initialisers.jamopp.initadapters; + +import org.emftext.language.java.classifiers.ConcreteClassifier; +import org.emftext.language.java.containers.CompilationUnit; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; +import cipm.consistency.initialisers.jamopp.containers.ICompilationUnitInitialiser; + +/** + * An {@link IInitialiserAdapterStrategy} implementation that can be used with + * {@link IInitialiserBase} implementors that instantiate + * {@link ConcreteClassifier}.
+ *
+ * Adds the {@link ConcreteClassifier} instance to a {@link CompilationUnit}. + * Does not modify the {@link ConcreteClassifier} instance, if it already is + * contained in a {@link CompilationUnit}. This way, similarity checking 2 + * {@link ConcreteClassifier} instances does not throw exceptions, due to them + * not having a container. + * + * @author Alp Torac Genc + */ +public class ConcreteClassifierInitialiserAdapter implements IInitialiserAdapterStrategy { + /** + * The initialiser responsible for creating {@link CompilationUnit}s to fulfil + * this instance's functionality. + */ + private ICompilationUnitInitialiser cuInit; + + /** + * Constructs an instance with the given {@link ICompilationUnitInitialiser}. + */ + public ConcreteClassifierInitialiserAdapter(ICompilationUnitInitialiser cuInit) { + this.cuInit = cuInit; + } + + /** + * @return The initialiser responsible for creating {@link CompilationUnit}s. + */ + public ICompilationUnitInitialiser getCUInit() { + return this.cuInit; + } + + @Override + public boolean apply(IInitialiser init, Object obj) { + var castedO = (ConcreteClassifier) obj; + + if (castedO.getContainingCompilationUnit() == null) { + var cuInit = this.getCUInit(); + + CompilationUnit unit = cuInit.instantiate(); + return cuInit.initialise(unit) && cuInit.addClassifier(unit, castedO); + } + + return true; + } + + @Override + public ConcreteClassifierInitialiserAdapter newStrategy() { + return new ConcreteClassifierInitialiserAdapter( + (ICompilationUnitInitialiser) this.getCUInit().newInitialiser()); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/IdentifierReferenceInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/IdentifierReferenceInitialiserAdapter.java new file mode 100644 index 0000000000..728e009b53 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/IdentifierReferenceInitialiserAdapter.java @@ -0,0 +1,76 @@ +package cipm.consistency.initialisers.jamopp.initadapters; + +import org.eclipse.emf.ecore.EObject; +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.references.IdentifierReference; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; +import cipm.consistency.initialisers.jamopp.instantiations.ExplicitConstructorCallInitialiser; +import cipm.consistency.initialisers.jamopp.statements.ExpressionStatementInitialiser; + +/** + * An {@link IInitialiserAdapterStrategy} implementation that can be used with + * {@link IInitialiserBase} implementors that instantiate + * {@link IdentifierReference}.
+ *
+ * Let IR be an {@link IdentifierReference} instance. + * {@link IdentifierReferenceInitialiserAdapter} then nests an uninitialised + * {@link ExpressionStatement} es instance within an uninitialised + * {@link ExplicitConstructorCall} ecc instance and sets IR's + * container to ecc. This way, IR will have a container, which is + * neither of type {@link Expression} nor {@link ArraySelector} (i.e. an + * eligible container).
+ *
+ * Note: IR's eligible container will be es. + * + * @author Alp Torac Genc + */ +public class IdentifierReferenceInitialiserAdapter implements IInitialiserAdapterStrategy { + + /** + * Realises the functionality of + * {@code JaMoPPElementUtil.getFirstContainerNotOfGivenType(...)} + */ + private EObject getFirstEligibleContainer(EObject obj) { + var firstEligibleContainer = obj.eContainer(); + + while (firstEligibleContainer != null) { + if (Expression.class.isAssignableFrom(firstEligibleContainer.getClass()) + || ArraySelector.class.isAssignableFrom(firstEligibleContainer.getClass())) { + firstEligibleContainer = firstEligibleContainer.eContainer(); + } else { + break; + } + } + + return firstEligibleContainer; + } + + @Override + public boolean apply(IInitialiser init, Object obj) { + var castedO = (IdentifierReference) obj; + + var firstEligibleContainer = this.getFirstEligibleContainer(castedO); + + if (firstEligibleContainer == null) { + var insInit = new ExplicitConstructorCallInitialiser(); + var ecc = insInit.instantiate(); + insInit.addArgument(ecc, castedO); + + var esInit = new ExpressionStatementInitialiser(); + var es = esInit.instantiate(); + esInit.setExpression(es, ecc); + + return this.getFirstEligibleContainer(castedO) == es; + } + + return this.getFirstEligibleContainer(castedO) != null; + } + + @Override + public IInitialiserAdapterStrategy newStrategy() { + return new IdentifierReferenceInitialiserAdapter(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/MemberInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/MemberInitialiserAdapter.java new file mode 100644 index 0000000000..c3a6b9b2ed --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/MemberInitialiserAdapter.java @@ -0,0 +1,62 @@ +package cipm.consistency.initialisers.jamopp.initadapters; + +import org.emftext.language.java.members.Member; +import org.emftext.language.java.members.MemberContainer; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; +import cipm.consistency.initialisers.jamopp.members.IMemberContainerInitialiser; + +/** + * An {@link IInitialiserAdapterStrategy} implementation that can be used with + * {@link IInitialiserBase} implementors that instantiate {@link Member}.
+ *
+ * Adds the created {@link Member} to a {@link MemberContainer}. Does not modify + * the {@link Member} instance, if it is already in a {@link MemberContainer}. + * This way, similarity checking 2 {@link Member} instances does not throw an + * exception, due to them not being contained by a {@link MemberContainer}. + * + * @author Alp Torac Genc + * + */ +public class MemberInitialiserAdapter implements IInitialiserAdapterStrategy { + /** + * The initialiser responsible for creating {@link MemberContainer}s to fulfil + * this instance's functionality. + */ + private IMemberContainerInitialiser mcInit; + + /** + * Constructs an instance with the given {@link IMemberContainerInitialiser}. + */ + public MemberInitialiserAdapter(IMemberContainerInitialiser mcInit) { + this.mcInit = mcInit; + } + + /** + * @return The initialiser in this instance that creates + * {@link MemberContainer}s. + */ + public IMemberContainerInitialiser getMCInit() { + return this.mcInit; + } + + @Override + public boolean apply(IInitialiser init, Object obj) { + var castedO = (Member) obj; + + if (castedO.eContainer() == null) { + var mcInit = this.getMCInit(); + + MemberContainer mc = mcInit.instantiate(); + return mcInit.initialise(mc) && mcInit.addMember(mc, castedO); + } + + return true; + } + + @Override + public MemberInitialiserAdapter newStrategy() { + return new MemberInitialiserAdapter((IMemberContainerInitialiser) this.getMCInit().newInitialiser()); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NamedElementInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NamedElementInitialiserAdapter.java new file mode 100644 index 0000000000..5402f65d99 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NamedElementInitialiserAdapter.java @@ -0,0 +1,46 @@ +package cipm.consistency.initialisers.jamopp.initadapters; + +import org.emftext.language.java.commons.NamedElement; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; +import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser; + +/** + * An {@link IInitialiserAdapterStrategy} implementation that can be used with + * {@link IInitialiserBase} implementors that instantiate {@link NamedElement}. + *
+ *
+ * Sets the name of the created {@link NamedElement} to a default name, if it + * has no name. This way, similarity checking 2 {@link NamedElement} instances + * does not throw exceptions, due to them not having a name. + * + * @author Alp Torac Genc + * + */ +public class NamedElementInitialiserAdapter implements IInitialiserAdapterStrategy { + /** + * @return The default name, to which the name of the created + * {@link NamedElement} instances will be set. + */ + public String getDefaultName() { + return ""; + } + + @Override + public boolean apply(IInitialiser init, Object obj) { + var castedInit = (INamedElementInitialiser) init; + var castedO = (NamedElement) obj; + + if (castedInit.canSetName(castedO) && castedO.getName() == null) { + return castedInit.setName(castedO, this.getDefaultName()); + } + + return true; + } + + @Override + public IInitialiserAdapterStrategy newStrategy() { + return new NamedElementInitialiserAdapter(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NewConstructorCallInitialiserAdapter.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NewConstructorCallInitialiserAdapter.java new file mode 100644 index 0000000000..5756df414f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/NewConstructorCallInitialiserAdapter.java @@ -0,0 +1,90 @@ +package cipm.consistency.initialisers.jamopp.initadapters; + +import org.emftext.language.java.instantiations.NewConstructorCall; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; +import cipm.consistency.initialisers.jamopp.classifiers.IClassifierInitialiser; +import cipm.consistency.initialisers.jamopp.instantiations.INewConstructorCallInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypeReferenceInitialiser; + +/** + * An {@link IInitialiserAdapterStrategy} implementation that can be used with + * {@link IInitialiserBase} implementors that instantiate + * {@link NewConstructorCall}.
+ *
+ * Adds a {@link TypeReference} to the created {@link NewConstructorCall} + * ncc. The steps it takes are: + *
    + *
  1. Checks whether ncc has a {@link TypeReference}. If yes, stops. + * Otherwise continues. + *
  2. Creates a {@link Classifier} instance cls + *
  3. Creates a {@link TypeReference} instance tref + *
  4. Sets tref's target to cls + *
  5. Sets ncc's type reference to tref + *
+ * Does not modify the created {@link NewConstructorCall}, if it already has a + * {@link TypeReference}. + * + * @author Alp Torac Genc + * + */ +public class NewConstructorCallInitialiserAdapter implements IInitialiserAdapterStrategy { + + /** + * The initialiser responsible for creating {@link TypeReference} to fulfil this + * instance's functionality. + */ + private ITypeReferenceInitialiser tRefInit; + /** + * The initialiser responsible for creating {@link Classifier} to fulfil this + * instance's functionality. + */ + private IClassifierInitialiser clsInit; + + /** + * Constructs an instance with the given parameters. + */ + public NewConstructorCallInitialiserAdapter(ITypeReferenceInitialiser tRefInit, IClassifierInitialiser clsInit) { + this.tRefInit = tRefInit; + this.clsInit = clsInit; + } + + /** + * @return The initialiser responsible for creating {@link TypeReference}. + */ + public ITypeReferenceInitialiser gettRefInit() { + return tRefInit; + } + + /** + * @return The initialiser responsible for creating {@link Classifier}. + */ + public IClassifierInitialiser getClsInit() { + return clsInit; + } + + @Override + public boolean apply(IInitialiser init, Object obj) { + var castedInit = (INewConstructorCallInitialiser) init; + var castedO = (NewConstructorCall) obj; + + if (castedO.getTypeReference() == null) { + var cls = this.getClsInit().instantiate(); + + var tref = this.gettRefInit().instantiate(); + + return this.getClsInit().initialise(cls) && this.gettRefInit().initialise(tref) + && this.gettRefInit().setTarget(tref, cls) && castedInit.setTypeReference(castedO, tref) + && castedO.getTypeReference().equals(tref); + } + + return true; + } + + @Override + public IInitialiserAdapterStrategy newStrategy() { + return new NewConstructorCallInitialiserAdapter((ITypeReferenceInitialiser) this.gettRefInit().newInitialiser(), + (IClassifierInitialiser) this.getClsInit().newInitialiser()); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/package-info.java new file mode 100644 index 0000000000..a9f4007062 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/initadapters/package-info.java @@ -0,0 +1,10 @@ +/** + * Contains classes that help adapt initialisers in ways that lets them + * instantiate valid objects without additional method calls. This is + * particularly useful for parameterized tests, as there may be initialisers + * extending mutual interfaces/classes, which may need to perform additional + * modifications of the objects they instantiate. If this is the case, such + * initialisers can be adapted to automatically perform those modifications, + * without large if or instanceof blocks in tests. + */ +package cipm.consistency.initialisers.jamopp.initadapters; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/ExplicitConstructorCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/ExplicitConstructorCallInitialiser.java new file mode 100644 index 0000000000..7a3af10fd6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/ExplicitConstructorCallInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import org.emftext.language.java.instantiations.ExplicitConstructorCall; +import org.emftext.language.java.instantiations.InstantiationsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ExplicitConstructorCallInitialiser extends AbstractInitialiserBase + implements IExplicitConstructorCallInitialiser { + @Override + public IExplicitConstructorCallInitialiser newInitialiser() { + return new ExplicitConstructorCallInitialiser(); + } + + @Override + public ExplicitConstructorCall instantiate() { + return InstantiationsFactory.eINSTANCE.createExplicitConstructorCall(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IExplicitConstructorCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IExplicitConstructorCallInitialiser.java new file mode 100644 index 0000000000..7aac9f9de6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IExplicitConstructorCallInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import org.emftext.language.java.instantiations.ExplicitConstructorCall; +import org.emftext.language.java.literals.Self; + +public interface IExplicitConstructorCallInitialiser extends IInstantiationInitialiser { + @Override + public ExplicitConstructorCall instantiate(); + + public default boolean setCallTarget(ExplicitConstructorCall ecc, Self callTarget) { + ecc.setCallTarget(callTarget); + return (callTarget == null && ecc.getCallTarget() == null) || ecc.getCallTarget().equals(callTarget); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInitializableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInitializableInitialiser.java new file mode 100644 index 0000000000..536c5b1c79 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInitializableInitialiser.java @@ -0,0 +1,17 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.instantiations.Initializable; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IInitializableInitialiser extends ICommentableInitialiser { + @Override + public Initializable instantiate(); + + public default boolean setInitialValue(Initializable initializable, Expression initVal) { + initializable.setInitialValue(initVal); + return (initVal == null && initializable.getInitialValue() == null) + || initializable.getInitialValue().equals(initVal); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInstantiationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInstantiationInitialiser.java new file mode 100644 index 0000000000..b44d598e0e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/IInstantiationInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import org.emftext.language.java.instantiations.Instantiation; + +import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser; +import cipm.consistency.initialisers.jamopp.references.IArgumentableInitialiser; +import cipm.consistency.initialisers.jamopp.references.IReferenceInitialiser; + +public interface IInstantiationInitialiser + extends IArgumentableInitialiser, IReferenceInitialiser, ICallTypeArgumentableInitialiser { + @Override + public Instantiation instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallInitialiser.java new file mode 100644 index 0000000000..355f91d3e2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import org.emftext.language.java.classifiers.AnonymousClass; +import org.emftext.language.java.instantiations.NewConstructorCall; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface INewConstructorCallInitialiser extends IInstantiationInitialiser, ITypedElementInitialiser { + + @Override + public NewConstructorCall instantiate(); + + public default boolean setAnonymousClass(NewConstructorCall ncc, AnonymousClass anonymousCls) { + ncc.setAnonymousClass(anonymousCls); + return (anonymousCls == null && ncc.getAnonymousClass() == null) + || ncc.getAnonymousClass().equals(anonymousCls); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallWithInferredTypeArgumentsInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallWithInferredTypeArgumentsInitialiser.java new file mode 100644 index 0000000000..ed7bdfb060 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/INewConstructorCallWithInferredTypeArgumentsInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import org.emftext.language.java.instantiations.NewConstructorCallWithInferredTypeArguments; + +public interface INewConstructorCallWithInferredTypeArgumentsInitialiser extends INewConstructorCallInitialiser { + @Override + public NewConstructorCallWithInferredTypeArguments instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/InstantiationsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/InstantiationsInitialiserPackage.java new file mode 100644 index 0000000000..20545c4d1f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/InstantiationsInitialiserPackage.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class InstantiationsInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new ExplicitConstructorCallInitialiser(), + new NewConstructorCallInitialiser(), new NewConstructorCallWithInferredTypeArgumentsInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IExplicitConstructorCallInitialiser.class, IInitializableInitialiser.class, + IInstantiationInitialiser.class, INewConstructorCallInitialiser.class, + INewConstructorCallWithInferredTypeArgumentsInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallInitialiser.java new file mode 100644 index 0000000000..5e36611fbd --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import org.emftext.language.java.instantiations.InstantiationsFactory; +import org.emftext.language.java.instantiations.NewConstructorCall; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NewConstructorCallInitialiser extends AbstractInitialiserBase implements INewConstructorCallInitialiser { + @Override + public INewConstructorCallInitialiser newInitialiser() { + return new NewConstructorCallInitialiser(); + } + + @Override + public NewConstructorCall instantiate() { + return InstantiationsFactory.eINSTANCE.createNewConstructorCall(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallWithInferredTypeArgumentsInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallWithInferredTypeArgumentsInitialiser.java new file mode 100644 index 0000000000..04585b6e5c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/NewConstructorCallWithInferredTypeArgumentsInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.instantiations; + +import org.emftext.language.java.instantiations.InstantiationsFactory; +import org.emftext.language.java.instantiations.NewConstructorCallWithInferredTypeArguments; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NewConstructorCallWithInferredTypeArgumentsInitialiser extends AbstractInitialiserBase + implements INewConstructorCallWithInferredTypeArgumentsInitialiser { + @Override + public INewConstructorCallWithInferredTypeArgumentsInitialiser newInitialiser() { + return new NewConstructorCallWithInferredTypeArgumentsInitialiser(); + } + + @Override + public NewConstructorCallWithInferredTypeArguments instantiate() { + return InstantiationsFactory.eINSTANCE.createNewConstructorCallWithInferredTypeArguments(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/package-info.java new file mode 100644 index 0000000000..c4670a11b1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/instantiations/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.instantiations}. + */ +package cipm.consistency.initialisers.jamopp.instantiations; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..d46a2d4c60 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryIntegerLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.BinaryIntegerLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class BinaryIntegerLiteralInitialiser extends AbstractInitialiserBase + implements IBinaryIntegerLiteralInitialiser { + @Override + public IBinaryIntegerLiteralInitialiser newInitialiser() { + return new BinaryIntegerLiteralInitialiser(); + } + + @Override + public BinaryIntegerLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createBinaryIntegerLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryLongLiteralInitialiser.java new file mode 100644 index 0000000000..32508ceed4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BinaryLongLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.BinaryLongLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class BinaryLongLiteralInitialiser extends AbstractInitialiserBase implements IBinaryLongLiteralInitialiser { + @Override + public IBinaryLongLiteralInitialiser newInitialiser() { + return new BinaryLongLiteralInitialiser(); + } + + @Override + public BinaryLongLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createBinaryLongLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BooleanLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BooleanLiteralInitialiser.java new file mode 100644 index 0000000000..2bc55e6f96 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/BooleanLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.BooleanLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class BooleanLiteralInitialiser extends AbstractInitialiserBase implements IBooleanLiteralInitialiser { + @Override + public IBooleanLiteralInitialiser newInitialiser() { + return new BooleanLiteralInitialiser(); + } + + @Override + public BooleanLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createBooleanLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/CharacterLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/CharacterLiteralInitialiser.java new file mode 100644 index 0000000000..431a95b23b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/CharacterLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.CharacterLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class CharacterLiteralInitialiser extends AbstractInitialiserBase implements ICharacterLiteralInitialiser { + @Override + public ICharacterLiteralInitialiser newInitialiser() { + return new CharacterLiteralInitialiser(); + } + + @Override + public CharacterLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createCharacterLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalDoubleLiteralInitialiser.java new file mode 100644 index 0000000000..4e361e2a80 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalDoubleLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.DecimalDoubleLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DecimalDoubleLiteralInitialiser extends AbstractInitialiserBase + implements IDecimalDoubleLiteralInitialiser { + @Override + public IDecimalDoubleLiteralInitialiser newInitialiser() { + return new DecimalDoubleLiteralInitialiser(); + } + + @Override + public DecimalDoubleLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createDecimalDoubleLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalFloatLiteralInitialiser.java new file mode 100644 index 0000000000..167c6b5ceb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalFloatLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.DecimalFloatLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DecimalFloatLiteralInitialiser extends AbstractInitialiserBase implements IDecimalFloatLiteralInitialiser { + @Override + public IDecimalFloatLiteralInitialiser newInitialiser() { + return new DecimalFloatLiteralInitialiser(); + } + + @Override + public DecimalFloatLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createDecimalFloatLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..edfbb5220b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalIntegerLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.DecimalIntegerLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DecimalIntegerLiteralInitialiser extends AbstractInitialiserBase + implements IDecimalIntegerLiteralInitialiser { + @Override + public IDecimalIntegerLiteralInitialiser newInitialiser() { + return new DecimalIntegerLiteralInitialiser(); + } + + @Override + public DecimalIntegerLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createDecimalIntegerLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalLongLiteralInitialiser.java new file mode 100644 index 0000000000..01cc1744b1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/DecimalLongLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.DecimalLongLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DecimalLongLiteralInitialiser extends AbstractInitialiserBase implements IDecimalLongLiteralInitialiser { + @Override + public IDecimalLongLiteralInitialiser newInitialiser() { + return new DecimalLongLiteralInitialiser(); + } + + @Override + public DecimalLongLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createDecimalLongLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexDoubleLiteralInitialiser.java new file mode 100644 index 0000000000..f0e1095075 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexDoubleLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.HexDoubleLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class HexDoubleLiteralInitialiser extends AbstractInitialiserBase implements IHexDoubleLiteralInitialiser { + @Override + public IHexDoubleLiteralInitialiser newInitialiser() { + return new HexDoubleLiteralInitialiser(); + } + + @Override + public HexDoubleLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createHexDoubleLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexFloatLiteralInitialiser.java new file mode 100644 index 0000000000..721b620fe4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexFloatLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.HexFloatLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class HexFloatLiteralInitialiser extends AbstractInitialiserBase implements IHexFloatLiteralInitialiser { + @Override + public IHexFloatLiteralInitialiser newInitialiser() { + return new HexFloatLiteralInitialiser(); + } + + @Override + public HexFloatLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createHexFloatLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..ae1be06c31 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexIntegerLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.HexIntegerLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class HexIntegerLiteralInitialiser extends AbstractInitialiserBase implements IHexIntegerLiteralInitialiser { + @Override + public IHexIntegerLiteralInitialiser newInitialiser() { + return new HexIntegerLiteralInitialiser(); + } + + @Override + public HexIntegerLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createHexIntegerLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexLongLiteralInitialiser.java new file mode 100644 index 0000000000..02181156db --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/HexLongLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.HexLongLiteral; +import org.emftext.language.java.literals.LiteralsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class HexLongLiteralInitialiser extends AbstractInitialiserBase implements IHexLongLiteralInitialiser { + @Override + public IHexLongLiteralInitialiser newInitialiser() { + return new HexLongLiteralInitialiser(); + } + + @Override + public HexLongLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createHexLongLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..cbba52710b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryIntegerLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.BinaryIntegerLiteral; + +public interface IBinaryIntegerLiteralInitialiser extends IIntegerLiteralInitialiser { + @Override + public BinaryIntegerLiteral instantiate(); + + public default boolean setBinaryValue(BinaryIntegerLiteral bil, BigInteger val) { + bil.setBinaryValue(val); + return (val == null && bil.getBinaryValue() == null) || bil.getBinaryValue().equals(val); + } + + public default boolean setBinaryValue(BinaryIntegerLiteral bil, int val) { + return this.setBinaryValue(bil, BigInteger.valueOf(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryLongLiteralInitialiser.java new file mode 100644 index 0000000000..b5bdd3d114 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBinaryLongLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.BinaryLongLiteral; + +public interface IBinaryLongLiteralInitialiser extends ILongLiteralInitialiser { + @Override + public BinaryLongLiteral instantiate(); + + public default boolean setBinaryValue(BinaryLongLiteral bil, BigInteger val) { + bil.setBinaryValue(val); + return (val == null && bil.getBinaryValue() == null) || bil.getBinaryValue().equals(val); + } + + public default boolean setBinaryValue(BinaryLongLiteral bil, long val) { + return this.setBinaryValue(bil, BigInteger.valueOf(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBooleanLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBooleanLiteralInitialiser.java new file mode 100644 index 0000000000..929c76a85d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IBooleanLiteralInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.BooleanLiteral; + +public interface IBooleanLiteralInitialiser extends ILiteralInitialiser { + @Override + public BooleanLiteral instantiate(); + + public default boolean setValue(BooleanLiteral bl, boolean val) { + bl.setValue(val); + return bl.isValue() == val; + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ICharacterLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ICharacterLiteralInitialiser.java new file mode 100644 index 0000000000..62fead3428 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ICharacterLiteralInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.CharacterLiteral; + +public interface ICharacterLiteralInitialiser extends ILiteralInitialiser { + @Override + public CharacterLiteral instantiate(); + + public default boolean setValue(CharacterLiteral cl, String val) { + cl.setValue(val); + return (val == null && cl.getValue() == null) || cl.getValue().equals(val); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalDoubleLiteralInitialiser.java new file mode 100644 index 0000000000..dea8c21f53 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalDoubleLiteralInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.DecimalDoubleLiteral; + +public interface IDecimalDoubleLiteralInitialiser extends IDoubleLiteralInitialiser { + @Override + public DecimalDoubleLiteral instantiate(); + + public default boolean setDecimalValue(DecimalDoubleLiteral ddl, double val) { + ddl.setDecimalValue(val); + return ddl.getDecimalValue() == val || (Double.isNaN(ddl.getDecimalValue()) && Double.isNaN(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalFloatLiteralInitialiser.java new file mode 100644 index 0000000000..46bb8d0ab1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalFloatLiteralInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.DecimalFloatLiteral; + +public interface IDecimalFloatLiteralInitialiser extends IFloatLiteralInitialiser { + @Override + public DecimalFloatLiteral instantiate(); + + public default boolean setDecimalValue(DecimalFloatLiteral dfl, float val) { + dfl.setDecimalValue(val); + return dfl.getDecimalValue() == val || (Float.isNaN(dfl.getDecimalValue()) && Float.isNaN(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..e087787f4e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalIntegerLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.DecimalIntegerLiteral; + +public interface IDecimalIntegerLiteralInitialiser extends IIntegerLiteralInitialiser { + @Override + public DecimalIntegerLiteral instantiate(); + + public default boolean setDecimalValue(DecimalIntegerLiteral dil, BigInteger val) { + dil.setDecimalValue(val); + return (val == null && dil.getDecimalValue() == null) || dil.getDecimalValue().equals(val); + } + + public default boolean setDecimalValue(DecimalIntegerLiteral dil, int val) { + return this.setDecimalValue(dil, BigInteger.valueOf(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalLongLiteralInitialiser.java new file mode 100644 index 0000000000..3266d6b667 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDecimalLongLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.DecimalLongLiteral; + +public interface IDecimalLongLiteralInitialiser extends ILongLiteralInitialiser { + @Override + public DecimalLongLiteral instantiate(); + + public default boolean setDecimalValue(DecimalLongLiteral dll, BigInteger val) { + dll.setDecimalValue(val); + return (val == null && dll.getDecimalValue() == null) || dll.getDecimalValue().equals(val); + } + + public default boolean setDecimalValue(DecimalLongLiteral dll, long val) { + return this.setDecimalValue(dll, BigInteger.valueOf(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDoubleLiteralInitialiser.java new file mode 100644 index 0000000000..1414cbbe1a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IDoubleLiteralInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.DoubleLiteral; + +public interface IDoubleLiteralInitialiser extends ILiteralInitialiser { + @Override + public DoubleLiteral instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IFloatLiteralInitialiser.java new file mode 100644 index 0000000000..7ae0d44abd --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IFloatLiteralInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.FloatLiteral; + +public interface IFloatLiteralInitialiser extends ILiteralInitialiser { + @Override + public FloatLiteral instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexDoubleLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexDoubleLiteralInitialiser.java new file mode 100644 index 0000000000..43c564b3e8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexDoubleLiteralInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.HexDoubleLiteral; + +public interface IHexDoubleLiteralInitialiser extends IDoubleLiteralInitialiser { + @Override + public HexDoubleLiteral instantiate(); + + public default boolean setHexValue(HexDoubleLiteral hdl, double val) { + hdl.setHexValue(val); + return hdl.getHexValue() == val || (Double.isNaN(hdl.getHexValue()) && Double.isNaN(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexFloatLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexFloatLiteralInitialiser.java new file mode 100644 index 0000000000..29ef53192e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexFloatLiteralInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.HexFloatLiteral; + +public interface IHexFloatLiteralInitialiser extends IFloatLiteralInitialiser { + @Override + public HexFloatLiteral instantiate(); + + public default boolean setHexValue(HexFloatLiteral hdl, float val) { + hdl.setHexValue(val); + return hdl.getHexValue() == val || (Float.isNaN(hdl.getHexValue()) && Float.isNaN(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..40eb272eef --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexIntegerLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.HexIntegerLiteral; + +public interface IHexIntegerLiteralInitialiser extends IIntegerLiteralInitialiser { + @Override + public HexIntegerLiteral instantiate(); + + public default boolean setHexValue(HexIntegerLiteral hil, BigInteger val) { + hil.setHexValue(val); + return (val == null && hil.getHexValue() == null) || hil.getHexValue().equals(val); + } + + public default boolean setHexValue(HexIntegerLiteral hil, int val) { + return this.setHexValue(hil, BigInteger.valueOf(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexLongLiteralInitialiser.java new file mode 100644 index 0000000000..08b986bf81 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IHexLongLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.HexLongLiteral; + +public interface IHexLongLiteralInitialiser extends ILongLiteralInitialiser { + @Override + public HexLongLiteral instantiate(); + + public default boolean setHexValue(HexLongLiteral hll, BigInteger val) { + hll.setHexValue(val); + return (val == null && hll.getHexValue() == null) || hll.getHexValue().equals(val); + } + + public default boolean setHexValue(HexLongLiteral hll, long val) { + return this.setHexValue(hll, BigInteger.valueOf(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..635a2ff193 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IIntegerLiteralInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.IntegerLiteral; + +public interface IIntegerLiteralInitialiser extends ILiteralInitialiser { + @Override + public IntegerLiteral instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILiteralInitialiser.java new file mode 100644 index 0000000000..6c34f41483 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILiteralInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.Literal; + +import cipm.consistency.initialisers.jamopp.expressions.IPrimaryExpressionInitialiser; + +public interface ILiteralInitialiser extends IPrimaryExpressionInitialiser { + @Override + public Literal instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILongLiteralInitialiser.java new file mode 100644 index 0000000000..ef1072d750 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ILongLiteralInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.LongLiteral; + +public interface ILongLiteralInitialiser extends ILiteralInitialiser { + @Override + public LongLiteral instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/INullLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/INullLiteralInitialiser.java new file mode 100644 index 0000000000..03c4ac6128 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/INullLiteralInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.NullLiteral; + +public interface INullLiteralInitialiser extends ILiteralInitialiser { + @Override + public NullLiteral instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..abdbb6eae4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalIntegerLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.OctalIntegerLiteral; + +public interface IOctalIntegerLiteralInitialiser extends IIntegerLiteralInitialiser { + @Override + public OctalIntegerLiteral instantiate(); + + public default boolean setOctalValue(OctalIntegerLiteral oil, BigInteger val) { + oil.setOctalValue(val); + return (val == null && oil.getOctalValue() == null) || oil.getOctalValue().equals(val); + } + + public default boolean setOctalValue(OctalIntegerLiteral oil, int val) { + return this.setOctalValue(oil, BigInteger.valueOf(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalLongLiteralInitialiser.java new file mode 100644 index 0000000000..6e1f039e20 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IOctalLongLiteralInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.math.BigInteger; + +import org.emftext.language.java.literals.OctalLongLiteral; + +public interface IOctalLongLiteralInitialiser extends ILongLiteralInitialiser { + @Override + public OctalLongLiteral instantiate(); + + public default boolean setOctalValue(OctalLongLiteral oll, BigInteger val) { + oll.setOctalValue(val); + return (val == null && oll.getOctalValue() == null) || oll.getOctalValue().equals(val); + } + + public default boolean setOctalValue(OctalLongLiteral oll, long val) { + return this.setOctalValue(oll, BigInteger.valueOf(val)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISelfInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISelfInitialiser.java new file mode 100644 index 0000000000..80ba9fc0a2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISelfInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.Self; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface ISelfInitialiser extends ICommentableInitialiser { + @Override + public Self instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISuperInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISuperInitialiser.java new file mode 100644 index 0000000000..572c609cd0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ISuperInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.Super; + +public interface ISuperInitialiser extends ISelfInitialiser { + @Override + public Super instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IThisInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IThisInitialiser.java new file mode 100644 index 0000000000..4f6cf1d876 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/IThisInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.This; + +public interface IThisInitialiser extends ISelfInitialiser { + @Override + public This instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/LiteralsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/LiteralsInitialiserPackage.java new file mode 100644 index 0000000000..54128509bd --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/LiteralsInitialiserPackage.java @@ -0,0 +1,34 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class LiteralsInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new BinaryIntegerLiteralInitialiser(), + new BinaryLongLiteralInitialiser(), new BooleanLiteralInitialiser(), new CharacterLiteralInitialiser(), + new DecimalDoubleLiteralInitialiser(), new DecimalFloatLiteralInitialiser(), + new DecimalIntegerLiteralInitialiser(), new DecimalLongLiteralInitialiser(), + new HexDoubleLiteralInitialiser(), new HexFloatLiteralInitialiser(), new HexIntegerLiteralInitialiser(), + new HexLongLiteralInitialiser(), new NullLiteralInitialiser(), new OctalIntegerLiteralInitialiser(), + new OctalLongLiteralInitialiser(), new SuperInitialiser(), new ThisInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IBinaryIntegerLiteralInitialiser.class, IBinaryLongLiteralInitialiser.class, + IBooleanLiteralInitialiser.class, ICharacterLiteralInitialiser.class, + IDecimalDoubleLiteralInitialiser.class, IDecimalFloatLiteralInitialiser.class, + IDecimalIntegerLiteralInitialiser.class, IDecimalLongLiteralInitialiser.class, + IDoubleLiteralInitialiser.class, IFloatLiteralInitialiser.class, IHexDoubleLiteralInitialiser.class, + IHexFloatLiteralInitialiser.class, IHexIntegerLiteralInitialiser.class, + IHexLongLiteralInitialiser.class, IIntegerLiteralInitialiser.class, ILiteralInitialiser.class, + ILongLiteralInitialiser.class, INullLiteralInitialiser.class, IOctalIntegerLiteralInitialiser.class, + IOctalLongLiteralInitialiser.class, ISelfInitialiser.class, ISuperInitialiser.class, + IThisInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/NullLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/NullLiteralInitialiser.java new file mode 100644 index 0000000000..c1c0347de7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/NullLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.LiteralsFactory; +import org.emftext.language.java.literals.NullLiteral; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NullLiteralInitialiser extends AbstractInitialiserBase implements INullLiteralInitialiser { + @Override + public INullLiteralInitialiser newInitialiser() { + return new NullLiteralInitialiser(); + } + + @Override + public NullLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createNullLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalIntegerLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalIntegerLiteralInitialiser.java new file mode 100644 index 0000000000..16651f562b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalIntegerLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.LiteralsFactory; +import org.emftext.language.java.literals.OctalIntegerLiteral; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class OctalIntegerLiteralInitialiser extends AbstractInitialiserBase implements IOctalIntegerLiteralInitialiser { + @Override + public IOctalIntegerLiteralInitialiser newInitialiser() { + return new OctalIntegerLiteralInitialiser(); + } + + @Override + public OctalIntegerLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createOctalIntegerLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalLongLiteralInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalLongLiteralInitialiser.java new file mode 100644 index 0000000000..bd58a855f4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/OctalLongLiteralInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.LiteralsFactory; +import org.emftext.language.java.literals.OctalLongLiteral; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class OctalLongLiteralInitialiser extends AbstractInitialiserBase implements IOctalLongLiteralInitialiser { + @Override + public IOctalLongLiteralInitialiser newInitialiser() { + return new OctalLongLiteralInitialiser(); + } + + @Override + public OctalLongLiteral instantiate() { + return LiteralsFactory.eINSTANCE.createOctalLongLiteral(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/SuperInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/SuperInitialiser.java new file mode 100644 index 0000000000..659d39cbb8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/SuperInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.LiteralsFactory; +import org.emftext.language.java.literals.Super; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SuperInitialiser extends AbstractInitialiserBase implements ISuperInitialiser { + @Override + public ISuperInitialiser newInitialiser() { + return new SuperInitialiser(); + } + + @Override + public Super instantiate() { + return LiteralsFactory.eINSTANCE.createSuper(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ThisInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ThisInitialiser.java new file mode 100644 index 0000000000..190b6d0183 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/ThisInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.literals; + +import org.emftext.language.java.literals.LiteralsFactory; +import org.emftext.language.java.literals.This; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ThisInitialiser extends AbstractInitialiserBase implements IThisInitialiser { + @Override + public IThisInitialiser newInitialiser() { + return new ThisInitialiser(); + } + + @Override + public This instantiate() { + return LiteralsFactory.eINSTANCE.createThis(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/package-info.java new file mode 100644 index 0000000000..8eb5b75ed8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/literals/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.literals}. + */ +package cipm.consistency.initialisers.jamopp.literals; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/AdditionalFieldInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/AdditionalFieldInitialiser.java new file mode 100644 index 0000000000..91e7fac024 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/AdditionalFieldInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.MembersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.members.AdditionalField; + +public class AdditionalFieldInitialiser extends AbstractInitialiserBase implements IAdditionalFieldInitialiser { + @Override + public IAdditionalFieldInitialiser newInitialiser() { + return new AdditionalFieldInitialiser(); + } + + @Override + public AdditionalField instantiate() { + return MembersFactory.eINSTANCE.createAdditionalField(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ClassMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ClassMethodInitialiser.java new file mode 100644 index 0000000000..f7511ca2d8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ClassMethodInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.MembersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.members.ClassMethod; + +public class ClassMethodInitialiser extends AbstractInitialiserBase implements IClassMethodInitialiser { + @Override + public ClassMethod instantiate() { + return MembersFactory.eINSTANCE.createClassMethod(); + } + + @Override + public ClassMethodInitialiser newInitialiser() { + return new ClassMethodInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ConstructorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ConstructorInitialiser.java new file mode 100644 index 0000000000..8f24387404 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/ConstructorInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.MembersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.members.Constructor; + +public class ConstructorInitialiser extends AbstractInitialiserBase implements IConstructorInitialiser { + @Override + public Constructor instantiate() { + return MembersFactory.eINSTANCE.createConstructor(); + } + + @Override + public ConstructorInitialiser newInitialiser() { + return new ConstructorInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EmptyMemberInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EmptyMemberInitialiser.java new file mode 100644 index 0000000000..75ae9bfb76 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EmptyMemberInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.EmptyMember; +import org.emftext.language.java.members.MembersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class EmptyMemberInitialiser extends AbstractInitialiserBase implements IEmptyMemberInitialiser { + @Override + public IEmptyMemberInitialiser newInitialiser() { + return new EmptyMemberInitialiser(); + } + + @Override + public EmptyMember instantiate() { + return MembersFactory.eINSTANCE.createEmptyMember(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EnumConstantInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EnumConstantInitialiser.java new file mode 100644 index 0000000000..034568dc67 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/EnumConstantInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.MembersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.members.EnumConstant; + +public class EnumConstantInitialiser extends AbstractInitialiserBase implements IEnumConstantInitialiser { + @Override + public EnumConstant instantiate() { + return MembersFactory.eINSTANCE.createEnumConstant(); + } + + @Override + public IEnumConstantInitialiser newInitialiser() { + return new EnumConstantInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/FieldInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/FieldInitialiser.java new file mode 100644 index 0000000000..4285301f7c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/FieldInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.Field; +import org.emftext.language.java.members.MembersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class FieldInitialiser extends AbstractInitialiserBase implements IFieldInitialiser { + @Override + public Field instantiate() { + return MembersFactory.eINSTANCE.createField(); + } + + @Override + public FieldInitialiser newInitialiser() { + return new FieldInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IAdditionalFieldInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IAdditionalFieldInitialiser.java new file mode 100644 index 0000000000..7e76c708de --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IAdditionalFieldInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.AdditionalField; + +import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser; +import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IAdditionalFieldInitialiser + extends IInitializableInitialiser, IReferenceableElementInitialiser, ITypedElementInitialiser { + @Override + public AdditionalField instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IClassMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IClassMethodInitialiser.java new file mode 100644 index 0000000000..ee2cb6b255 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IClassMethodInitialiser.java @@ -0,0 +1,57 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.ClassMethod; +import org.emftext.language.java.statements.Statement; +import org.emftext.language.java.statements.StatementListContainer; + +import cipm.consistency.initialisers.jamopp.statements.IStatementListContainerInitialiser; + +/** + * An interface meant for {@link IInitialiser} implementors that are supposed to + * create {@link ClassMethod} instances.
+ *
+ * Due to inconsistencies regarding {@link ClassMethod}, it provides 2 methods + * for adding {@link Statement} instances to it. Adding multiple statements is + * only possible via {@code classMethod.getStatement().add(...)}, which only + * works if classMethod has a {@link Block} set as its statement. This can be + * achieved by passing a {@link Block} instance to + * {@link #setStatement(org.emftext.language.java.statements.StatementContainer, Statement)}. + *
+ *
+ * Otherwise, one may only add a single statement to {@link ClassMethod} via + * {@code classMethod.setStatement(...)}. Note that the said method will + * REPLACE the former statement when used. + * + * @author Alp Torac Genc + * + */ +public interface IClassMethodInitialiser extends IMethodInitialiser, IStatementListContainerInitialiser { + @Override + public ClassMethod instantiate(); + + /** + * A {@link Block} instance must be added to slc (a {@link ClassMethod} in this + * case) for this method to function as intended. This can be done via + * {@link #setStatement(org.emftext.language.java.statements.StatementContainer, Statement)}. + * If slc already has its {@link Statement} set via + * {@link #setStatement(org.emftext.language.java.statements.StatementContainer, Statement)}, + * that statement must be saved in a temporal variable before calling the said + * method. It can then be re-added to slc via calling this method.
+ *
+ * Otherwise, {@code slc.setStatement(st)} can be used to add a single + * {@link Statement} to slc. Note that the {@link Statement} added to slc + * this way WILL BE REPLACED, if {@code slc.setStatement(anotherSt)} is + * called.
+ *
+ * Overridden only to provide commentary. + */ + @Override + public default boolean addStatement(StatementListContainer slc, Statement st) { + return IStatementListContainerInitialiser.super.addStatement(slc, st); + } + + @Override + public default boolean canContainStatements(StatementListContainer slc) { + return ((ClassMethod) slc).getBlock() != null; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IConstructorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IConstructorInitialiser.java new file mode 100644 index 0000000000..6dc7082e0f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IConstructorInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.Constructor; +import org.emftext.language.java.statements.StatementListContainer; + +import cipm.consistency.initialisers.jamopp.generics.ITypeParametrizableInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser; +import cipm.consistency.initialisers.jamopp.parameters.IParametrizableInitialiser; +import cipm.consistency.initialisers.jamopp.statements.IBlockContainerInitialiser; +import cipm.consistency.initialisers.jamopp.statements.IStatementListContainerInitialiser; + +public interface IConstructorInitialiser extends IAnnotableAndModifiableInitialiser, IBlockContainerInitialiser, + IExceptionThrowerInitialiser, IMemberInitialiser, IParametrizableInitialiser, + IStatementListContainerInitialiser, ITypeParametrizableInitialiser { + + @Override + public Constructor instantiate(); + + @Override + public default boolean canContainStatements(StatementListContainer slc) { + return ((Constructor) slc).getBlock() != null; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEmptyMemberInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEmptyMemberInitialiser.java new file mode 100644 index 0000000000..252f86424b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEmptyMemberInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.EmptyMember; + +public interface IEmptyMemberInitialiser extends IMemberInitialiser { + @Override + public EmptyMember instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEnumConstantInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEnumConstantInitialiser.java new file mode 100644 index 0000000000..52bf696e49 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IEnumConstantInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.classifiers.AnonymousClass; +import org.emftext.language.java.members.EnumConstant; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; +import cipm.consistency.initialisers.jamopp.references.IArgumentableInitialiser; +import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser; + +public interface IEnumConstantInitialiser + extends IArgumentableInitialiser, IAnnotableInitialiser, IReferenceableElementInitialiser { + @Override + public EnumConstant instantiate(); + + public default boolean setAnonymousClass(EnumConstant ec, AnonymousClass anonymousCls) { + ec.setAnonymousClass(anonymousCls); + return (anonymousCls == null && ec.getAnonymousClass() == null) || ec.getAnonymousClass().equals(anonymousCls); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IExceptionThrowerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IExceptionThrowerInitialiser.java new file mode 100644 index 0000000000..514a657f92 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IExceptionThrowerInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.ExceptionThrower; +import org.emftext.language.java.types.NamespaceClassifierReference; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IExceptionThrowerInitialiser extends ICommentableInitialiser { + @Override + public ExceptionThrower instantiate(); + + public default boolean addException(ExceptionThrower extt, NamespaceClassifierReference exception) { + if (exception != null) { + extt.getExceptions().add(exception); + return extt.getExceptions().contains(exception); + } + return true; + } + + public default boolean addExceptions(ExceptionThrower extt, NamespaceClassifierReference[] exceptions) { + return this.doMultipleModifications(extt, exceptions, this::addException); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IFieldInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IFieldInitialiser.java new file mode 100644 index 0000000000..0ce8522e30 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IFieldInitialiser.java @@ -0,0 +1,26 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.AdditionalField; +import org.emftext.language.java.members.Field; + +import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser; +import cipm.consistency.initialisers.jamopp.variables.IVariableInitialiser; + +public interface IFieldInitialiser extends IAnnotableAndModifiableInitialiser, IInitializableInitialiser, + IMemberInitialiser, IVariableInitialiser { + @Override + public Field instantiate(); + + public default boolean addAdditionalField(Field field, AdditionalField additionalField) { + if (additionalField != null) { + field.getAdditionalFields().add(additionalField); + return field.getAdditionalFields().contains(additionalField); + } + return true; + } + + public default boolean addAdditionalFields(Field field, AdditionalField[] additionalFields) { + return this.doMultipleModifications(field, additionalFields, this::addAdditionalField); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IInterfaceMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IInterfaceMethodInitialiser.java new file mode 100644 index 0000000000..f109eb2128 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IInterfaceMethodInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.annotations.AnnotationValue; +import org.emftext.language.java.members.InterfaceMethod; + +public interface IInterfaceMethodInitialiser extends IMethodInitialiser { + @Override + public InterfaceMethod instantiate(); + + public default boolean setDefaultValue(InterfaceMethod im, AnnotationValue defVal) { + im.setDefaultValue(defVal); + return (defVal == null && im.getDefaultValue() == null) || im.getDefaultValue().equals(defVal); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberContainerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberContainerInitialiser.java new file mode 100644 index 0000000000..065629a33b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberContainerInitialiser.java @@ -0,0 +1,48 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.Member; +import org.emftext.language.java.members.MemberContainer; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +/** + * An interface meant to be implemented by initialisers, which are supposed to + * create {@link MemberContainer} instances.
+ *
+ * {@code mc.createField(...)} method internally creates a {@link Field}, adds + * it to the calling member container mc and returns the said field. It + * introduces no new ways to modify the calling member container.
+ *
+ * Getter methods of {@link MemberContainer} do not return modifiable lists, + * except for {@code mc.getMembers()} and {@code mc.getDefaultMembers()}. + * + * @author Alp Torac Genc + */ +public interface IMemberContainerInitialiser extends ICommentableInitialiser { + @Override + public MemberContainer instantiate(); + + public default boolean addMember(MemberContainer mc, Member mem) { + if (mem != null) { + mc.getMembers().add(mem); + return mc.getMembers().contains(mem); + } + return true; + } + + public default boolean addMembers(MemberContainer mc, Member[] mems) { + return this.doMultipleModifications(mc, mems, this::addMember); + } + + public default boolean addDefaultMember(MemberContainer mc, Member defMem) { + if (defMem != null) { + mc.getDefaultMembers().add(defMem); + return mc.getDefaultMembers().contains(defMem); + } + return true; + } + + public default boolean addDefaultMembers(MemberContainer mc, Member[] defMems) { + return this.doMultipleModifications(mc, defMems, this::addDefaultMember); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberInitialiser.java new file mode 100644 index 0000000000..90a0527ee9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMemberInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.Member; + +import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser; + +public interface IMemberInitialiser extends INamedElementInitialiser { + @Override + public Member instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMethodInitialiser.java new file mode 100644 index 0000000000..49b6d0887f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/IMethodInitialiser.java @@ -0,0 +1,17 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.Method; + +import cipm.consistency.initialisers.jamopp.generics.ITypeParametrizableInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser; +import cipm.consistency.initialisers.jamopp.parameters.IParametrizableInitialiser; +import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser; +import cipm.consistency.initialisers.jamopp.statements.IStatementContainerInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IMethodInitialiser extends IAnnotableAndModifiableInitialiser, IExceptionThrowerInitialiser, + IMemberInitialiser, IReferenceableElementInitialiser, IParametrizableInitialiser, + IStatementContainerInitialiser, ITypedElementInitialiser, ITypeParametrizableInitialiser { + @Override + public Method instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/InterfaceMethodInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/InterfaceMethodInitialiser.java new file mode 100644 index 0000000000..b4e8a25467 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/InterfaceMethodInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.members; + +import org.emftext.language.java.members.MembersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.members.InterfaceMethod; + +public class InterfaceMethodInitialiser extends AbstractInitialiserBase implements IInterfaceMethodInitialiser { + @Override + public InterfaceMethod instantiate() { + return MembersFactory.eINSTANCE.createInterfaceMethod(); + } + + @Override + public InterfaceMethodInitialiser newInitialiser() { + return new InterfaceMethodInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/MembersInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/MembersInitialiserPackage.java new file mode 100644 index 0000000000..f3ad53c127 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/MembersInitialiserPackage.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.jamopp.members; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class MembersInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new AdditionalFieldInitialiser(), new ClassMethodInitialiser(), + new ConstructorInitialiser(), new EmptyMemberInitialiser(), new EnumConstantInitialiser(), + new FieldInitialiser(), new InterfaceMethodInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAdditionalFieldInitialiser.class, IClassMethodInitialiser.class, + IConstructorInitialiser.class, IEmptyMemberInitialiser.class, IEnumConstantInitialiser.class, + IExceptionThrowerInitialiser.class, IFieldInitialiser.class, IInterfaceMethodInitialiser.class, + IMemberContainerInitialiser.class, IMemberInitialiser.class, IMethodInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/package-info.java new file mode 100644 index 0000000000..c43905ba82 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/members/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.members}. + */ +package cipm.consistency.initialisers.jamopp.members; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/AbstractInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/AbstractInitialiser.java new file mode 100644 index 0000000000..a6f4ecab5b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/AbstractInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Abstract; +import org.emftext.language.java.modifiers.ModifiersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AbstractInitialiser extends AbstractInitialiserBase implements IAbstractInitialiser { + @Override + public IAbstractInitialiser newInitialiser() { + return new AbstractInitialiser(); + } + + @Override + public Abstract instantiate() { + return ModifiersFactory.eINSTANCE.createAbstract(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/DefaultInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/DefaultInitialiser.java new file mode 100644 index 0000000000..66df255205 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/DefaultInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Default; +import org.emftext.language.java.modifiers.ModifiersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DefaultInitialiser extends AbstractInitialiserBase implements IDefaultInitialiser { + @Override + public IDefaultInitialiser newInitialiser() { + return new DefaultInitialiser(); + } + + @Override + public Default instantiate() { + return ModifiersFactory.eINSTANCE.createDefault(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/FinalInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/FinalInitialiser.java new file mode 100644 index 0000000000..3a383d5d44 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/FinalInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Final; +import org.emftext.language.java.modifiers.ModifiersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class FinalInitialiser extends AbstractInitialiserBase implements IFinalInitialiser { + @Override + public IFinalInitialiser newInitialiser() { + return new FinalInitialiser(); + } + + @Override + public Final instantiate() { + return ModifiersFactory.eINSTANCE.createFinal(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAbstractInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAbstractInitialiser.java new file mode 100644 index 0000000000..09877b9896 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAbstractInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Abstract; + +public interface IAbstractInitialiser extends IModifierInitialiser { + @Override + public Abstract instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotableAndModifiableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotableAndModifiableInitialiser.java new file mode 100644 index 0000000000..e9fee2ccbc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotableAndModifiableInitialiser.java @@ -0,0 +1,53 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.annotations.AnnotationInstance; +import org.emftext.language.java.modifiers.AnnotableAndModifiable; +import org.emftext.language.java.modifiers.Modifier; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IAnnotableAndModifiableInitialiser extends ICommentableInitialiser { + @Override + public AnnotableAndModifiable instantiate(); + + public default boolean addModifier(AnnotableAndModifiable aam, Modifier modif) { + if (modif != null) { + aam.addModifier(modif); + return aam.getAnnotationsAndModifiers().contains(modif) && aam.hasModifier(modif.getClass()) + && aam.getModifiers().contains(modif); + } + return true; + } + + public default boolean addModifiers(AnnotableAndModifiable aam, Modifier[] modifs) { + return this.doMultipleModifications(aam, modifs, this::addModifier); + } + + public default boolean addAnnotationInstance(AnnotableAndModifiable aam, AnnotationInstance annoAndModif) { + if (aam != null) { + aam.getAnnotationsAndModifiers().add(annoAndModif); + return aam.getAnnotationsAndModifiers().contains(annoAndModif) + && aam.getAnnotationInstances().contains(annoAndModif); + } + return true; + } + + public default boolean addAnnotationInstances(AnnotableAndModifiable aam, AnnotationInstance[] annoAndModifArr) { + return this.doMultipleModifications(aam, annoAndModifArr, this::addAnnotationInstance); + } + + public default boolean makePrivate(AnnotableAndModifiable aam) { + aam.makePrivate(); + return aam.isPrivate(); + } + + public default boolean makeProtected(AnnotableAndModifiable aam) { + aam.makeProtected(); + return aam.isProtected(); + } + + public default boolean makePublic(AnnotableAndModifiable aam) { + aam.makePublic(); + return aam.isPublic(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotationInstanceOrModifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotationInstanceOrModifierInitialiser.java new file mode 100644 index 0000000000..465882b611 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IAnnotationInstanceOrModifierInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.AnnotationInstanceOrModifier; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IAnnotationInstanceOrModifierInitialiser extends ICommentableInitialiser { + @Override + public AnnotationInstanceOrModifier instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IDefaultInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IDefaultInitialiser.java new file mode 100644 index 0000000000..03a7ec9693 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IDefaultInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Default; + +public interface IDefaultInitialiser extends IModifierInitialiser { + @Override + public Default instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IFinalInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IFinalInitialiser.java new file mode 100644 index 0000000000..ef4990dda1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IFinalInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Final; + +public interface IFinalInitialiser extends IModifierInitialiser { + @Override + public Final instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifiableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifiableInitialiser.java new file mode 100644 index 0000000000..661c72291d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifiableInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Modifiable; +import org.emftext.language.java.modifiers.Modifier; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IModifiableInitialiser extends ICommentableInitialiser { + @Override + public Modifiable instantiate(); + + public default boolean addModifier(Modifiable modifiable, Modifier modifier) { + if (modifier != null) { + modifiable.getModifiers().add(modifier); + return modifiable.getModifiers().contains(modifier); + } + return true; + } + + public default boolean addModifiers(Modifiable modifiable, Modifier[] modifiers) { + return this.doMultipleModifications(modifiable, modifiers, this::addModifier); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifierInitialiser.java new file mode 100644 index 0000000000..27c5c5fa2e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModifierInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Modifier; + +public interface IModifierInitialiser extends IAnnotationInstanceOrModifierInitialiser { + @Override + public Modifier instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModuleRequiresModifierInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModuleRequiresModifierInitialiser.java new file mode 100644 index 0000000000..2aaffbf9ab --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IModuleRequiresModifierInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModuleRequiresModifier; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IModuleRequiresModifierInitialiser extends ICommentableInitialiser { + @Override + public ModuleRequiresModifier instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/INativeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/INativeInitialiser.java new file mode 100644 index 0000000000..46cc6644c7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/INativeInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Native; + +public interface INativeInitialiser extends IModifierInitialiser { + @Override + public Native instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IOpenInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IOpenInitialiser.java new file mode 100644 index 0000000000..7e7bf42537 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IOpenInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Open; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IOpenInitialiser extends ICommentableInitialiser { + @Override + public Open instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPrivateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPrivateInitialiser.java new file mode 100644 index 0000000000..fd5e02c8ac --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPrivateInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Private; + +public interface IPrivateInitialiser extends IModifierInitialiser { + @Override + public Private instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IProtectedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IProtectedInitialiser.java new file mode 100644 index 0000000000..b065700663 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IProtectedInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Protected; + +public interface IProtectedInitialiser extends IModifierInitialiser { + @Override + public Protected instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPublicInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPublicInitialiser.java new file mode 100644 index 0000000000..167a7c7d0e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IPublicInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Public; + +public interface IPublicInitialiser extends IModifierInitialiser { + @Override + public Public instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStaticInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStaticInitialiser.java new file mode 100644 index 0000000000..717eb299cd --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStaticInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Static; + +public interface IStaticInitialiser extends IModifierInitialiser, IModuleRequiresModifierInitialiser { + @Override + public Static instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStrictfpInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStrictfpInitialiser.java new file mode 100644 index 0000000000..6358b945b7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IStrictfpInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Strictfp; + +public interface IStrictfpInitialiser extends IModifierInitialiser { + @Override + public Strictfp instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ISynchronizedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ISynchronizedInitialiser.java new file mode 100644 index 0000000000..756db7b74f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ISynchronizedInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Synchronized; + +public interface ISynchronizedInitialiser extends IModifierInitialiser { + @Override + public Synchronized instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransientInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransientInitialiser.java new file mode 100644 index 0000000000..79bebacc23 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransientInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Transient; + +public interface ITransientInitialiser extends IModifierInitialiser { + @Override + public Transient instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransitiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransitiveInitialiser.java new file mode 100644 index 0000000000..26fd343e6f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ITransitiveInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Transitive; + +public interface ITransitiveInitialiser extends IModuleRequiresModifierInitialiser { + @Override + public Transitive instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IVolatileInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IVolatileInitialiser.java new file mode 100644 index 0000000000..f3e15c56c1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/IVolatileInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.Volatile; + +public interface IVolatileInitialiser extends IModifierInitialiser { + @Override + public Volatile instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ModifiersInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ModifiersInitialiserPackage.java new file mode 100644 index 0000000000..9c9ceec4c6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ModifiersInitialiserPackage.java @@ -0,0 +1,29 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ModifiersInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new AbstractInitialiser(), new DefaultInitialiser(), + new FinalInitialiser(), new NativeInitialiser(), new OpenInitialiser(), new PrivateInitialiser(), + new ProtectedInitialiser(), new PublicInitialiser(), new StaticInitialiser(), new StrictfpInitialiser(), + new SynchronizedInitialiser(), new TransientInitialiser(), new TransitiveInitialiser(), + new VolatileInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAbstractInitialiser.class, IAnnotableAndModifiableInitialiser.class, + IAnnotationInstanceOrModifierInitialiser.class, IDefaultInitialiser.class, IFinalInitialiser.class, + IModifiableInitialiser.class, IModifierInitialiser.class, IModuleRequiresModifierInitialiser.class, + INativeInitialiser.class, IOpenInitialiser.class, IPrivateInitialiser.class, + IProtectedInitialiser.class, IPublicInitialiser.class, IStaticInitialiser.class, + IStrictfpInitialiser.class, ISynchronizedInitialiser.class, ITransientInitialiser.class, + ITransitiveInitialiser.class, IVolatileInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/NativeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/NativeInitialiser.java new file mode 100644 index 0000000000..fe50335de2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/NativeInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Native; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NativeInitialiser extends AbstractInitialiserBase implements INativeInitialiser { + @Override + public INativeInitialiser newInitialiser() { + return new NativeInitialiser(); + } + + @Override + public Native instantiate() { + return ModifiersFactory.eINSTANCE.createNative(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/OpenInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/OpenInitialiser.java new file mode 100644 index 0000000000..3f6a736753 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/OpenInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Open; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class OpenInitialiser extends AbstractInitialiserBase implements IOpenInitialiser { + @Override + public IOpenInitialiser newInitialiser() { + return new OpenInitialiser(); + } + + @Override + public Open instantiate() { + return ModifiersFactory.eINSTANCE.createOpen(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PrivateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PrivateInitialiser.java new file mode 100644 index 0000000000..30d2eacd08 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PrivateInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Private; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PrivateInitialiser extends AbstractInitialiserBase implements IPrivateInitialiser { + @Override + public IPrivateInitialiser newInitialiser() { + return new PrivateInitialiser(); + } + + @Override + public Private instantiate() { + return ModifiersFactory.eINSTANCE.createPrivate(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ProtectedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ProtectedInitialiser.java new file mode 100644 index 0000000000..04d43fb70b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/ProtectedInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Protected; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ProtectedInitialiser extends AbstractInitialiserBase implements IProtectedInitialiser { + @Override + public IProtectedInitialiser newInitialiser() { + return new ProtectedInitialiser(); + } + + @Override + public Protected instantiate() { + return ModifiersFactory.eINSTANCE.createProtected(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PublicInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PublicInitialiser.java new file mode 100644 index 0000000000..359133dc9f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/PublicInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Public; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PublicInitialiser extends AbstractInitialiserBase implements IPublicInitialiser { + @Override + public IPublicInitialiser newInitialiser() { + return new PublicInitialiser(); + } + + @Override + public Public instantiate() { + return ModifiersFactory.eINSTANCE.createPublic(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StaticInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StaticInitialiser.java new file mode 100644 index 0000000000..a0e7a1c774 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StaticInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Static; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class StaticInitialiser extends AbstractInitialiserBase implements IStaticInitialiser { + @Override + public IStaticInitialiser newInitialiser() { + return new StaticInitialiser(); + } + + @Override + public Static instantiate() { + return ModifiersFactory.eINSTANCE.createStatic(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StrictfpInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StrictfpInitialiser.java new file mode 100644 index 0000000000..959fb50843 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/StrictfpInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Strictfp; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class StrictfpInitialiser extends AbstractInitialiserBase implements IStrictfpInitialiser { + @Override + public IStrictfpInitialiser newInitialiser() { + return new StrictfpInitialiser(); + } + + @Override + public Strictfp instantiate() { + return ModifiersFactory.eINSTANCE.createStrictfp(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/SynchronizedInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/SynchronizedInitialiser.java new file mode 100644 index 0000000000..c34e647443 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/SynchronizedInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Synchronized; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SynchronizedInitialiser extends AbstractInitialiserBase implements ISynchronizedInitialiser { + @Override + public ISynchronizedInitialiser newInitialiser() { + return new SynchronizedInitialiser(); + } + + @Override + public Synchronized instantiate() { + return ModifiersFactory.eINSTANCE.createSynchronized(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransientInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransientInitialiser.java new file mode 100644 index 0000000000..6306cb488c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransientInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Transient; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class TransientInitialiser extends AbstractInitialiserBase implements ITransientInitialiser { + @Override + public ITransientInitialiser newInitialiser() { + return new TransientInitialiser(); + } + + @Override + public Transient instantiate() { + return ModifiersFactory.eINSTANCE.createTransient(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransitiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransitiveInitialiser.java new file mode 100644 index 0000000000..e26b3311ff --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/TransitiveInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Transitive; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class TransitiveInitialiser extends AbstractInitialiserBase implements ITransitiveInitialiser { + @Override + public ITransitiveInitialiser newInitialiser() { + return new TransitiveInitialiser(); + } + + @Override + public Transitive instantiate() { + return ModifiersFactory.eINSTANCE.createTransitive(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/VolatileInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/VolatileInitialiser.java new file mode 100644 index 0000000000..3083085f00 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/VolatileInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modifiers; + +import org.emftext.language.java.modifiers.ModifiersFactory; +import org.emftext.language.java.modifiers.Volatile; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class VolatileInitialiser extends AbstractInitialiserBase implements IVolatileInitialiser { + @Override + public IVolatileInitialiser newInitialiser() { + return new VolatileInitialiser(); + } + + @Override + public Volatile instantiate() { + return ModifiersFactory.eINSTANCE.createVolatile(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/package-info.java new file mode 100644 index 0000000000..cb720cbcf9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modifiers/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.modifiers}. + */ +package cipm.consistency.initialisers.jamopp.modifiers; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ExportsModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ExportsModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..4e6a5f7640 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ExportsModuleDirectiveInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ModulesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.modules.ExportsModuleDirective; + +public class ExportsModuleDirectiveInitialiser extends AbstractInitialiserBase + implements IExportsModuleDirectiveInitialiser { + @Override + public IExportsModuleDirectiveInitialiser newInitialiser() { + return new ExportsModuleDirectiveInitialiser(); + } + + @Override + public ExportsModuleDirective instantiate() { + return ModulesFactory.eINSTANCE.createExportsModuleDirective(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IAccessProvidingModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IAccessProvidingModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..a5cebd8d4f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IAccessProvidingModuleDirectiveInitialiser.java @@ -0,0 +1,31 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.containers.Package; +import org.emftext.language.java.modules.AccessProvidingModuleDirective; +import org.emftext.language.java.modules.ModuleReference; + +import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser; + +public interface IAccessProvidingModuleDirectiveInitialiser + extends IModuleDirectiveInitialiser, INamespaceAwareElementInitialiser { + @Override + public AccessProvidingModuleDirective instantiate(); + + public default boolean setAccessablePackage(AccessProvidingModuleDirective apmd, Package accessablePac) { + apmd.setAccessablePackage(accessablePac); + return (accessablePac == null && apmd.getAccessablePackage() == null) + || apmd.getAccessablePackage().equals(accessablePac); + } + + public default boolean addModule(AccessProvidingModuleDirective apmd, ModuleReference mod) { + if (mod != null) { + apmd.getModules().add(mod); + return apmd.getModules().contains(mod); + } + return true; + } + + public default boolean addModules(AccessProvidingModuleDirective apmd, ModuleReference[] mods) { + return this.doMultipleModifications(apmd, mods, this::addModule); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IExportsModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IExportsModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..fb47a93778 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IExportsModuleDirectiveInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ExportsModuleDirective; + +public interface IExportsModuleDirectiveInitialiser extends IAccessProvidingModuleDirectiveInitialiser { + @Override + public ExportsModuleDirective instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..de2f1b1183 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleDirectiveInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ModuleDirective; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IModuleDirectiveInitialiser extends ICommentableInitialiser { + @Override + public ModuleDirective instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleReferenceInitialiser.java new file mode 100644 index 0000000000..5d9f4cbf20 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IModuleReferenceInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.containers.Module; +import org.emftext.language.java.modules.ModuleReference; + +import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser; + +public interface IModuleReferenceInitialiser extends INamespaceAwareElementInitialiser { + @Override + public ModuleReference instantiate(); + + public default boolean setTarget(ModuleReference mref, Module target) { + mref.setTarget(target); + return (target == null && mref.getTarget() == null) || mref.getTarget().equals(target); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IOpensModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IOpensModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..c70121f14d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IOpensModuleDirectiveInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.OpensModuleDirective; + +public interface IOpensModuleDirectiveInitialiser extends IAccessProvidingModuleDirectiveInitialiser { + @Override + public OpensModuleDirective instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IProvidesModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IProvidesModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..a868d73fe9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IProvidesModuleDirectiveInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ProvidesModuleDirective; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IProvidesModuleDirectiveInitialiser extends IModuleDirectiveInitialiser, ITypedElementInitialiser { + @Override + public ProvidesModuleDirective instantiate(); + + public default boolean addServiceProvider(ProvidesModuleDirective pmd, TypeReference serviceProvider) { + if (serviceProvider != null) { + pmd.getServiceProviders().add(serviceProvider); + return pmd.getServiceProviders().contains(serviceProvider); + } + return true; + } + + public default boolean addServiceProviders(ProvidesModuleDirective pmd, TypeReference[] serviceProviders) { + return this.doMultipleModifications(pmd, serviceProviders, this::addServiceProvider); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IRequiresModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IRequiresModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..06611071c6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IRequiresModuleDirectiveInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modifiers.ModuleRequiresModifier; +import org.emftext.language.java.modules.ModuleReference; +import org.emftext.language.java.modules.RequiresModuleDirective; + +public interface IRequiresModuleDirectiveInitialiser extends IModuleDirectiveInitialiser { + @Override + public RequiresModuleDirective instantiate(); + + public default boolean setModifier(RequiresModuleDirective rmd, ModuleRequiresModifier modif) { + rmd.setModifier(modif); + return (modif == null && rmd.getModifier() == null) || rmd.getModifier().equals(modif); + } + + public default boolean setRequiredModule(RequiresModuleDirective rmd, ModuleReference reqMod) { + rmd.setRequiredModule(reqMod); + return (reqMod == null && rmd.getRequiredModule() == null) || rmd.getRequiredModule().equals(reqMod); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IUsesModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IUsesModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..79f73e7bfc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/IUsesModuleDirectiveInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.UsesModuleDirective; + +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IUsesModuleDirectiveInitialiser extends IModuleDirectiveInitialiser, ITypedElementInitialiser { + @Override + public UsesModuleDirective instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModuleReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModuleReferenceInitialiser.java new file mode 100644 index 0000000000..6236cc2b31 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModuleReferenceInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ModuleReference; +import org.emftext.language.java.modules.ModulesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ModuleReferenceInitialiser extends AbstractInitialiserBase implements IModuleReferenceInitialiser { + @Override + public IModuleReferenceInitialiser newInitialiser() { + return new ModuleReferenceInitialiser(); + } + + @Override + public ModuleReference instantiate() { + return ModulesFactory.eINSTANCE.createModuleReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModulesInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModulesInitialiserPackage.java new file mode 100644 index 0000000000..6d2fa8da89 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ModulesInitialiserPackage.java @@ -0,0 +1,26 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ModulesInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this + .initCol(new IInitialiser[] { new ExportsModuleDirectiveInitialiser(), new ModuleReferenceInitialiser(), + new OpensModuleDirectiveInitialiser(), new ProvidesModuleDirectiveInitialiser(), + new RequiresModuleDirectiveInitialiser(), new UsesModuleDirectiveInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAccessProvidingModuleDirectiveInitialiser.class, + IExportsModuleDirectiveInitialiser.class, IModuleDirectiveInitialiser.class, + IModuleReferenceInitialiser.class, IOpensModuleDirectiveInitialiser.class, + IProvidesModuleDirectiveInitialiser.class, IRequiresModuleDirectiveInitialiser.class, + IUsesModuleDirectiveInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/OpensModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/OpensModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..ecabb28de7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/OpensModuleDirectiveInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ModulesFactory; +import org.emftext.language.java.modules.OpensModuleDirective; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class OpensModuleDirectiveInitialiser extends AbstractInitialiserBase + implements IOpensModuleDirectiveInitialiser { + @Override + public IOpensModuleDirectiveInitialiser newInitialiser() { + return new OpensModuleDirectiveInitialiser(); + } + + @Override + public OpensModuleDirective instantiate() { + return ModulesFactory.eINSTANCE.createOpensModuleDirective(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ProvidesModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ProvidesModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..3dca94bcd9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/ProvidesModuleDirectiveInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ModulesFactory; +import org.emftext.language.java.modules.ProvidesModuleDirective; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ProvidesModuleDirectiveInitialiser extends AbstractInitialiserBase + implements IProvidesModuleDirectiveInitialiser { + @Override + public IProvidesModuleDirectiveInitialiser newInitialiser() { + return new ProvidesModuleDirectiveInitialiser(); + } + + @Override + public ProvidesModuleDirective instantiate() { + return ModulesFactory.eINSTANCE.createProvidesModuleDirective(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/RequiresModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/RequiresModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..d698fa74bd --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/RequiresModuleDirectiveInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ModulesFactory; +import org.emftext.language.java.modules.RequiresModuleDirective; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class RequiresModuleDirectiveInitialiser extends AbstractInitialiserBase + implements IRequiresModuleDirectiveInitialiser { + @Override + public IRequiresModuleDirectiveInitialiser newInitialiser() { + return new RequiresModuleDirectiveInitialiser(); + } + + @Override + public RequiresModuleDirective instantiate() { + return ModulesFactory.eINSTANCE.createRequiresModuleDirective(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/UsesModuleDirectiveInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/UsesModuleDirectiveInitialiser.java new file mode 100644 index 0000000000..3784a49959 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/UsesModuleDirectiveInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.modules; + +import org.emftext.language.java.modules.ModulesFactory; +import org.emftext.language.java.modules.UsesModuleDirective; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class UsesModuleDirectiveInitialiser extends AbstractInitialiserBase implements IUsesModuleDirectiveInitialiser { + @Override + public IUsesModuleDirectiveInitialiser newInitialiser() { + return new UsesModuleDirectiveInitialiser(); + } + + @Override + public UsesModuleDirective instantiate() { + return ModulesFactory.eINSTANCE.createUsesModuleDirective(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/package-info.java new file mode 100644 index 0000000000..c47531f1d7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/modules/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.modules}. + */ +package cipm.consistency.initialisers.jamopp.modules; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AdditionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AdditionInitialiser.java new file mode 100644 index 0000000000..4d471b6c58 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AdditionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Addition; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AdditionInitialiser extends AbstractInitialiserBase implements IAdditionInitialiser { + @Override + public IAdditionInitialiser newInitialiser() { + return new AdditionInitialiser(); + } + + @Override + public Addition instantiate() { + return OperatorsFactory.eINSTANCE.createAddition(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentAndInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentAndInitialiser.java new file mode 100644 index 0000000000..6bf41b5fb2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentAndInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentAnd; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentAndInitialiser extends AbstractInitialiserBase implements IAssignmentAndInitialiser { + @Override + public IAssignmentAndInitialiser newInitialiser() { + return new AssignmentAndInitialiser(); + } + + @Override + public AssignmentAnd instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentAnd(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentDivisionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentDivisionInitialiser.java new file mode 100644 index 0000000000..87603fab53 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentDivisionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentDivision; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentDivisionInitialiser extends AbstractInitialiserBase implements IAssignmentDivisionInitialiser { + @Override + public IAssignmentDivisionInitialiser newInitialiser() { + return new AssignmentDivisionInitialiser(); + } + + @Override + public AssignmentDivision instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentDivision(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentExclusiveOrInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentExclusiveOrInitialiser.java new file mode 100644 index 0000000000..87aa83cb5b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentExclusiveOrInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentExclusiveOr; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentExclusiveOrInitialiser extends AbstractInitialiserBase + implements IAssignmentExclusiveOrInitialiser { + @Override + public IAssignmentExclusiveOrInitialiser newInitialiser() { + return new AssignmentExclusiveOrInitialiser(); + } + + @Override + public AssignmentExclusiveOr instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentExclusiveOr(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentInitialiser.java new file mode 100644 index 0000000000..de14f68b75 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Assignment; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentInitialiser extends AbstractInitialiserBase implements IAssignmentInitialiser { + @Override + public IAssignmentInitialiser newInitialiser() { + return new AssignmentInitialiser(); + } + + @Override + public Assignment instantiate() { + return OperatorsFactory.eINSTANCE.createAssignment(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentLeftShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentLeftShiftInitialiser.java new file mode 100644 index 0000000000..cbeed302e5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentLeftShiftInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentLeftShift; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentLeftShiftInitialiser extends AbstractInitialiserBase implements IAssignmentLeftShiftInitialiser { + @Override + public IAssignmentLeftShiftInitialiser newInitialiser() { + return new AssignmentLeftShiftInitialiser(); + } + + @Override + public AssignmentLeftShift instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentLeftShift(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMinusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMinusInitialiser.java new file mode 100644 index 0000000000..0ccbe2d899 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMinusInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentMinus; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentMinusInitialiser extends AbstractInitialiserBase implements IAssignmentMinusInitialiser { + @Override + public IAssignmentMinusInitialiser newInitialiser() { + return new AssignmentMinusInitialiser(); + } + + @Override + public AssignmentMinus instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentMinus(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentModuloInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentModuloInitialiser.java new file mode 100644 index 0000000000..9e14caa456 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentModuloInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentModulo; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentModuloInitialiser extends AbstractInitialiserBase implements IAssignmentModuloInitialiser { + @Override + public IAssignmentModuloInitialiser newInitialiser() { + return new AssignmentModuloInitialiser(); + } + + @Override + public AssignmentModulo instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentModulo(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMultiplicationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMultiplicationInitialiser.java new file mode 100644 index 0000000000..758a4e6235 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentMultiplicationInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentMultiplication; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentMultiplicationInitialiser extends AbstractInitialiserBase + implements IAssignmentMultiplicationInitialiser { + @Override + public IAssignmentMultiplicationInitialiser newInitialiser() { + return new AssignmentMultiplicationInitialiser(); + } + + @Override + public AssignmentMultiplication instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentMultiplication(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentOrInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentOrInitialiser.java new file mode 100644 index 0000000000..48b44e3c6a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentOrInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentOr; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentOrInitialiser extends AbstractInitialiserBase implements IAssignmentOrInitialiser { + @Override + public IAssignmentOrInitialiser newInitialiser() { + return new AssignmentOrInitialiser(); + } + + @Override + public AssignmentOr instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentOr(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentPlusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentPlusInitialiser.java new file mode 100644 index 0000000000..9c2cf0ad20 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentPlusInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentPlus; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentPlusInitialiser extends AbstractInitialiserBase implements IAssignmentPlusInitialiser { + @Override + public IAssignmentPlusInitialiser newInitialiser() { + return new AssignmentPlusInitialiser(); + } + + @Override + public AssignmentPlus instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentPlus(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentRightShiftInitialiser.java new file mode 100644 index 0000000000..8ed66a0d9c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentRightShiftInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentRightShift; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentRightShiftInitialiser extends AbstractInitialiserBase + implements IAssignmentRightShiftInitialiser { + @Override + public IAssignmentRightShiftInitialiser newInitialiser() { + return new AssignmentRightShiftInitialiser(); + } + + @Override + public AssignmentRightShift instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentRightShift(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentUnsignedRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentUnsignedRightShiftInitialiser.java new file mode 100644 index 0000000000..ce7ac8df1b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/AssignmentUnsignedRightShiftInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentUnsignedRightShift; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class AssignmentUnsignedRightShiftInitialiser extends AbstractInitialiserBase + implements IAssignmentUnsignedRightShiftInitialiser { + @Override + public IAssignmentUnsignedRightShiftInitialiser newInitialiser() { + return new AssignmentUnsignedRightShiftInitialiser(); + } + + @Override + public AssignmentUnsignedRightShift instantiate() { + return OperatorsFactory.eINSTANCE.createAssignmentUnsignedRightShift(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ComplementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ComplementInitialiser.java new file mode 100644 index 0000000000..15e3705d12 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ComplementInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Complement; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ComplementInitialiser extends AbstractInitialiserBase implements IComplementInitialiser { + @Override + public IComplementInitialiser newInitialiser() { + return new ComplementInitialiser(); + } + + @Override + public Complement instantiate() { + return OperatorsFactory.eINSTANCE.createComplement(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/DivisionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/DivisionInitialiser.java new file mode 100644 index 0000000000..57d18cd051 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/DivisionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Division; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DivisionInitialiser extends AbstractInitialiserBase implements IDivisionInitialiser { + @Override + public IDivisionInitialiser newInitialiser() { + return new DivisionInitialiser(); + } + + @Override + public Division instantiate() { + return OperatorsFactory.eINSTANCE.createDivision(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/EqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/EqualInitialiser.java new file mode 100644 index 0000000000..b21d2851c3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/EqualInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Equal; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class EqualInitialiser extends AbstractInitialiserBase implements IEqualInitialiser { + @Override + public IEqualInitialiser newInitialiser() { + return new EqualInitialiser(); + } + + @Override + public Equal instantiate() { + return OperatorsFactory.eINSTANCE.createEqual(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanInitialiser.java new file mode 100644 index 0000000000..27524974c5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.GreaterThan; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class GreaterThanInitialiser extends AbstractInitialiserBase implements IGreaterThanInitialiser { + @Override + public IGreaterThanInitialiser newInitialiser() { + return new GreaterThanInitialiser(); + } + + @Override + public GreaterThan instantiate() { + return OperatorsFactory.eINSTANCE.createGreaterThan(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanOrEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanOrEqualInitialiser.java new file mode 100644 index 0000000000..bc864b1fa5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/GreaterThanOrEqualInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.GreaterThanOrEqual; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class GreaterThanOrEqualInitialiser extends AbstractInitialiserBase implements IGreaterThanOrEqualInitialiser { + @Override + public IGreaterThanOrEqualInitialiser newInitialiser() { + return new GreaterThanOrEqualInitialiser(); + } + + @Override + public GreaterThanOrEqual instantiate() { + return OperatorsFactory.eINSTANCE.createGreaterThanOrEqual(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditionInitialiser.java new file mode 100644 index 0000000000..5e63e082d3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditionInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Addition; + +public interface IAdditionInitialiser extends IAdditiveOperatorInitialiser { + @Override + public Addition instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditiveOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditiveOperatorInitialiser.java new file mode 100644 index 0000000000..d48d8334d5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAdditiveOperatorInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AdditiveOperator; + +public interface IAdditiveOperatorInitialiser extends IOperatorInitialiser { + @Override + public AdditiveOperator instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentAndInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentAndInitialiser.java new file mode 100644 index 0000000000..405817a773 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentAndInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentAnd; + +public interface IAssignmentAndInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentAnd instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentDivisionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentDivisionInitialiser.java new file mode 100644 index 0000000000..52686c2d48 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentDivisionInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentDivision; + +public interface IAssignmentDivisionInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentDivision instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentExclusiveOrInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentExclusiveOrInitialiser.java new file mode 100644 index 0000000000..54501a8ce5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentExclusiveOrInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentExclusiveOr; + +public interface IAssignmentExclusiveOrInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentExclusiveOr instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentInitialiser.java new file mode 100644 index 0000000000..f893c2c8e8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Assignment; + +public interface IAssignmentInitialiser extends IAssignmentOperatorInitialiser { + @Override + public Assignment instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentLeftShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentLeftShiftInitialiser.java new file mode 100644 index 0000000000..45101827f7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentLeftShiftInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentLeftShift; + +public interface IAssignmentLeftShiftInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentLeftShift instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMinusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMinusInitialiser.java new file mode 100644 index 0000000000..dbefdf1ee5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMinusInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentMinus; + +public interface IAssignmentMinusInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentMinus instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentModuloInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentModuloInitialiser.java new file mode 100644 index 0000000000..4a62118c8d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentModuloInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentModulo; + +public interface IAssignmentModuloInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentModulo instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMultiplicationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMultiplicationInitialiser.java new file mode 100644 index 0000000000..d594065636 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentMultiplicationInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentMultiplication; + +public interface IAssignmentMultiplicationInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentMultiplication instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOperatorInitialiser.java new file mode 100644 index 0000000000..1a8e008305 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOperatorInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentOperator; + +public interface IAssignmentOperatorInitialiser extends IOperatorInitialiser { + @Override + public AssignmentOperator instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOrInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOrInitialiser.java new file mode 100644 index 0000000000..3512ef3531 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentOrInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentOr; + +public interface IAssignmentOrInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentOr instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentPlusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentPlusInitialiser.java new file mode 100644 index 0000000000..b8b0125c7c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentPlusInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentPlus; + +public interface IAssignmentPlusInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentPlus instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentRightShiftInitialiser.java new file mode 100644 index 0000000000..1328e71eab --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentRightShiftInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentRightShift; + +public interface IAssignmentRightShiftInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentRightShift instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentUnsignedRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentUnsignedRightShiftInitialiser.java new file mode 100644 index 0000000000..a119eaeb6f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IAssignmentUnsignedRightShiftInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.AssignmentUnsignedRightShift; + +public interface IAssignmentUnsignedRightShiftInitialiser extends IAssignmentOperatorInitialiser { + @Override + public AssignmentUnsignedRightShift instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IComplementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IComplementInitialiser.java new file mode 100644 index 0000000000..54956de8d0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IComplementInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Complement; + +public interface IComplementInitialiser extends IUnaryOperatorInitialiser { + @Override + public Complement instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IDivisionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IDivisionInitialiser.java new file mode 100644 index 0000000000..2af6f49a07 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IDivisionInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Division; + +public interface IDivisionInitialiser extends IMultiplicativeOperatorInitialiser { + @Override + public Division instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualInitialiser.java new file mode 100644 index 0000000000..2206d5158e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Equal; + +public interface IEqualInitialiser extends IEqualityOperatorInitialiser { + @Override + public Equal instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualityOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualityOperatorInitialiser.java new file mode 100644 index 0000000000..24f7cb4671 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IEqualityOperatorInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.EqualityOperator; + +public interface IEqualityOperatorInitialiser extends IOperatorInitialiser { + @Override + public EqualityOperator instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanInitialiser.java new file mode 100644 index 0000000000..06eb70aaa2 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.GreaterThan; + +public interface IGreaterThanInitialiser extends IRelationOperatorInitialiser { + @Override + public GreaterThan instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanOrEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanOrEqualInitialiser.java new file mode 100644 index 0000000000..fe3d7ea663 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IGreaterThanOrEqualInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.GreaterThanOrEqual; + +public interface IGreaterThanOrEqualInitialiser extends IRelationOperatorInitialiser { + @Override + public GreaterThanOrEqual instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILeftShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILeftShiftInitialiser.java new file mode 100644 index 0000000000..a6a98db588 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILeftShiftInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.LeftShift; + +public interface ILeftShiftInitialiser extends IShiftOperatorInitialiser { + @Override + public LeftShift instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanInitialiser.java new file mode 100644 index 0000000000..8fcc9ec1c7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.LessThan; + +public interface ILessThanInitialiser extends IRelationOperatorInitialiser { + @Override + public LessThan instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanOrEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanOrEqualInitialiser.java new file mode 100644 index 0000000000..81315c9718 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ILessThanOrEqualInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.LessThanOrEqual; + +public interface ILessThanOrEqualInitialiser extends IRelationOperatorInitialiser { + @Override + public LessThanOrEqual instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMinusMinusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMinusMinusInitialiser.java new file mode 100644 index 0000000000..cd93169c27 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMinusMinusInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.MinusMinus; + +public interface IMinusMinusInitialiser extends IUnaryModificationOperatorInitialiser { + @Override + public MinusMinus instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicationInitialiser.java new file mode 100644 index 0000000000..35c57996f7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicationInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Multiplication; + +public interface IMultiplicationInitialiser extends IMultiplicativeOperatorInitialiser { + @Override + public Multiplication instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicativeOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicativeOperatorInitialiser.java new file mode 100644 index 0000000000..e0ae532330 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IMultiplicativeOperatorInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.MultiplicativeOperator; + +public interface IMultiplicativeOperatorInitialiser extends IOperatorInitialiser { + @Override + public MultiplicativeOperator instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INegateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INegateInitialiser.java new file mode 100644 index 0000000000..6de5066283 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INegateInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Negate; + +public interface INegateInitialiser extends IUnaryOperatorInitialiser { + @Override + public Negate instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INotEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INotEqualInitialiser.java new file mode 100644 index 0000000000..83c5a9696a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/INotEqualInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.NotEqual; + +public interface INotEqualInitialiser extends IEqualityOperatorInitialiser { + @Override + public NotEqual instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IOperatorInitialiser.java new file mode 100644 index 0000000000..c74f5a476a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IOperatorInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Operator; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IOperatorInitialiser extends ICommentableInitialiser { + @Override + public Operator instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IPlusPlusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IPlusPlusInitialiser.java new file mode 100644 index 0000000000..7d28bc4bc4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IPlusPlusInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.PlusPlus; + +public interface IPlusPlusInitialiser extends IUnaryModificationOperatorInitialiser { + @Override + public PlusPlus instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRelationOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRelationOperatorInitialiser.java new file mode 100644 index 0000000000..5f7998fe22 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRelationOperatorInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.RelationOperator; + +public interface IRelationOperatorInitialiser extends IOperatorInitialiser { + @Override + public RelationOperator instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRemainderInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRemainderInitialiser.java new file mode 100644 index 0000000000..2c635a05d5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRemainderInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Remainder; + +public interface IRemainderInitialiser extends IMultiplicativeOperatorInitialiser { + @Override + public Remainder instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRightShiftInitialiser.java new file mode 100644 index 0000000000..cd18544d14 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IRightShiftInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.RightShift; + +public interface IRightShiftInitialiser extends IShiftOperatorInitialiser { + @Override + public RightShift instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IShiftOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IShiftOperatorInitialiser.java new file mode 100644 index 0000000000..e18dc95028 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IShiftOperatorInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.ShiftOperator; + +public interface IShiftOperatorInitialiser extends IOperatorInitialiser { + @Override + public ShiftOperator instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ISubtractionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ISubtractionInitialiser.java new file mode 100644 index 0000000000..c0776b0995 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/ISubtractionInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Subtraction; + +public interface ISubtractionInitialiser extends IAdditiveOperatorInitialiser { + @Override + public Subtraction instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryModificationOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryModificationOperatorInitialiser.java new file mode 100644 index 0000000000..efd06dc63d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryModificationOperatorInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.UnaryModificationOperator; + +public interface IUnaryModificationOperatorInitialiser extends IOperatorInitialiser { + @Override + public UnaryModificationOperator instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryOperatorInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryOperatorInitialiser.java new file mode 100644 index 0000000000..ef4e219488 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnaryOperatorInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.UnaryOperator; + +public interface IUnaryOperatorInitialiser extends IOperatorInitialiser { + @Override + public UnaryOperator instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnsignedRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnsignedRightShiftInitialiser.java new file mode 100644 index 0000000000..cada84eed8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/IUnsignedRightShiftInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.UnsignedRightShift; + +public interface IUnsignedRightShiftInitialiser extends IShiftOperatorInitialiser { + @Override + public UnsignedRightShift instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LeftShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LeftShiftInitialiser.java new file mode 100644 index 0000000000..a92d5e138a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LeftShiftInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.LeftShift; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class LeftShiftInitialiser extends AbstractInitialiserBase implements ILeftShiftInitialiser { + @Override + public ILeftShiftInitialiser newInitialiser() { + return new LeftShiftInitialiser(); + } + + @Override + public LeftShift instantiate() { + return OperatorsFactory.eINSTANCE.createLeftShift(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanInitialiser.java new file mode 100644 index 0000000000..e2e5b39add --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.LessThan; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class LessThanInitialiser extends AbstractInitialiserBase implements ILessThanInitialiser { + @Override + public ILessThanInitialiser newInitialiser() { + return new LessThanInitialiser(); + } + + @Override + public LessThan instantiate() { + return OperatorsFactory.eINSTANCE.createLessThan(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanOrEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanOrEqualInitialiser.java new file mode 100644 index 0000000000..aa0519d3ca --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/LessThanOrEqualInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.LessThanOrEqual; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class LessThanOrEqualInitialiser extends AbstractInitialiserBase implements ILessThanOrEqualInitialiser { + @Override + public ILessThanOrEqualInitialiser newInitialiser() { + return new LessThanOrEqualInitialiser(); + } + + @Override + public LessThanOrEqual instantiate() { + return OperatorsFactory.eINSTANCE.createLessThanOrEqual(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MinusMinusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MinusMinusInitialiser.java new file mode 100644 index 0000000000..eb22f66029 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MinusMinusInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.MinusMinus; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class MinusMinusInitialiser extends AbstractInitialiserBase implements IMinusMinusInitialiser { + @Override + public IMinusMinusInitialiser newInitialiser() { + return new MinusMinusInitialiser(); + } + + @Override + public MinusMinus instantiate() { + return OperatorsFactory.eINSTANCE.createMinusMinus(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MultiplicationInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MultiplicationInitialiser.java new file mode 100644 index 0000000000..559e213443 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/MultiplicationInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Multiplication; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class MultiplicationInitialiser extends AbstractInitialiserBase implements IMultiplicationInitialiser { + @Override + public IMultiplicationInitialiser newInitialiser() { + return new MultiplicationInitialiser(); + } + + @Override + public Multiplication instantiate() { + return OperatorsFactory.eINSTANCE.createMultiplication(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NegateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NegateInitialiser.java new file mode 100644 index 0000000000..25386a661c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NegateInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.Negate; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NegateInitialiser extends AbstractInitialiserBase implements INegateInitialiser { + @Override + public INegateInitialiser newInitialiser() { + return new NegateInitialiser(); + } + + @Override + public Negate instantiate() { + return OperatorsFactory.eINSTANCE.createNegate(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NotEqualInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NotEqualInitialiser.java new file mode 100644 index 0000000000..93cc16b45b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/NotEqualInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.NotEqual; +import org.emftext.language.java.operators.OperatorsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NotEqualInitialiser extends AbstractInitialiserBase implements INotEqualInitialiser { + @Override + public INotEqualInitialiser newInitialiser() { + return new NotEqualInitialiser(); + } + + @Override + public NotEqual instantiate() { + return OperatorsFactory.eINSTANCE.createNotEqual(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/OperatorsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/OperatorsInitialiserPackage.java new file mode 100644 index 0000000000..f84c06fddb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/OperatorsInitialiserPackage.java @@ -0,0 +1,44 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class OperatorsInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new AdditionInitialiser(), new AssignmentAndInitialiser(), + new AssignmentDivisionInitialiser(), new AssignmentExclusiveOrInitialiser(), + new AssignmentInitialiser(), new AssignmentLeftShiftInitialiser(), new AssignmentMinusInitialiser(), + new AssignmentModuloInitialiser(), new AssignmentMultiplicationInitialiser(), + new AssignmentOrInitialiser(), new AssignmentPlusInitialiser(), new AssignmentRightShiftInitialiser(), + new AssignmentUnsignedRightShiftInitialiser(), new ComplementInitialiser(), new DivisionInitialiser(), + new EqualInitialiser(), new GreaterThanInitialiser(), new GreaterThanOrEqualInitialiser(), + new LeftShiftInitialiser(), new LessThanInitialiser(), new LessThanOrEqualInitialiser(), + new MinusMinusInitialiser(), new MultiplicationInitialiser(), new NegateInitialiser(), + new NotEqualInitialiser(), new PlusPlusInitialiser(), new RemainderInitialiser(), + new RightShiftInitialiser(), new SubtractionInitialiser(), new UnsignedRightShiftInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAdditionInitialiser.class, IAdditiveOperatorInitialiser.class, + IAssignmentAndInitialiser.class, IAssignmentDivisionInitialiser.class, + IAssignmentExclusiveOrInitialiser.class, IAssignmentInitialiser.class, + IAssignmentLeftShiftInitialiser.class, IAssignmentMinusInitialiser.class, + IAssignmentModuloInitialiser.class, IAssignmentMultiplicationInitialiser.class, + IAssignmentOperatorInitialiser.class, IAssignmentOrInitialiser.class, IAssignmentPlusInitialiser.class, + IAssignmentRightShiftInitialiser.class, IAssignmentUnsignedRightShiftInitialiser.class, + IComplementInitialiser.class, IDivisionInitialiser.class, IEqualInitialiser.class, + IEqualityOperatorInitialiser.class, IGreaterThanInitialiser.class, IGreaterThanOrEqualInitialiser.class, + ILeftShiftInitialiser.class, ILessThanInitialiser.class, ILessThanOrEqualInitialiser.class, + IMinusMinusInitialiser.class, IMultiplicationInitialiser.class, + IMultiplicativeOperatorInitialiser.class, INegateInitialiser.class, INotEqualInitialiser.class, + IOperatorInitialiser.class, IPlusPlusInitialiser.class, IRelationOperatorInitialiser.class, + IRemainderInitialiser.class, IRightShiftInitialiser.class, IShiftOperatorInitialiser.class, + ISubtractionInitialiser.class, IUnaryModificationOperatorInitialiser.class, + IUnaryOperatorInitialiser.class, IUnsignedRightShiftInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/PlusPlusInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/PlusPlusInitialiser.java new file mode 100644 index 0000000000..520890cb30 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/PlusPlusInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.OperatorsFactory; +import org.emftext.language.java.operators.PlusPlus; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PlusPlusInitialiser extends AbstractInitialiserBase implements IPlusPlusInitialiser { + @Override + public IPlusPlusInitialiser newInitialiser() { + return new PlusPlusInitialiser(); + } + + @Override + public PlusPlus instantiate() { + return OperatorsFactory.eINSTANCE.createPlusPlus(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RemainderInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RemainderInitialiser.java new file mode 100644 index 0000000000..4445daa0d9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RemainderInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.OperatorsFactory; +import org.emftext.language.java.operators.Remainder; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class RemainderInitialiser extends AbstractInitialiserBase implements IRemainderInitialiser { + @Override + public IRemainderInitialiser newInitialiser() { + return new RemainderInitialiser(); + } + + @Override + public Remainder instantiate() { + return OperatorsFactory.eINSTANCE.createRemainder(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RightShiftInitialiser.java new file mode 100644 index 0000000000..b5f2ca2e96 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/RightShiftInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.OperatorsFactory; +import org.emftext.language.java.operators.RightShift; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class RightShiftInitialiser extends AbstractInitialiserBase implements IRightShiftInitialiser { + @Override + public IRightShiftInitialiser newInitialiser() { + return new RightShiftInitialiser(); + } + + @Override + public RightShift instantiate() { + return OperatorsFactory.eINSTANCE.createRightShift(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/SubtractionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/SubtractionInitialiser.java new file mode 100644 index 0000000000..d50fb0e26b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/SubtractionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.OperatorsFactory; +import org.emftext.language.java.operators.Subtraction; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SubtractionInitialiser extends AbstractInitialiserBase implements ISubtractionInitialiser { + @Override + public ISubtractionInitialiser newInitialiser() { + return new SubtractionInitialiser(); + } + + @Override + public Subtraction instantiate() { + return OperatorsFactory.eINSTANCE.createSubtraction(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/UnsignedRightShiftInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/UnsignedRightShiftInitialiser.java new file mode 100644 index 0000000000..74cf34179c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/UnsignedRightShiftInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.operators; + +import org.emftext.language.java.operators.OperatorsFactory; +import org.emftext.language.java.operators.UnsignedRightShift; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class UnsignedRightShiftInitialiser extends AbstractInitialiserBase implements IUnsignedRightShiftInitialiser { + @Override + public IUnsignedRightShiftInitialiser newInitialiser() { + return new UnsignedRightShiftInitialiser(); + } + + @Override + public UnsignedRightShift instantiate() { + return OperatorsFactory.eINSTANCE.createUnsignedRightShift(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/package-info.java new file mode 100644 index 0000000000..cf32b47e60 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/operators/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.operators}. + */ +package cipm.consistency.initialisers.jamopp.operators; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/package-info.java new file mode 100644 index 0000000000..d1ece94497 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/package-info.java @@ -0,0 +1,7 @@ +/** + * Contains {@link IInitialiser} implementations for Java-related + * {@link EObject} implementors used by JaMoPP. Sub-packages contain concrete + * implementations and interfaces of concrete initialisers for their + * corresponding {@link EObject} implementor. + */ +package cipm.consistency.initialisers.jamopp; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/CatchParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/CatchParameterInitialiser.java new file mode 100644 index 0000000000..ca4b3746cd --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/CatchParameterInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.ParametersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.parameters.CatchParameter; + +public class CatchParameterInitialiser extends AbstractInitialiserBase implements ICatchParameterInitialiser { + @Override + public CatchParameter instantiate() { + return ParametersFactory.eINSTANCE.createCatchParameter(); + } + + @Override + public ICatchParameterInitialiser newInitialiser() { + return new CatchParameterInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ICatchParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ICatchParameterInitialiser.java new file mode 100644 index 0000000000..635d2c97eb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ICatchParameterInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.CatchParameter; +import org.emftext.language.java.types.TypeReference; + +public interface ICatchParameterInitialiser extends IOrdinaryParameterInitialiser { + @Override + public CatchParameter instantiate(); + + public default boolean addTypeReference(CatchParameter cp, TypeReference tRef) { + if (tRef != null) { + cp.getTypeReferences().add(tRef); + return cp.getTypeReferences().contains(tRef); + } + return true; + } + + public default boolean addTypeReferences(CatchParameter cp, TypeReference[] tRefs) { + return this.doMultipleModifications(cp, tRefs, this::addTypeReference); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IOrdinaryParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IOrdinaryParameterInitialiser.java new file mode 100644 index 0000000000..b831bd0828 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IOrdinaryParameterInitialiser.java @@ -0,0 +1,8 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.OrdinaryParameter; + +public interface IOrdinaryParameterInitialiser extends IParameterInitialiser { + @Override + public OrdinaryParameter instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParameterInitialiser.java new file mode 100644 index 0000000000..fd25c1bfc1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParameterInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.Parameter; + +import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser; +import cipm.consistency.initialisers.jamopp.variables.IVariableInitialiser; + +public interface IParameterInitialiser extends IAnnotableAndModifiableInitialiser, IVariableInitialiser { + @Override + public Parameter instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParametrizableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParametrizableInitialiser.java new file mode 100644 index 0000000000..8c6d958efc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IParametrizableInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.Parameter; +import org.emftext.language.java.parameters.Parametrizable; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IParametrizableInitialiser extends ICommentableInitialiser { + @Override + public Parametrizable instantiate(); + + public default boolean addParameter(Parametrizable parametrizable, Parameter param) { + if (param != null) { + parametrizable.getParameters().add(param); + return parametrizable.getParameters().contains(param); + } + return true; + } + + public default boolean addParameters(Parametrizable parametrizable, Parameter[] params) { + return this.doMultipleModifications(parametrizable, params, this::addParameter); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IReceiverParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IReceiverParameterInitialiser.java new file mode 100644 index 0000000000..fc2f373c85 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IReceiverParameterInitialiser.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.literals.This; +import org.emftext.language.java.parameters.ReceiverParameter; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; + +public interface IReceiverParameterInitialiser extends IAnnotableInitialiser, IParameterInitialiser { + @Override + public ReceiverParameter instantiate(); + + public default boolean setOuterTypeReference(ReceiverParameter rp, TypeReference otRef) { + rp.setOuterTypeReference(otRef); + return (otRef == null && rp.getOuterTypeReference() == null) || rp.getOuterTypeReference().equals(otRef); + } + + public default boolean setThisReference(ReceiverParameter rp, This thisRef) { + rp.setThisReference(thisRef); + return (thisRef == null && rp.getThisReference() == null) || rp.getThisReference().equals(thisRef); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IVariableLengthParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IVariableLengthParameterInitialiser.java new file mode 100644 index 0000000000..47e04cbfbc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/IVariableLengthParameterInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.VariableLengthParameter; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; + +public interface IVariableLengthParameterInitialiser extends IAnnotableInitialiser, IParameterInitialiser { + @Override + public VariableLengthParameter instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/OrdinaryParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/OrdinaryParameterInitialiser.java new file mode 100644 index 0000000000..6bc970f605 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/OrdinaryParameterInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.ParametersFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.parameters.OrdinaryParameter; + +public class OrdinaryParameterInitialiser extends AbstractInitialiserBase implements IOrdinaryParameterInitialiser { + @Override + public OrdinaryParameter instantiate() { + return ParametersFactory.eINSTANCE.createOrdinaryParameter(); + } + + @Override + public IOrdinaryParameterInitialiser newInitialiser() { + return new OrdinaryParameterInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ParametersInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ParametersInitialiserPackage.java new file mode 100644 index 0000000000..d94531ce06 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ParametersInitialiserPackage.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ParametersInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new CatchParameterInitialiser(), new OrdinaryParameterInitialiser(), + new ReceiverParameterInitialiser(), new VariableLengthParameterInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { ICatchParameterInitialiser.class, IOrdinaryParameterInitialiser.class, + IParameterInitialiser.class, IParametrizableInitialiser.class, IReceiverParameterInitialiser.class, + IVariableLengthParameterInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ReceiverParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ReceiverParameterInitialiser.java new file mode 100644 index 0000000000..89bb051bbb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/ReceiverParameterInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.ParametersFactory; +import org.emftext.language.java.parameters.ReceiverParameter; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ReceiverParameterInitialiser extends AbstractInitialiserBase implements IReceiverParameterInitialiser { + @Override + public ReceiverParameter instantiate() { + return ParametersFactory.eINSTANCE.createReceiverParameter(); + } + + @Override + public IReceiverParameterInitialiser newInitialiser() { + return new ReceiverParameterInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/VariableLengthParameterInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/VariableLengthParameterInitialiser.java new file mode 100644 index 0000000000..486a338bc8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/VariableLengthParameterInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.parameters; + +import org.emftext.language.java.parameters.ParametersFactory; +import org.emftext.language.java.parameters.VariableLengthParameter; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class VariableLengthParameterInitialiser extends AbstractInitialiserBase + implements IVariableLengthParameterInitialiser { + @Override + public VariableLengthParameter instantiate() { + return ParametersFactory.eINSTANCE.createVariableLengthParameter(); + } + + @Override + public IVariableLengthParameterInitialiser newInitialiser() { + return new VariableLengthParameterInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/package-info.java new file mode 100644 index 0000000000..a8f067bfae --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/parameters/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.parameters}. + */ +package cipm.consistency.initialisers.jamopp.parameters; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IArgumentableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IArgumentableInitialiser.java new file mode 100644 index 0000000000..0064816943 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IArgumentableInitialiser.java @@ -0,0 +1,37 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.references.Argumentable; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +/** + * An interface meant for {@link IInitialiser} implementors that are supposed to + * create {@link Argumentable} instances.
+ *
+ * {@code argable.getArgumentTypes().add(...)} cannot be used to modify argable. + * + * @author Alp Torac Genc + */ +public interface IArgumentableInitialiser extends ICommentableInitialiser { + @Override + public Argumentable instantiate(); + + /** + * Adds the given expression arg to argable as an argument. Uses + * {@code argable.getArguments().add(...)} to do so. + * + * @see {@link IArgumentableInitialiser} + */ + public default boolean addArgument(Argumentable argable, Expression arg) { + if (arg != null) { + argable.getArguments().add(arg); + return argable.getArguments().contains(arg); + } + return true; + } + + public default boolean addArguments(Argumentable argable, Expression[] args) { + return this.doMultipleModifications(argable, args, this::addArgument); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IElementReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IElementReferenceInitialiser.java new file mode 100644 index 0000000000..76280b6bd6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IElementReferenceInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.ElementReference; +import org.emftext.language.java.references.ReferenceableElement; + +public interface IElementReferenceInitialiser extends IReferenceInitialiser { + @Override + public ElementReference instantiate(); + + public default boolean setContainedTarget(ElementReference eref, ReferenceableElement conTarget) { + eref.setContainedTarget(conTarget); + return (conTarget == null && eref.getContainedTarget() == null) || eref.getContainedTarget().equals(conTarget); + } + + public default boolean setTarget(ElementReference eref, ReferenceableElement target) { + eref.setTarget(target); + return (target == null && eref.getTarget() == null) || eref.getTarget().equals(target); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IIdentifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IIdentifierReferenceInitialiser.java new file mode 100644 index 0000000000..87e073b44c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IIdentifierReferenceInitialiser.java @@ -0,0 +1,12 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.IdentifierReference; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; +import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser; + +public interface IIdentifierReferenceInitialiser + extends IAnnotableInitialiser, IArrayTypeableInitialiser, IElementReferenceInitialiser { + @Override + public IdentifierReference instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IMethodCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IMethodCallInitialiser.java new file mode 100644 index 0000000000..4bb409b0e8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IMethodCallInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.MethodCall; + +import cipm.consistency.initialisers.jamopp.generics.ICallTypeArgumentableInitialiser; + +public interface IMethodCallInitialiser + extends IElementReferenceInitialiser, IArgumentableInitialiser, ICallTypeArgumentableInitialiser { + @Override + public MethodCall instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPackageReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPackageReferenceInitialiser.java new file mode 100644 index 0000000000..56f511fb1c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPackageReferenceInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.PackageReference; + +import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser; + +public interface IPackageReferenceInitialiser + extends INamespaceAwareElementInitialiser, IReferenceableElementInitialiser { + @Override + public PackageReference instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPrimitiveTypeReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPrimitiveTypeReferenceInitialiser.java new file mode 100644 index 0000000000..34a58ea332 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IPrimitiveTypeReferenceInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.PrimitiveTypeReference; +import org.emftext.language.java.types.PrimitiveType; + +import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser; + +public interface IPrimitiveTypeReferenceInitialiser extends IArrayTypeableInitialiser, IReferenceInitialiser { + @Override + public PrimitiveTypeReference instantiate(); + + public default boolean setPrimitiveType(PrimitiveTypeReference ptr, PrimitiveType pt) { + ptr.setPrimitiveType(pt); + return (pt == null && ptr.getPrimitiveType() == null) || ptr.getPrimitiveType().equals(pt); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceInitialiser.java new file mode 100644 index 0000000000..8d15264afb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceInitialiser.java @@ -0,0 +1,34 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.arrays.ArraySelector; +import org.emftext.language.java.references.Reference; + +import cipm.consistency.initialisers.jamopp.expressions.IPrimaryExpressionInitialiser; +import cipm.consistency.initialisers.jamopp.generics.ITypeArgumentableInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypedElementExtensionInitialiser; + +public interface IReferenceInitialiser + extends IPrimaryExpressionInitialiser, ITypeArgumentableInitialiser, ITypedElementExtensionInitialiser { + + @Override + public Reference instantiate(); + + public default boolean addArraySelector(Reference ref, ArraySelector arrSel) { + if (arrSel != null) { + ref.getArraySelectors().add(arrSel); + return ref.getArraySelectors().contains(arrSel); + } + return true; + } + + public default boolean addArraySelectors(Reference ref, ArraySelector[] arrSels) { + return this.doMultipleModifications(ref, arrSels, this::addArraySelector); + } + + public default boolean setNext(Reference ref, Reference next) { + ref.setNext(next); + return (next == null && ref.getNext() == null) + || (ref.getNext().equals(next) && ref.getNext().getPrevious().equals(ref) + && next.getPrevious().equals(ref) && next.getPrevious().getNext().equals(next)); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceableElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceableElementInitialiser.java new file mode 100644 index 0000000000..22aeb4f6a0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReferenceableElementInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.ReferenceableElement; + +import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser; + +public interface IReferenceableElementInitialiser extends INamedElementInitialiser { + @Override + public ReferenceableElement instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReflectiveClassReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReflectiveClassReferenceInitialiser.java new file mode 100644 index 0000000000..0683251183 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IReflectiveClassReferenceInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.ReflectiveClassReference; + +public interface IReflectiveClassReferenceInitialiser extends IReferenceInitialiser { + @Override + public ReflectiveClassReference instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ISelfReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ISelfReferenceInitialiser.java new file mode 100644 index 0000000000..82a1453360 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ISelfReferenceInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.literals.Self; +import org.emftext.language.java.references.SelfReference; + +public interface ISelfReferenceInitialiser extends IReferenceInitialiser { + @Override + public SelfReference instantiate(); + + public default boolean setSelf(SelfReference sref, Self self) { + sref.setSelf(self); + return (self == null && sref.getSelf() == null) || sref.getSelf().equals(self); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IStringReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IStringReferenceInitialiser.java new file mode 100644 index 0000000000..877ce754d3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IStringReferenceInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.StringReference; + +public interface IStringReferenceInitialiser extends IReferenceInitialiser { + @Override + public StringReference instantiate(); + + public default boolean setValue(StringReference sref, String val) { + sref.setValue(val); + return (val == null && sref.getValue() == null) || sref.getValue().equals(val); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ITextBlockReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ITextBlockReferenceInitialiser.java new file mode 100644 index 0000000000..3d5c954823 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ITextBlockReferenceInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.TextBlockReference; + +public interface ITextBlockReferenceInitialiser extends IReferenceInitialiser { + @Override + public TextBlockReference instantiate(); + + public default boolean setValue(TextBlockReference tbref, String val) { + tbref.setValue(val); + return (val == null && tbref.getValue() == null) || tbref.getValue().equals(val); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IdentifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IdentifierReferenceInitialiser.java new file mode 100644 index 0000000000..4d29328559 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/IdentifierReferenceInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.IdentifierReference; +import org.emftext.language.java.references.ReferencesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class IdentifierReferenceInitialiser extends AbstractInitialiserBase implements IIdentifierReferenceInitialiser { + @Override + public IIdentifierReferenceInitialiser newInitialiser() { + return new IdentifierReferenceInitialiser(); + } + + @Override + public IdentifierReference instantiate() { + return ReferencesFactory.eINSTANCE.createIdentifierReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/MethodCallInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/MethodCallInitialiser.java new file mode 100644 index 0000000000..3a32a11a52 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/MethodCallInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.MethodCall; +import org.emftext.language.java.references.ReferencesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class MethodCallInitialiser extends AbstractInitialiserBase implements IMethodCallInitialiser { + @Override + public IMethodCallInitialiser newInitialiser() { + return new MethodCallInitialiser(); + } + + @Override + public MethodCall instantiate() { + return ReferencesFactory.eINSTANCE.createMethodCall(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PackageReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PackageReferenceInitialiser.java new file mode 100644 index 0000000000..ba4e23bc0e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PackageReferenceInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.PackageReference; +import org.emftext.language.java.references.ReferencesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PackageReferenceInitialiser extends AbstractInitialiserBase implements IPackageReferenceInitialiser { + @Override + public IPackageReferenceInitialiser newInitialiser() { + return new PackageReferenceInitialiser(); + } + + @Override + public PackageReference instantiate() { + return ReferencesFactory.eINSTANCE.createPackageReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PrimitiveTypeReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PrimitiveTypeReferenceInitialiser.java new file mode 100644 index 0000000000..030fd1b9f1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/PrimitiveTypeReferenceInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.PrimitiveTypeReference; +import org.emftext.language.java.references.ReferencesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class PrimitiveTypeReferenceInitialiser extends AbstractInitialiserBase + implements IPrimitiveTypeReferenceInitialiser { + @Override + public IPrimitiveTypeReferenceInitialiser newInitialiser() { + return new PrimitiveTypeReferenceInitialiser(); + } + + @Override + public PrimitiveTypeReference instantiate() { + return ReferencesFactory.eINSTANCE.createPrimitiveTypeReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReferencesInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReferencesInitialiserPackage.java new file mode 100644 index 0000000000..21812110f5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReferencesInitialiserPackage.java @@ -0,0 +1,27 @@ +package cipm.consistency.initialisers.jamopp.references; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class ReferencesInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new IdentifierReferenceInitialiser(), new MethodCallInitialiser(), + new PackageReferenceInitialiser(), new PrimitiveTypeReferenceInitialiser(), + new ReflectiveClassReferenceInitialiser(), new SelfReferenceInitialiser(), + new StringReferenceInitialiser(), new TextBlockReferenceInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IArgumentableInitialiser.class, IElementReferenceInitialiser.class, + IIdentifierReferenceInitialiser.class, IMethodCallInitialiser.class, IPackageReferenceInitialiser.class, + IPrimitiveTypeReferenceInitialiser.class, IReferenceableElementInitialiser.class, + IReferenceInitialiser.class, IReflectiveClassReferenceInitialiser.class, + ISelfReferenceInitialiser.class, IStringReferenceInitialiser.class, + ITextBlockReferenceInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReflectiveClassReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReflectiveClassReferenceInitialiser.java new file mode 100644 index 0000000000..e80574f949 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/ReflectiveClassReferenceInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.ReferencesFactory; +import org.emftext.language.java.references.ReflectiveClassReference; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ReflectiveClassReferenceInitialiser extends AbstractInitialiserBase + implements IReflectiveClassReferenceInitialiser { + @Override + public IReflectiveClassReferenceInitialiser newInitialiser() { + return new ReflectiveClassReferenceInitialiser(); + } + + @Override + public ReflectiveClassReference instantiate() { + return ReferencesFactory.eINSTANCE.createReflectiveClassReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/SelfReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/SelfReferenceInitialiser.java new file mode 100644 index 0000000000..bd74cbce4e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/SelfReferenceInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.ReferencesFactory; +import org.emftext.language.java.references.SelfReference; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SelfReferenceInitialiser extends AbstractInitialiserBase implements ISelfReferenceInitialiser { + @Override + public ISelfReferenceInitialiser newInitialiser() { + return new SelfReferenceInitialiser(); + } + + @Override + public SelfReference instantiate() { + return ReferencesFactory.eINSTANCE.createSelfReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/StringReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/StringReferenceInitialiser.java new file mode 100644 index 0000000000..297e697e2d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/StringReferenceInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.ReferencesFactory; +import org.emftext.language.java.references.StringReference; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class StringReferenceInitialiser extends AbstractInitialiserBase implements IStringReferenceInitialiser { + @Override + public IStringReferenceInitialiser newInitialiser() { + return new StringReferenceInitialiser(); + } + + @Override + public StringReference instantiate() { + return ReferencesFactory.eINSTANCE.createStringReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/TextBlockReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/TextBlockReferenceInitialiser.java new file mode 100644 index 0000000000..84058618fc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/TextBlockReferenceInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.references; + +import org.emftext.language.java.references.ReferencesFactory; +import org.emftext.language.java.references.TextBlockReference; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class TextBlockReferenceInitialiser extends AbstractInitialiserBase implements ITextBlockReferenceInitialiser { + @Override + public ITextBlockReferenceInitialiser newInitialiser() { + return new TextBlockReferenceInitialiser(); + } + + @Override + public TextBlockReference instantiate() { + return ReferencesFactory.eINSTANCE.createTextBlockReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/package-info.java new file mode 100644 index 0000000000..054472ee11 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/references/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.references}. + */ +package cipm.consistency.initialisers.jamopp.references; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/AssertInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/AssertInitialiser.java new file mode 100644 index 0000000000..0cb92ea3fc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/AssertInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.statements.Assert; + +public class AssertInitialiser extends AbstractInitialiserBase implements IAssertInitialiser { + @Override + public IAssertInitialiser newInitialiser() { + return new AssertInitialiser(); + } + + @Override + public Assert instantiate() { + return StatementsFactory.eINSTANCE.createAssert(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BlockInitialiser.java new file mode 100644 index 0000000000..b670690848 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BlockInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.statements.Block; + +public class BlockInitialiser extends AbstractInitialiserBase implements IBlockInitialiser { + @Override + public Block instantiate() { + return StatementsFactory.eINSTANCE.createBlock(); + } + + @Override + public BlockInitialiser newInitialiser() { + return new BlockInitialiser(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BreakInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BreakInitialiser.java new file mode 100644 index 0000000000..37ce6d458f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/BreakInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Break; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class BreakInitialiser extends AbstractInitialiserBase implements IBreakInitialiser { + @Override + public IBreakInitialiser newInitialiser() { + return new BreakInitialiser(); + } + + @Override + public Break instantiate() { + return StatementsFactory.eINSTANCE.createBreak(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/CatchBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/CatchBlockInitialiser.java new file mode 100644 index 0000000000..740a0c2d29 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/CatchBlockInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.CatchBlock; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class CatchBlockInitialiser extends AbstractInitialiserBase implements ICatchBlockInitialiser { + @Override + public CatchBlock instantiate() { + return StatementsFactory.eINSTANCE.createCatchBlock(); + } + + @Override + public CatchBlockInitialiser newInitialiser() { + return new CatchBlockInitialiser(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ConditionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ConditionInitialiser.java new file mode 100644 index 0000000000..11dad2b732 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ConditionInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Condition; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ConditionInitialiser extends AbstractInitialiserBase implements IConditionInitialiser { + @Override + public IConditionInitialiser newInitialiser() { + return new ConditionInitialiser(); + } + + @Override + public Condition instantiate() { + return StatementsFactory.eINSTANCE.createCondition(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ContinueInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ContinueInitialiser.java new file mode 100644 index 0000000000..e418655993 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ContinueInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Continue; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ContinueInitialiser extends AbstractInitialiserBase implements IContinueInitialiser { + @Override + public IContinueInitialiser newInitialiser() { + return new ContinueInitialiser(); + } + + @Override + public Continue instantiate() { + return StatementsFactory.eINSTANCE.createContinue(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchCaseInitialiser.java new file mode 100644 index 0000000000..58fe39deef --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchCaseInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.DefaultSwitchCase; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DefaultSwitchCaseInitialiser extends AbstractInitialiserBase implements IDefaultSwitchCaseInitialiser { + @Override + public IDefaultSwitchCaseInitialiser newInitialiser() { + return new DefaultSwitchCaseInitialiser(); + } + + @Override + public DefaultSwitchCase instantiate() { + return StatementsFactory.eINSTANCE.createDefaultSwitchCase(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchRuleInitialiser.java new file mode 100644 index 0000000000..1b0e9bb27f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DefaultSwitchRuleInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.DefaultSwitchRule; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DefaultSwitchRuleInitialiser extends AbstractInitialiserBase implements IDefaultSwitchRuleInitialiser { + @Override + public IDefaultSwitchRuleInitialiser newInitialiser() { + return new DefaultSwitchRuleInitialiser(); + } + + @Override + public DefaultSwitchRule instantiate() { + return StatementsFactory.eINSTANCE.createDefaultSwitchRule(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DoWhileLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DoWhileLoopInitialiser.java new file mode 100644 index 0000000000..ee9ad76e93 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/DoWhileLoopInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.DoWhileLoop; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DoWhileLoopInitialiser extends AbstractInitialiserBase implements IDoWhileLoopInitialiser { + @Override + public IDoWhileLoopInitialiser newInitialiser() { + return new DoWhileLoopInitialiser(); + } + + @Override + public DoWhileLoop instantiate() { + return StatementsFactory.eINSTANCE.createDoWhileLoop(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/EmptyStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/EmptyStatementInitialiser.java new file mode 100644 index 0000000000..a17ca76ebc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/EmptyStatementInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.EmptyStatement; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class EmptyStatementInitialiser extends AbstractInitialiserBase implements IEmptyStatementInitialiser { + @Override + public IEmptyStatementInitialiser newInitialiser() { + return new EmptyStatementInitialiser(); + } + + @Override + public EmptyStatement instantiate() { + return StatementsFactory.eINSTANCE.createEmptyStatement(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ExpressionStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ExpressionStatementInitialiser.java new file mode 100644 index 0000000000..b6f75cf026 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ExpressionStatementInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.ExpressionStatement; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ExpressionStatementInitialiser extends AbstractInitialiserBase implements IExpressionStatementInitialiser { + @Override + public IExpressionStatementInitialiser newInitialiser() { + return new ExpressionStatementInitialiser(); + } + + @Override + public ExpressionStatement instantiate() { + return StatementsFactory.eINSTANCE.createExpressionStatement(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForEachLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForEachLoopInitialiser.java new file mode 100644 index 0000000000..8304afc693 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForEachLoopInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.ForEachLoop; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ForEachLoopInitialiser extends AbstractInitialiserBase implements IForEachLoopInitialiser { + @Override + public IForEachLoopInitialiser newInitialiser() { + return new ForEachLoopInitialiser(); + } + + @Override + public ForEachLoop instantiate() { + return StatementsFactory.eINSTANCE.createForEachLoop(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForLoopInitialiser.java new file mode 100644 index 0000000000..0e436c73a0 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ForLoopInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.ForLoop; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ForLoopInitialiser extends AbstractInitialiserBase implements IForLoopInitialiser { + @Override + public IForLoopInitialiser newInitialiser() { + return new ForLoopInitialiser(); + } + + @Override + public ForLoop instantiate() { + return StatementsFactory.eINSTANCE.createForLoop(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IAssertInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IAssertInitialiser.java new file mode 100644 index 0000000000..27d9d01c51 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IAssertInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Assert; + +public interface IAssertInitialiser extends IConditionalInitialiser, IStatementInitialiser { + @Override + public Assert instantiate(); + + public default boolean setErrorMessage(Assert asrt, Expression errMsg) { + asrt.setErrorMessage(errMsg); + return (errMsg == null && asrt.getErrorMessage() == null) || asrt.getErrorMessage().equals(errMsg); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockContainerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockContainerInitialiser.java new file mode 100644 index 0000000000..5a4cdd242e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockContainerInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Block; +import org.emftext.language.java.statements.BlockContainer; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IBlockContainerInitialiser extends ICommentableInitialiser { + @Override + public BlockContainer instantiate(); + + public default boolean setBlock(BlockContainer bc, Block block) { + bc.setBlock(block); + return (block == null && bc.getBlock() == null) || bc.getBlock().equals(block); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockInitialiser.java new file mode 100644 index 0000000000..207c1fdd41 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBlockInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Block; +import org.emftext.language.java.statements.StatementListContainer; + +import cipm.consistency.initialisers.jamopp.members.IMemberInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.IModifiableInitialiser; + +public interface IBlockInitialiser + extends IModifiableInitialiser, IMemberInitialiser, IStatementInitialiser, IStatementListContainerInitialiser { + @Override + public Block instantiate(); + + @Override + public default boolean canContainStatements(StatementListContainer slc) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBreakInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBreakInitialiser.java new file mode 100644 index 0000000000..b72b475730 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IBreakInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Break; + +public interface IBreakInitialiser extends IJumpInitialiser { + @Override + public Break instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ICatchBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ICatchBlockInitialiser.java new file mode 100644 index 0000000000..98f65532cb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ICatchBlockInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.parameters.OrdinaryParameter; +import org.emftext.language.java.statements.CatchBlock; +import org.emftext.language.java.statements.StatementListContainer; + +public interface ICatchBlockInitialiser extends IBlockContainerInitialiser, IStatementListContainerInitialiser { + + @Override + public CatchBlock instantiate(); + + public default boolean setParameter(CatchBlock cb, OrdinaryParameter param) { + cb.setParameter(param); + return (param == null && cb.getParameter() == null) || cb.getParameter().equals(param); + } + + @Override + public default boolean canContainStatements(StatementListContainer slc) { + return ((CatchBlock) slc).getBlock() != null; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionInitialiser.java new file mode 100644 index 0000000000..ae6a2e1582 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Condition; +import org.emftext.language.java.statements.Statement; + +public interface IConditionInitialiser + extends IConditionalInitialiser, IStatementInitialiser, IStatementContainerInitialiser { + + @Override + public Condition instantiate(); + + public default boolean setElseStatement(Condition cond, Statement elseSt) { + cond.setElseStatement(elseSt); + return (elseSt == null && cond.getElseStatement() == null) || cond.getElseStatement().equals(elseSt); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionalInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionalInitialiser.java new file mode 100644 index 0000000000..8db3161981 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IConditionalInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Conditional; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IConditionalInitialiser extends ICommentableInitialiser { + @Override + public Conditional instantiate(); + + public default boolean setCondition(Conditional cond, Expression condExpr) { + cond.setCondition(condExpr); + return (condExpr == null && cond.getCondition() == null) || cond.getCondition().equals(condExpr); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IContinueInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IContinueInitialiser.java new file mode 100644 index 0000000000..dd81b69440 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IContinueInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Continue; + +public interface IContinueInitialiser extends IJumpInitialiser { + @Override + public Continue instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchCaseInitialiser.java new file mode 100644 index 0000000000..8f07ba5570 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchCaseInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.DefaultSwitchCase; + +public interface IDefaultSwitchCaseInitialiser extends ISwitchCaseInitialiser { + @Override + public DefaultSwitchCase instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchRuleInitialiser.java new file mode 100644 index 0000000000..86e44431dc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDefaultSwitchRuleInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.DefaultSwitchRule; + +public interface IDefaultSwitchRuleInitialiser extends ISwitchRuleInitialiser { + @Override + public DefaultSwitchRule instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDoWhileLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDoWhileLoopInitialiser.java new file mode 100644 index 0000000000..caae9d7f27 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IDoWhileLoopInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.DoWhileLoop; + +public interface IDoWhileLoopInitialiser extends IWhileLoopInitialiser { + @Override + public DoWhileLoop instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IEmptyStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IEmptyStatementInitialiser.java new file mode 100644 index 0000000000..fa070eaecb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IEmptyStatementInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.EmptyStatement; + +public interface IEmptyStatementInitialiser extends IStatementInitialiser { + @Override + public EmptyStatement instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IExpressionStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IExpressionStatementInitialiser.java new file mode 100644 index 0000000000..3791acdb73 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IExpressionStatementInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.ExpressionStatement; + +public interface IExpressionStatementInitialiser extends IStatementInitialiser { + @Override + public ExpressionStatement instantiate(); + + public default boolean setExpression(ExpressionStatement es, Expression expr) { + es.setExpression(expr); + return (expr == null && es.getExpression() == null) || es.getExpression().equals(expr); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForEachLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForEachLoopInitialiser.java new file mode 100644 index 0000000000..38e92f8cdc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForEachLoopInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.parameters.OrdinaryParameter; +import org.emftext.language.java.statements.ForEachLoop; + +public interface IForEachLoopInitialiser extends IStatementInitialiser, IStatementContainerInitialiser { + @Override + public ForEachLoop instantiate(); + + public default boolean setCollection(ForEachLoop fel, Expression col) { + fel.setCollection(col); + return (col == null && fel.getCollection() == null) || fel.getCollection().equals(col); + } + + public default boolean setNext(ForEachLoop fel, OrdinaryParameter next) { + fel.setNext(next); + return (next == null && fel.getNext() == null) || fel.getNext().equals(next); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitialiser.java new file mode 100644 index 0000000000..e2dee19392 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitialiser.java @@ -0,0 +1,28 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.ForLoop; +import org.emftext.language.java.statements.ForLoopInitializer; + +public interface IForLoopInitialiser + extends IConditionalInitialiser, IStatementInitialiser, IStatementContainerInitialiser { + @Override + public ForLoop instantiate(); + + public default boolean setInit(ForLoop fl, ForLoopInitializer init) { + fl.setInit(init); + return (init == null && fl.getInit() == null) || fl.getInit().equals(init); + } + + public default boolean addUpdate(ForLoop fl, Expression update) { + if (update != null) { + fl.getUpdates().add(update); + return fl.getUpdates().contains(update); + } + return true; + } + + public default boolean addUpdates(ForLoop fl, Expression[] updates) { + return this.doMultipleModifications(fl, updates, this::addUpdate); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitializerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitializerInitialiser.java new file mode 100644 index 0000000000..2218814fe6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IForLoopInitializerInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.ForLoopInitializer; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IForLoopInitializerInitialiser extends ICommentableInitialiser { + @Override + public ForLoopInitializer instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpInitialiser.java new file mode 100644 index 0000000000..153371d275 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Jump; +import org.emftext.language.java.statements.JumpLabel; + +public interface IJumpInitialiser extends IStatementInitialiser { + @Override + public Jump instantiate(); + + public default boolean setTarget(Jump jump, JumpLabel target) { + jump.setTarget(target); + return (target == null && jump.getTarget() == null) || jump.getTarget().equals(target); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpLabelInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpLabelInitialiser.java new file mode 100644 index 0000000000..dc511cfd1e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IJumpLabelInitialiser.java @@ -0,0 +1,12 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.JumpLabel; + +import cipm.consistency.initialisers.jamopp.commons.INamedElementInitialiser; + +public interface IJumpLabelInitialiser + extends INamedElementInitialiser, IStatementInitialiser, IStatementContainerInitialiser { + @Override + public JumpLabel instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ILocalVariableStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ILocalVariableStatementInitialiser.java new file mode 100644 index 0000000000..a4c09a2c4f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ILocalVariableStatementInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.LocalVariableStatement; +import org.emftext.language.java.variables.LocalVariable; + +public interface ILocalVariableStatementInitialiser extends IStatementInitialiser { + @Override + public LocalVariableStatement instantiate(); + + public default boolean setVariable(LocalVariableStatement lvs, LocalVariable var) { + lvs.setVariable(var); + return (var == null && lvs.getVariable() == null) || lvs.getVariable().equals(var); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchCaseInitialiser.java new file mode 100644 index 0000000000..6a1cf39269 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchCaseInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.NormalSwitchCase; + +public interface INormalSwitchCaseInitialiser extends IConditionalInitialiser, ISwitchCaseInitialiser { + @Override + public NormalSwitchCase instantiate(); + + public default boolean addAdditionalCondition(NormalSwitchCase nsc, Expression additionalCond) { + if (additionalCond != null) { + nsc.getAdditionalConditions().add(additionalCond); + return nsc.getAdditionalConditions().contains(additionalCond); + } + return true; + } + + public default boolean addAdditionalConditions(NormalSwitchCase nsc, Expression[] additionalConds) { + return this.doMultipleModifications(nsc, additionalConds, this::addAdditionalCondition); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchRuleInitialiser.java new file mode 100644 index 0000000000..fceb95bc6b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/INormalSwitchRuleInitialiser.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.NormalSwitchRule; + +public interface INormalSwitchRuleInitialiser extends IConditionalInitialiser, ISwitchRuleInitialiser { + @Override + public NormalSwitchRule instantiate(); + + public default boolean addAdditionalCondition(NormalSwitchRule nsr, Expression additionalCond) { + if (additionalCond != null) { + nsr.getAdditionalConditions().add(additionalCond); + return nsr.getAdditionalConditions().contains(additionalCond); + } + return true; + } + + public default boolean addAdditionalConditions(NormalSwitchRule nsr, Expression[] additionalConds) { + return this.doMultipleModifications(nsr, additionalConds, this::addAdditionalCondition); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IReturnInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IReturnInitialiser.java new file mode 100644 index 0000000000..37f860918c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IReturnInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Return; + +public interface IReturnInitialiser extends IStatementInitialiser { + @Override + public Return instantiate(); + + public default boolean setReturnValue(Return ret, Expression retVal) { + ret.setReturnValue(retVal); + return (retVal == null && ret.getReturnValue() == null) || ret.getReturnValue().equals(retVal); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementContainerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementContainerInitialiser.java new file mode 100644 index 0000000000..f48279bbb6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementContainerInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Statement; +import org.emftext.language.java.statements.StatementContainer; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IStatementContainerInitialiser extends ICommentableInitialiser { + @Override + public StatementContainer instantiate(); + + public default boolean setStatement(StatementContainer sc, Statement st) { + sc.setStatement(st); + return (st == null && sc.getStatement() == null) || sc.getStatement().equals(st); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementInitialiser.java new file mode 100644 index 0000000000..d42ae16503 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Statement; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IStatementInitialiser extends ICommentableInitialiser { + @Override + public Statement instantiate(); +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementListContainerInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementListContainerInitialiser.java new file mode 100644 index 0000000000..e0d241ab4e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IStatementListContainerInitialiser.java @@ -0,0 +1,63 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Statement; +import org.emftext.language.java.statements.StatementListContainer; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +/** + * An interface meant to be implemented by initialisers, which are supposed to + * create {@link StatementListContainer} instances.
+ *
+ * Not all implementors of {@link StatementListContainer} allow adding + * statements via {@code .getStatements().add(...)} as expected. Attempting to + * add statements that way can result in exceptions under circumstances. The + * method {@link #canContainStatements(StatementListContainer)} can be used to + * determine, whether this is possible. + * + * @author Alp Torac Genc + */ +public interface IStatementListContainerInitialiser extends ICommentableInitialiser { + @Override + public StatementListContainer instantiate(); + + /** + * Attempts to add the given {@link Statement} st to the given + * {@link StatementListContainer} slc. Uses {@code slc.getStatements().add(st)} + * to do so.
+ *
+ * Note: Attempting to add a null statement will still return true, since there + * is no modification to be performed. + * + * @see {@link IStatementListContainerInitialiser} + * @see {@link #addStatementAssertion(StatementListContainer, Statement)} + */ + public default boolean addStatement(StatementListContainer slc, Statement st) { + if (st != null) { + if (!this.canContainStatements(slc)) { + return false; + } + slc.getStatements().add(st); + return slc.getStatements().contains(st); + } + return true; + } + + /** + * Extracted from {@link #addStatement(StatementListContainer, Statement)} + * because there are some implementors of {@link StatementListContainer}, which + * throw {@link NullPointerException} if {@code slc.getStatements().add(...)} is + * called without proper initialisation. Extracting this method allows such + * implementors to indicate, whether {@link Statement}s can be added to them via + * {@link #addStatement(StatementListContainer, Statement)} without issues. + * + * @return Whether {@link Statement}s can be added to the given + * {@link StatementListContainer} via + * {@link #addStatement(StatementListContainer, Statement)}. + */ + public boolean canContainStatements(StatementListContainer slc); + + public default boolean addStatements(StatementListContainer slc, Statement[] sts) { + return this.doMultipleModifications(slc, sts, this::addStatement); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchCaseInitialiser.java new file mode 100644 index 0000000000..4703854963 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchCaseInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementListContainer; +import org.emftext.language.java.statements.SwitchCase; + +public interface ISwitchCaseInitialiser extends IStatementListContainerInitialiser { + @Override + public SwitchCase instantiate(); + + @Override + public default boolean canContainStatements(StatementListContainer slc) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchInitialiser.java new file mode 100644 index 0000000000..66d349f11f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchInitialiser.java @@ -0,0 +1,29 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Switch; +import org.emftext.language.java.statements.SwitchCase; + +import cipm.consistency.initialisers.jamopp.expressions.IUnaryModificationExpressionChildInitialiser; + +public interface ISwitchInitialiser extends IStatementInitialiser, IUnaryModificationExpressionChildInitialiser { + @Override + public Switch instantiate(); + + public default boolean addCase(Switch sw, SwitchCase swCase) { + if (swCase != null) { + sw.getCases().add(swCase); + return sw.getCases().contains(swCase); + } + return true; + } + + public default boolean addCases(Switch sw, SwitchCase[] swCases) { + return this.doMultipleModifications(sw, swCases, this::addCase); + } + + public default boolean setVariable(Switch sw, Expression var) { + sw.setVariable(var); + return (var == null && sw.getVariable() == null) || sw.getVariable().equals(var); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchRuleInitialiser.java new file mode 100644 index 0000000000..63c08ecce6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISwitchRuleInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.SwitchRule; + +public interface ISwitchRuleInitialiser extends ISwitchCaseInitialiser { + @Override + public SwitchRule instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISynchronizedBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISynchronizedBlockInitialiser.java new file mode 100644 index 0000000000..384587e36c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ISynchronizedBlockInitialiser.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.StatementListContainer; +import org.emftext.language.java.statements.SynchronizedBlock; + +public interface ISynchronizedBlockInitialiser + extends IBlockContainerInitialiser, IStatementInitialiser, IStatementListContainerInitialiser { + @Override + public SynchronizedBlock instantiate(); + + public default boolean setLockProvider(SynchronizedBlock sb, Expression lockProvider) { + sb.setLockProvider(lockProvider); + return (lockProvider == null && sb.getLockProvider() == null) || sb.getLockProvider().equals(lockProvider); + + } + + @Override + public default boolean canContainStatements(StatementListContainer slc) { + return ((SynchronizedBlock) slc).getBlock() != null; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IThrowInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IThrowInitialiser.java new file mode 100644 index 0000000000..9657f4950c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IThrowInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.Throw; + +public interface IThrowInitialiser extends IStatementInitialiser { + @Override + public Throw instantiate(); + + public default boolean setThrowable(Throw th, Expression throwable) { + th.setThrowable(throwable); + return (throwable == null && th.getThrowable() == null) || th.getThrowable().equals(throwable); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ITryBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ITryBlockInitialiser.java new file mode 100644 index 0000000000..e072c15912 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ITryBlockInitialiser.java @@ -0,0 +1,47 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Block; +import org.emftext.language.java.statements.CatchBlock; +import org.emftext.language.java.statements.StatementListContainer; +import org.emftext.language.java.statements.TryBlock; +import org.emftext.language.java.variables.Resource; + +public interface ITryBlockInitialiser + extends IBlockContainerInitialiser, IStatementInitialiser, IStatementListContainerInitialiser { + @Override + public TryBlock instantiate(); + + public default boolean setFinallyBlock(TryBlock tb, Block finallyBlock) { + tb.setFinallyBlock(finallyBlock); + return (finallyBlock == null && tb.getFinallyBlock() == null) || tb.getFinallyBlock().equals(finallyBlock); + } + + public default boolean addCatchBlock(TryBlock tb, CatchBlock cb) { + if (cb != null) { + tb.getCatchBlocks().add(cb); + return tb.getCatchBlocks().contains(cb); + } + return true; + } + + public default boolean addCatchBlocks(TryBlock tb, CatchBlock[] cbs) { + return this.doMultipleModifications(tb, cbs, this::addCatchBlock); + } + + public default boolean addResource(TryBlock tb, Resource res) { + if (res != null) { + tb.getResources().add(res); + return tb.getResources().contains(res); + } + return true; + } + + public default boolean addResources(TryBlock tb, Resource[] ress) { + return this.doMultipleModifications(tb, ress, this::addResource); + } + + @Override + public default boolean canContainStatements(StatementListContainer slc) { + return ((TryBlock) slc).getBlock() != null; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IWhileLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IWhileLoopInitialiser.java new file mode 100644 index 0000000000..a809a2ceed --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IWhileLoopInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.WhileLoop; + +public interface IWhileLoopInitialiser + extends IConditionalInitialiser, IStatementInitialiser, IStatementContainerInitialiser { + @Override + public WhileLoop instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IYieldStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IYieldStatementInitialiser.java new file mode 100644 index 0000000000..ecc8972db9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/IYieldStatementInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.expressions.Expression; +import org.emftext.language.java.statements.YieldStatement; + +public interface IYieldStatementInitialiser extends IStatementInitialiser { + @Override + public YieldStatement instantiate(); + + public default boolean setYieldExpression(YieldStatement ys, Expression yieldExpr) { + ys.setYieldExpression(yieldExpr); + return (yieldExpr == null && ys.getYieldExpression() == null) || ys.getYieldExpression().equals(yieldExpr); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/JumpLabelInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/JumpLabelInitialiser.java new file mode 100644 index 0000000000..9d6e125b79 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/JumpLabelInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.JumpLabel; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class JumpLabelInitialiser extends AbstractInitialiserBase implements IJumpLabelInitialiser { + @Override + public IJumpLabelInitialiser newInitialiser() { + return new JumpLabelInitialiser(); + } + + @Override + public JumpLabel instantiate() { + return StatementsFactory.eINSTANCE.createJumpLabel(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/LocalVariableStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/LocalVariableStatementInitialiser.java new file mode 100644 index 0000000000..42bdfa0eeb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/LocalVariableStatementInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.LocalVariableStatement; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class LocalVariableStatementInitialiser extends AbstractInitialiserBase + implements ILocalVariableStatementInitialiser { + @Override + public ILocalVariableStatementInitialiser newInitialiser() { + return new LocalVariableStatementInitialiser(); + } + + @Override + public LocalVariableStatement instantiate() { + return StatementsFactory.eINSTANCE.createLocalVariableStatement(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchCaseInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchCaseInitialiser.java new file mode 100644 index 0000000000..676e591ca4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchCaseInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.NormalSwitchCase; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NormalSwitchCaseInitialiser extends AbstractInitialiserBase implements INormalSwitchCaseInitialiser { + @Override + public INormalSwitchCaseInitialiser newInitialiser() { + return new NormalSwitchCaseInitialiser(); + } + + @Override + public NormalSwitchCase instantiate() { + return StatementsFactory.eINSTANCE.createNormalSwitchCase(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchRuleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchRuleInitialiser.java new file mode 100644 index 0000000000..490d73eecc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/NormalSwitchRuleInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.NormalSwitchRule; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NormalSwitchRuleInitialiser extends AbstractInitialiserBase implements INormalSwitchRuleInitialiser { + @Override + public INormalSwitchRuleInitialiser newInitialiser() { + return new NormalSwitchRuleInitialiser(); + } + + @Override + public NormalSwitchRule instantiate() { + return StatementsFactory.eINSTANCE.createNormalSwitchRule(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ReturnInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ReturnInitialiser.java new file mode 100644 index 0000000000..f090c97614 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ReturnInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.Return; +import org.emftext.language.java.statements.StatementsFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ReturnInitialiser extends AbstractInitialiserBase implements IReturnInitialiser { + @Override + public IReturnInitialiser newInitialiser() { + return new ReturnInitialiser(); + } + + @Override + public Return instantiate() { + return StatementsFactory.eINSTANCE.createReturn(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/StatementsInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/StatementsInitialiserPackage.java new file mode 100644 index 0000000000..31064592f1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/StatementsInitialiserPackage.java @@ -0,0 +1,38 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class StatementsInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new AssertInitialiser(), new BlockInitialiser(), + new BreakInitialiser(), new CatchBlockInitialiser(), new ConditionInitialiser(), + new ContinueInitialiser(), new DefaultSwitchCaseInitialiser(), new DefaultSwitchRuleInitialiser(), + new DoWhileLoopInitialiser(), new EmptyStatementInitialiser(), new ExpressionStatementInitialiser(), + new ForEachLoopInitialiser(), new ForLoopInitialiser(), new JumpLabelInitialiser(), + new LocalVariableStatementInitialiser(), new NormalSwitchCaseInitialiser(), + new NormalSwitchRuleInitialiser(), new ReturnInitialiser(), new SwitchInitialiser(), + new SynchronizedBlockInitialiser(), new ThrowInitialiser(), new TryBlockInitialiser(), + new WhileLoopInitialiser(), new YieldStatementInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAssertInitialiser.class, IBlockContainerInitialiser.class, + IBlockInitialiser.class, IBreakInitialiser.class, ICatchBlockInitialiser.class, + IConditionalInitialiser.class, IConditionInitialiser.class, IContinueInitialiser.class, + IDefaultSwitchCaseInitialiser.class, IDefaultSwitchRuleInitialiser.class, IDoWhileLoopInitialiser.class, + IEmptyStatementInitialiser.class, IExpressionStatementInitialiser.class, IForEachLoopInitialiser.class, + IForLoopInitialiser.class, IForLoopInitializerInitialiser.class, IJumpInitialiser.class, + IJumpLabelInitialiser.class, ILocalVariableStatementInitialiser.class, + INormalSwitchCaseInitialiser.class, INormalSwitchRuleInitialiser.class, IReturnInitialiser.class, + IStatementContainerInitialiser.class, IStatementInitialiser.class, + IStatementListContainerInitialiser.class, ISwitchCaseInitialiser.class, ISwitchInitialiser.class, + ISwitchRuleInitialiser.class, ISynchronizedBlockInitialiser.class, IThrowInitialiser.class, + ITryBlockInitialiser.class, IWhileLoopInitialiser.class, IYieldStatementInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SwitchInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SwitchInitialiser.java new file mode 100644 index 0000000000..23900854d3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SwitchInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementsFactory; +import org.emftext.language.java.statements.Switch; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SwitchInitialiser extends AbstractInitialiserBase implements ISwitchInitialiser { + @Override + public ISwitchInitialiser newInitialiser() { + return new SwitchInitialiser(); + } + + @Override + public Switch instantiate() { + return StatementsFactory.eINSTANCE.createSwitch(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SynchronizedBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SynchronizedBlockInitialiser.java new file mode 100644 index 0000000000..e69411fe4f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/SynchronizedBlockInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementsFactory; +import org.emftext.language.java.statements.SynchronizedBlock; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class SynchronizedBlockInitialiser extends AbstractInitialiserBase implements ISynchronizedBlockInitialiser { + @Override + public SynchronizedBlock instantiate() { + return StatementsFactory.eINSTANCE.createSynchronizedBlock(); + } + + @Override + public SynchronizedBlockInitialiser newInitialiser() { + return new SynchronizedBlockInitialiser(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ThrowInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ThrowInitialiser.java new file mode 100644 index 0000000000..6e1f83a558 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/ThrowInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementsFactory; +import org.emftext.language.java.statements.Throw; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ThrowInitialiser extends AbstractInitialiserBase implements IThrowInitialiser { + @Override + public IThrowInitialiser newInitialiser() { + return new ThrowInitialiser(); + } + + @Override + public Throw instantiate() { + return StatementsFactory.eINSTANCE.createThrow(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/TryBlockInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/TryBlockInitialiser.java new file mode 100644 index 0000000000..bd47c7fefd --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/TryBlockInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementsFactory; +import org.emftext.language.java.statements.TryBlock; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class TryBlockInitialiser extends AbstractInitialiserBase implements ITryBlockInitialiser { + @Override + public TryBlock instantiate() { + return StatementsFactory.eINSTANCE.createTryBlock(); + } + + @Override + public TryBlockInitialiser newInitialiser() { + return new TryBlockInitialiser(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/WhileLoopInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/WhileLoopInitialiser.java new file mode 100644 index 0000000000..99cb95be48 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/WhileLoopInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementsFactory; +import org.emftext.language.java.statements.WhileLoop; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class WhileLoopInitialiser extends AbstractInitialiserBase implements IWhileLoopInitialiser { + @Override + public IWhileLoopInitialiser newInitialiser() { + return new WhileLoopInitialiser(); + } + + @Override + public WhileLoop instantiate() { + return StatementsFactory.eINSTANCE.createWhileLoop(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/YieldStatementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/YieldStatementInitialiser.java new file mode 100644 index 0000000000..ee424b5f10 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/YieldStatementInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.statements; + +import org.emftext.language.java.statements.StatementsFactory; +import org.emftext.language.java.statements.YieldStatement; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class YieldStatementInitialiser extends AbstractInitialiserBase implements IYieldStatementInitialiser { + @Override + public IYieldStatementInitialiser newInitialiser() { + return new YieldStatementInitialiser(); + } + + @Override + public YieldStatement instantiate() { + return StatementsFactory.eINSTANCE.createYieldStatement(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/package-info.java new file mode 100644 index 0000000000..b7cc4f581b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/statements/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.statements}. + */ +package cipm.consistency.initialisers.jamopp.statements; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/BooleanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/BooleanInitialiser.java new file mode 100644 index 0000000000..83a7386521 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/BooleanInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Boolean; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class BooleanInitialiser extends AbstractInitialiserBase implements IBooleanInitialiser { + @Override + public IBooleanInitialiser newInitialiser() { + return new BooleanInitialiser(); + } + + @Override + public Boolean instantiate() { + return TypesFactory.eINSTANCE.createBoolean(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ByteInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ByteInitialiser.java new file mode 100644 index 0000000000..211e79bc08 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ByteInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Byte; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ByteInitialiser extends AbstractInitialiserBase implements IByteInitialiser { + @Override + public IByteInitialiser newInitialiser() { + return new ByteInitialiser(); + } + + @Override + public Byte instantiate() { + return TypesFactory.eINSTANCE.createByte(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/CharInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/CharInitialiser.java new file mode 100644 index 0000000000..2c77c2b86f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/CharInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Char; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class CharInitialiser extends AbstractInitialiserBase implements ICharInitialiser { + @Override + public ICharInitialiser newInitialiser() { + return new CharInitialiser(); + } + + @Override + public Char instantiate() { + return TypesFactory.eINSTANCE.createChar(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ClassifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ClassifierReferenceInitialiser.java new file mode 100644 index 0000000000..206be0b1f3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ClassifierReferenceInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.ClassifierReference; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ClassifierReferenceInitialiser extends AbstractInitialiserBase implements IClassifierReferenceInitialiser { + @Override + public IClassifierReferenceInitialiser newInitialiser() { + return new ClassifierReferenceInitialiser(); + } + + @Override + public ClassifierReference instantiate() { + return TypesFactory.eINSTANCE.createClassifierReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/DoubleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/DoubleInitialiser.java new file mode 100644 index 0000000000..0a3d473594 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/DoubleInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Double; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class DoubleInitialiser extends AbstractInitialiserBase implements IDoubleInitialiser { + @Override + public IDoubleInitialiser newInitialiser() { + return new DoubleInitialiser(); + } + + @Override + public Double instantiate() { + return TypesFactory.eINSTANCE.createDouble(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/FloatInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/FloatInitialiser.java new file mode 100644 index 0000000000..4604a8c690 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/FloatInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Float; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class FloatInitialiser extends AbstractInitialiserBase implements IFloatInitialiser { + @Override + public IFloatInitialiser newInitialiser() { + return new FloatInitialiser(); + } + + @Override + public Float instantiate() { + return TypesFactory.eINSTANCE.createFloat(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IBooleanInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IBooleanInitialiser.java new file mode 100644 index 0000000000..cd9283a50b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IBooleanInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Boolean; + +public interface IBooleanInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Boolean instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IByteInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IByteInitialiser.java new file mode 100644 index 0000000000..49b6ab9d60 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IByteInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Byte; + +public interface IByteInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Byte instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ICharInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ICharInitialiser.java new file mode 100644 index 0000000000..14ecb2aa30 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ICharInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Char; + +public interface ICharInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Char instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IClassifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IClassifierReferenceInitialiser.java new file mode 100644 index 0000000000..2a2045f616 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IClassifierReferenceInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.ClassifierReference; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; +import cipm.consistency.initialisers.jamopp.generics.ITypeArgumentableInitialiser; + +public interface IClassifierReferenceInitialiser + extends ITypeArgumentableInitialiser, IAnnotableInitialiser, ITypeReferenceInitialiser { + @Override + public ClassifierReference instantiate(); + + @Override + public default boolean canSetTarget(TypeReference tref) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IDoubleInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IDoubleInitialiser.java new file mode 100644 index 0000000000..50e651be63 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IDoubleInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Double; + +public interface IDoubleInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Double instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IFloatInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IFloatInitialiser.java new file mode 100644 index 0000000000..9976df7438 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IFloatInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Float; + +public interface IFloatInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Float instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IInferableTypeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IInferableTypeInitialiser.java new file mode 100644 index 0000000000..cf80eaa051 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IInferableTypeInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.InferableType; +import org.emftext.language.java.types.TypeReference; + +public interface IInferableTypeInitialiser extends ITypedElementExtensionInitialiser, ITypeReferenceInitialiser { + @Override + public InferableType instantiate(); + + @Override + public default boolean canSetTarget(TypeReference tref) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IIntInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IIntInitialiser.java new file mode 100644 index 0000000000..6c573d4f45 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IIntInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Int; + +public interface IIntInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Int instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ILongInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ILongInitialiser.java new file mode 100644 index 0000000000..3836ab4ddb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ILongInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Long; + +public interface ILongInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Long instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/INamespaceClassifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/INamespaceClassifierReferenceInitialiser.java new file mode 100644 index 0000000000..86fe428c1b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/INamespaceClassifierReferenceInitialiser.java @@ -0,0 +1,103 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.ClassifierReference; +import org.emftext.language.java.types.NamespaceClassifierReference; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.commons.INamespaceAwareElementInitialiser; + +public interface INamespaceClassifierReferenceInitialiser + extends INamespaceAwareElementInitialiser, ITypeReferenceInitialiser { + @Override + public NamespaceClassifierReference instantiate(); + + @Override + public default boolean setTargetAssertion(TypeReference tref, Classifier target) { + if (target == null && tref.getTarget() == null) { + return true; + } else if (target == null) { + return false; + } + + var castedTref = (NamespaceClassifierReference) tref; + var containerName = target.getContainingContainerName(); + var nss = castedTref.getNamespaces(); + var clsRefs = castedTref.getClassifierReferences(); + + /* + * Assertions for the implementation at + * https://github.com/DevBoost/JaMoPP/blob/master/Core/org.emftext.language.java + * /src/org/emftext/language/java/extensions/types/TypeReferenceExtension.java + */ + return ITypeReferenceInitialiser.super.setTargetAssertion(tref, target) && nss != null && containerName != null + && nss.size() == containerName.size() && nss.containsAll(containerName) && clsRefs != null + && clsRefs.size() == 1 && clsRefs.stream().anyMatch((cr) -> cr.getTarget().equals(target)); + } + + /** + * {@inheritDoc}
+ *
+ * In the case of {@link NamespaceClassifierReference}, this method: + *
    + *
  • Clears ALL {@link ClassifierReference} instances stored in tref, + *
  • Sets target of tref ({@code tref.getTarget()}) to target, + *
  • Internally constructs and adds a {@link ClassifierReference} pointing at + * target to tref. + *
+ * The overridden version of this method in {@link NamespaceClassifierReference} + * introduces no changes to its super version in + * {@link ITypeReferenceInitialiser}. It is overridden for the sake of providing + * commentary.
+ *
+ * + * @see {@link #canSetTarget(TypeReference)} + * @see {@link #canSetTargetTo(TypeReference, Classifier)} + * @see {@link #setTargetAssertion(TypeReference, Classifier)} + * @see {@link #addClassifierReference(NamespaceClassifierReference, ClassifierReference)} + */ + @Override + public default boolean setTarget(TypeReference tref, Classifier target) { + return ITypeReferenceInitialiser.super.setTarget(tref, target); + } + + /** + * This method: + * + *
    + *
  • Adds the given clsRef to {@code ncr.getClassifierReferences()}, + *
  • Replaces the target of ncr ({@code ncr.getTarget()}) with + * {@code clsRef.getTarget()}. + *
+ * + * Using this method modifies the target attribute of ncr + * ({@code ncr.getTarget()}). Therefore, it should normally NOT be used + * along with {@link #setTarget(TypeReference, Classifier)}, as they will modify + * the said target attribute in conflicting ways.
+ *
+ * + * @see {@link #setTarget(TypeReference, Classifier)} + */ + public default boolean addClassifierReference(NamespaceClassifierReference ncr, ClassifierReference clsRef) { + if (clsRef != null) { + ncr.getClassifierReferences().add(clsRef); + return ncr.getClassifierReferences().contains(clsRef); + } + return true; + } + + @Override + public default boolean canSetTarget(TypeReference tref) { + return true; + } + + @Override + public default boolean canSetTargetTo(TypeReference tref, Classifier target) { + return ITypeReferenceInitialiser.super.canSetTargetTo(tref, target) + && target.getContainingContainerName() != null; + } + + public default boolean addClassifierReferences(NamespaceClassifierReference ncr, ClassifierReference[] clsRefs) { + return this.doMultipleModifications(ncr, clsRefs, this::addClassifierReference); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IPrimitiveTypeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IPrimitiveTypeInitialiser.java new file mode 100644 index 0000000000..e649812315 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IPrimitiveTypeInitialiser.java @@ -0,0 +1,46 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.PrimitiveType; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.annotations.IAnnotableInitialiser; + +/** + * An interface meant to be implemented by initialisers, which are supposed to + * instantiate {@link PrimitiveType}.
+ *
+ * The target attribute of primitive types ({@code tref.getTarget()}) are (as + * their name imply) primitives and thus not adjustable. + * + * @author Alp Torac Genc + */ +public interface IPrimitiveTypeInitialiser extends IAnnotableInitialiser, ITypeInitialiser, ITypeReferenceInitialiser { + @Override + public PrimitiveType instantiate(); + + /** + * {@inheritDoc}
+ *
+ * In the case of {@link PrimitiveType}, this method does nothing, since the + * target attribute of primitive types ({@code tref.getTarget()}) are (as their + * name imply) primitives and thus not adjustable.
+ *
+ * This method is overridden to provide commentary, it introduces no changes to + * its super version in {@link ITypeReferenceInitialiser}. + */ + @Override + public default boolean setTarget(TypeReference tref, Classifier target) { + return ITypeReferenceInitialiser.super.setTarget(tref, target); + } + + /** + * {@inheritDoc} + * + * @see {@link IPrimitiveTypeInitialiser} + */ + @Override + public default boolean canSetTarget(TypeReference tref) { + return false; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IShortInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IShortInitialiser.java new file mode 100644 index 0000000000..8cbe7f0650 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IShortInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Short; + +public interface IShortInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Short instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeInitialiser.java new file mode 100644 index 0000000000..84ae8d086f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeInitialiser.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Type; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface ITypeInitialiser extends ICommentableInitialiser { + @Override + public Type instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeReferenceInitialiser.java new file mode 100644 index 0000000000..639c10ca38 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypeReferenceInitialiser.java @@ -0,0 +1,76 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.classifiers.Classifier; +import org.emftext.language.java.types.TypeReference; + +import cipm.consistency.initialisers.jamopp.arrays.IArrayTypeableInitialiser; + +/** + * An interface meant to be implemented by initialisers, which are supposed to + * instantiate {@link TypeReference}.
+ *
+ * {@link TypeReference} itself does not have the target attribute, yet its + * implementors do. Its implementors' relations to that attribute vary. + * Therefore, whether the said attribute is modifiable in the individual + * implementors and the acceptable target types differ. Because of this, 2 + * methods {@link #canSetTarget(TypeReference)} and + * {@link #canSetTargetTo(TypeReference, Classifier)} are provided. + * + * @author Alp Torac Genc + */ +public interface ITypeReferenceInitialiser extends IArrayTypeableInitialiser { + @Override + public TypeReference instantiate(); + + /** + * Since {@link TypeReference} itself does not have the "target" attribute and + * its implementors' relations to that attribute vary, this method is + * implemented as a template.
+ *
+ * Therefore, what this method does can change immensely between different + * implementors. Check the concrete implementations within implementors for + * further details.
+ *
+ * Attempting to set null as target will return true, regardless of the concrete + * implementor, since there is no modification to perform. + * + * @see {@link #canSetTarget(TypeReference)} + * @see {@link #canSetTargetTo(TypeReference, Classifier)} + * @see {@link #setTargetAssertion(TypeReference, Classifier)} + */ + public default boolean setTarget(TypeReference tref, Classifier target) { + if (target != null && !this.canSetTargetTo(tref, target)) { + return false; + } + + tref.setTarget(target); + return this.setTargetAssertion(tref, target); + } + + /** + * @return Whether calling {@link #setTarget(TypeReference, Classifier)} with + * the given parameters results in the expected behaviour. + */ + public default boolean setTargetAssertion(TypeReference tref, Classifier target) { + var cTarget = tref.getTarget(); + return (target == null && cTarget == null) || cTarget.equals(target); + } + + /** + * @return Whether {@code tref.setTarget(...)} method can be used to modify + * tref. + */ + public boolean canSetTarget(TypeReference tref); + + /** + * Expects {@link #canSetTarget(TypeReference)} to return true for tref, since + * otherwise its target attribute cannot be changed in the first place. + * + * @return Whether {@code tref.setTarget(target)} method can be used in the + * context of the given target parameter. Returns false if + * {@code target == null}. + */ + public default boolean canSetTargetTo(TypeReference tref, Classifier target) { + return target != null && this.canSetTarget(tref); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementExtensionInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementExtensionInitialiser.java new file mode 100644 index 0000000000..8a698e8f41 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementExtensionInitialiser.java @@ -0,0 +1,23 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.TypeReference; +import org.emftext.language.java.types.TypedElementExtension; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface ITypedElementExtensionInitialiser extends ICommentableInitialiser { + @Override + public TypedElementExtension instantiate(); + + public default boolean addActualTarget(TypedElementExtension tee, TypeReference actualTarget) { + if (actualTarget != null) { + tee.getActualTargets().add(actualTarget); + return tee.getActualTargets().contains(actualTarget); + } + return true; + } + + public default boolean addActualTargets(TypedElementExtension tee, TypeReference[] actualTargets) { + return this.doMultipleModifications(tee, actualTargets, this::addActualTarget); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementInitialiser.java new file mode 100644 index 0000000000..df52424487 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ITypedElementInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.TypeReference; +import org.emftext.language.java.types.TypedElement; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface ITypedElementInitialiser extends ICommentableInitialiser { + @Override + public TypedElement instantiate(); + + public default boolean setTypeReference(TypedElement te, TypeReference tRef) { + te.setTypeReference(tRef); + return (tRef == null && te.getTypeReference() == null) || te.getTypeReference().equals(tRef); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IVoidInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IVoidInitialiser.java new file mode 100644 index 0000000000..d5d1f3b3a3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IVoidInitialiser.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Void; + +public interface IVoidInitialiser extends IPrimitiveTypeInitialiser { + @Override + public Void instantiate(); + +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/InferableTypeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/InferableTypeInitialiser.java new file mode 100644 index 0000000000..bbb6a942d8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/InferableTypeInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.InferableType; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class InferableTypeInitialiser extends AbstractInitialiserBase implements IInferableTypeInitialiser { + @Override + public IInferableTypeInitialiser newInitialiser() { + return new InferableTypeInitialiser(); + } + + @Override + public InferableType instantiate() { + return TypesFactory.eINSTANCE.createInferableType(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IntInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IntInitialiser.java new file mode 100644 index 0000000000..129df2ac9b --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/IntInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Int; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class IntInitialiser extends AbstractInitialiserBase implements IIntInitialiser { + @Override + public IIntInitialiser newInitialiser() { + return new IntInitialiser(); + } + + @Override + public Int instantiate() { + return TypesFactory.eINSTANCE.createInt(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/LongInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/LongInitialiser.java new file mode 100644 index 0000000000..1725712870 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/LongInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Long; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class LongInitialiser extends AbstractInitialiserBase implements ILongInitialiser { + @Override + public ILongInitialiser newInitialiser() { + return new LongInitialiser(); + } + + @Override + public Long instantiate() { + return TypesFactory.eINSTANCE.createLong(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/NamespaceClassifierReferenceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/NamespaceClassifierReferenceInitialiser.java new file mode 100644 index 0000000000..0bfacb3583 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/NamespaceClassifierReferenceInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.NamespaceClassifierReference; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class NamespaceClassifierReferenceInitialiser extends AbstractInitialiserBase + implements INamespaceClassifierReferenceInitialiser { + @Override + public INamespaceClassifierReferenceInitialiser newInitialiser() { + return new NamespaceClassifierReferenceInitialiser(); + } + + @Override + public NamespaceClassifierReference instantiate() { + return TypesFactory.eINSTANCE.createNamespaceClassifierReference(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ShortInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ShortInitialiser.java new file mode 100644 index 0000000000..d877da4470 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/ShortInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.Short; +import org.emftext.language.java.types.TypesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class ShortInitialiser extends AbstractInitialiserBase implements IShortInitialiser { + @Override + public IShortInitialiser newInitialiser() { + return new ShortInitialiser(); + } + + @Override + public Short instantiate() { + return TypesFactory.eINSTANCE.createShort(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/TypesInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/TypesInitialiserPackage.java new file mode 100644 index 0000000000..59c5691beb --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/TypesInitialiserPackage.java @@ -0,0 +1,27 @@ +package cipm.consistency.initialisers.jamopp.types; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class TypesInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new BooleanInitialiser(), new ByteInitialiser(), new CharInitialiser(), + new ClassifierReferenceInitialiser(), new DoubleInitialiser(), new FloatInitialiser(), + new InferableTypeInitialiser(), new IntInitialiser(), new LongInitialiser(), + new NamespaceClassifierReferenceInitialiser(), new ShortInitialiser(), new VoidInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IBooleanInitialiser.class, IByteInitialiser.class, ICharInitialiser.class, + IClassifierReferenceInitialiser.class, IDoubleInitialiser.class, IFloatInitialiser.class, + IInferableTypeInitialiser.class, IIntInitialiser.class, ILongInitialiser.class, + INamespaceClassifierReferenceInitialiser.class, IPrimitiveTypeInitialiser.class, + IShortInitialiser.class, ITypedElementExtensionInitialiser.class, ITypedElementInitialiser.class, + ITypeInitialiser.class, ITypeReferenceInitialiser.class, IVoidInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/VoidInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/VoidInitialiser.java new file mode 100644 index 0000000000..fd67f75983 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/VoidInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.types; + +import org.emftext.language.java.types.TypesFactory; +import org.emftext.language.java.types.Void; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class VoidInitialiser extends AbstractInitialiserBase implements IVoidInitialiser { + @Override + public IVoidInitialiser newInitialiser() { + return new VoidInitialiser(); + } + + @Override + public Void instantiate() { + return TypesFactory.eINSTANCE.createVoid(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/package-info.java new file mode 100644 index 0000000000..5ca4bd3583 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/types/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.types}. + */ +package cipm.consistency.initialisers.jamopp.types; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/UtilityTests.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/UtilityTests.java new file mode 100644 index 0000000000..7ef4411b58 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/UtilityTests.java @@ -0,0 +1,202 @@ +package cipm.consistency.initialisers.jamopp.utiltests; + +import java.io.File; +import java.nio.file.Paths; +import java.util.Collection; +import java.util.List; + +import org.apache.log4j.ConsoleAppender; +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import cipm.consistency.initialisers.IInitialiserPackage; +import cipm.consistency.initialisers.jamopp.IJaMoPPUtilityTest; +import cipm.consistency.initialisers.jamopp.JaMoPPInitialiserPackage; + +/** + * A test class, whose tests can be used to make sure no initialiser interfaces + * or concrete initialisers are missing. + * + * @author Alp Torac Genc + */ +public class UtilityTests implements IJaMoPPUtilityTest { + private static final Logger LOGGER = Logger.getLogger(UtilityTests.class); + /** + * Points at the parent package. Used by discovering methods in this class. + */ + private static final File root = new File(Paths + .get(new File("").toPath().toString(), "src", UtilityTests.class.getPackageName() + .substring(0, UtilityTests.class.getPackageName().lastIndexOf(".")).replace(".", File.separator)) + .toAbsolutePath().toUri()); + + @BeforeEach + public void setUp() { + Logger logger = this.getLogger(); + logger.setLevel(Level.ALL); + + logger = Logger.getRootLogger(); + logger.removeAllAppenders(); + ConsoleAppender ap = new ConsoleAppender(new PatternLayout("[%d{DATE}] %-5p: %c - %m%n"), + ConsoleAppender.SYSTEM_OUT); + logger.addAppender(ap); + } + + public Logger getLogger() { + return LOGGER; + } + + @Override + public IInitialiserPackage getUsedInitialiserPackage() { + return new JaMoPPInitialiserPackage(); + } + + private Collection getAllFiles() { + return this.getAllFiles(root); + } + + /** + * The expected amount of concrete initialiser types.
+ *
+ * Note: Must be adapted, if new initialisers are added, which have concrete + * implementations. + */ + private int getExpectedConcreteInitialiserCount() { + return 181; + } + + /** + * The expected amount of initialiser types (abstract or concrete).
+ *
+ * Note: Must be adapted, if new initialisers are added. + */ + private int getExpectedInitialiserCount() { + return 274; + } + + /** + * Prints all interface types from {@link #getAllPossibleJaMoPPEObjectTypes()}. + *
+ *
+ * Does not test anything, just prints the said types. + */ + @Test + public void printFullHierarchy() { + var hSet = this.getAllPossibleJaMoPPEObjectTypes(); + this.getLogger().info(this.clsStreamToString(hSet.stream())); + } + + /** + * Checks if all necessary concrete initialisers can be accessed under the used + * initialiser package, which is used in initialiser tests.
+ *
+ * Prints the amount of accessible/registered initialiser types. The missing + * types can be found in the assertion message. + */ + @Test + public void testAllConcreteInitialisersRegistered() { + var clss = this.getAllConcreteInitialiserCandidates(); + Assertions.assertEquals(this.getExpectedConcreteInitialiserCount(), clss.size()); + var registeredInits = this.getAllInitialiserInstances(); + Assertions.assertEquals(this.getExpectedConcreteInitialiserCount(), registeredInits.size()); + + var matches = List.of( + clss.stream().filter((cls) -> registeredInits.stream().anyMatch((init) -> init.isInitialiserFor(cls))) + .toArray(Class[]::new)); + + this.getLogger().info(matches.size() + " out of " + clss.size() + " concrete initialisers are registered"); + + if (matches.size() != clss.size()) { + Assertions.fail("Concrete initialisers not registered: " + + this.clsStreamToString(clss.stream().filter((cls) -> !matches.contains(cls)))); + } + } + + /** + * Checks if all necessary initialiser interface types can be accessed under the + * used initialiser package, which is used in initialiser tests.
+ *
+ * Prints the amount of accessible/registered initialiser interface types. The + * missing types can be found in the assertion message. + */ + @Test + public void testAllInitialiserInterfacesRegistered() { + var clss = this.getAllInitialiserCandidates(); + Assertions.assertEquals(this.getExpectedInitialiserCount(), clss.size()); + var registeredInits = this.getAllInitialiserInterfaceTypes(); + Assertions.assertEquals(this.getExpectedInitialiserCount(), registeredInits.size()); + + var matches = List.of(clss.stream() + .filter((cls) -> registeredInits.stream() + .anyMatch((init) -> this.getInitialiserInterfaceName(cls).equals(init.getSimpleName()))) + .toArray(Class[]::new)); + + this.getLogger().info(matches.size() + " out of " + clss.size() + " initialiser interfaces are registered"); + + if (matches.size() != clss.size()) { + Assertions.fail("Initialiser interfaces not registered: " + + this.clsStreamToString(clss.stream().filter((cls) -> !matches.contains(cls)))); + } + } + + /** + * Checks if all concrete initialisers (SomethingInitialiser.java) files are + * implemented and present under {@link #root}.
+ *
+ * Prints the number of present concrete initialiser files. Information on the + * missing files can be found in the assertion message.
+ *
+ * Only checks whether the said files are present, does not inspect their + * content at all. + */ + @Test + public void testAllConcreteInitialisersPresent() { + var intfcs = this.getAllConcreteInitialiserCandidates(); + Assertions.assertEquals(this.getExpectedConcreteInitialiserCount(), intfcs.size()); + var files = this.getAllFiles(); + + var matches = List.of(intfcs.stream().filter( + (ifc) -> files.stream().anyMatch((f) -> this.fileNameEquals(f, this.getConcreteInitialiserName(ifc)))) + .toArray(Class[]::new)); + var count = matches.size(); + + this.getLogger().info(count + " out of " + intfcs.size() + " concrete initialiser files are present"); + + if (count != intfcs.size()) { + Assertions.fail("Concrete initialiser files missing for: " + + this.clsStreamToString(intfcs.stream().filter((ifc) -> !matches.contains(ifc)))); + } + } + + /** + * Checks if all interface initialisers (ISomethingInitialiser.java) files are + * implemented and present under {@link #root}.
+ *
+ * Prints the number of present initialiser files. Information on the missing + * files can be found in the assertion message.
+ *
+ * Only checks whether the said files are present, does not inspect their + * content at all. + */ + @Test + public void testAllInitialiserInterfacesPresent() { + var intfcs = this.getAllInitialiserCandidates(); + Assertions.assertEquals(this.getExpectedInitialiserCount(), intfcs.size()); + var files = this.getAllFiles(); + + var matches = List.of(intfcs.stream().filter( + (ifc) -> files.stream().anyMatch((f) -> this.fileNameEquals(f, this.getInitialiserInterfaceName(ifc)))) + .toArray(Class[]::new)); + var count = matches.size(); + + this.getLogger().info(count + " out of " + intfcs.size() + " initialiser files are present"); + + if (count != intfcs.size()) { + Assertions.fail("Initialiser files missing for: " + + this.clsStreamToString(intfcs.stream().filter((ifc) -> !matches.contains(ifc)))); + } + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/package-info.java new file mode 100644 index 0000000000..14b60e3558 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/utiltests/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains tests that check whether {@link IInitialiser}s are setup properly, + * i.e. if their source files are present and they can be accessed. + */ +package cipm.consistency.initialisers.jamopp.utiltests; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/AdditionalLocalVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/AdditionalLocalVariableInitialiser.java new file mode 100644 index 0000000000..76a66bf48c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/AdditionalLocalVariableInitialiser.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.jamopp.variables; + +import org.emftext.language.java.variables.VariablesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +import org.emftext.language.java.variables.AdditionalLocalVariable; + +public class AdditionalLocalVariableInitialiser extends AbstractInitialiserBase + implements IAdditionalLocalVariableInitialiser { + @Override + public AdditionalLocalVariable instantiate() { + return VariablesFactory.eINSTANCE.createAdditionalLocalVariable(); + } + + @Override + public IAdditionalLocalVariableInitialiser newInitialiser() { + return new AdditionalLocalVariableInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IAdditionalLocalVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IAdditionalLocalVariableInitialiser.java new file mode 100644 index 0000000000..13e776a491 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IAdditionalLocalVariableInitialiser.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.jamopp.variables; + +import org.emftext.language.java.variables.AdditionalLocalVariable; + +import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser; +import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +public interface IAdditionalLocalVariableInitialiser + extends IInitializableInitialiser, IReferenceableElementInitialiser, ITypedElementInitialiser { + @Override + public AdditionalLocalVariable instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/ILocalVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/ILocalVariableInitialiser.java new file mode 100644 index 0000000000..4120c4cd3e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/ILocalVariableInitialiser.java @@ -0,0 +1,25 @@ +package cipm.consistency.initialisers.jamopp.variables; + +import org.emftext.language.java.variables.AdditionalLocalVariable; +import org.emftext.language.java.variables.LocalVariable; + +import cipm.consistency.initialisers.jamopp.instantiations.IInitializableInitialiser; +import cipm.consistency.initialisers.jamopp.modifiers.IAnnotableAndModifiableInitialiser; + +public interface ILocalVariableInitialiser + extends IAnnotableAndModifiableInitialiser, IInitializableInitialiser, IVariableInitialiser { + @Override + public LocalVariable instantiate(); + + public default boolean addAdditionalLocalVariable(LocalVariable lv, AdditionalLocalVariable alv) { + if (alv != null) { + lv.getAdditionalLocalVariables().add(alv); + return lv.getAdditionalLocalVariables().contains(alv); + } + return true; + } + + public default boolean addAdditionalLocalVariables(LocalVariable lv, AdditionalLocalVariable[] alvs) { + return this.doMultipleModifications(lv, alvs, this::addAdditionalLocalVariable); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IResourceInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IResourceInitialiser.java new file mode 100644 index 0000000000..910b7b24f9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IResourceInitialiser.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.jamopp.variables; + +import org.emftext.language.java.variables.Resource; + +import cipm.consistency.initialisers.jamopp.commons.ICommentableInitialiser; + +public interface IResourceInitialiser extends ICommentableInitialiser { + @Override + public Resource instantiate(); + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IVariableInitialiser.java new file mode 100644 index 0000000000..6805d0b414 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/IVariableInitialiser.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.jamopp.variables; + +import org.emftext.language.java.variables.Variable; + +import cipm.consistency.initialisers.jamopp.generics.ITypeArgumentableInitialiser; +import cipm.consistency.initialisers.jamopp.references.IReferenceableElementInitialiser; +import cipm.consistency.initialisers.jamopp.types.ITypedElementInitialiser; + +/** + * An interface meant for {@link IInitialiser} implementors that are supposed to + * create {@link Variable} instances.
+ *
+ * Note: "createMethodCall..." methods in {@link Variable} do not modify + * {@link Variable} instances. + * + * @author Alp Torac Genc + */ +public interface IVariableInitialiser + extends IReferenceableElementInitialiser, ITypeArgumentableInitialiser, ITypedElementInitialiser { + @Override + public Variable instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/LocalVariableInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/LocalVariableInitialiser.java new file mode 100644 index 0000000000..e878847187 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/LocalVariableInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.jamopp.variables; + +import org.emftext.language.java.variables.LocalVariable; +import org.emftext.language.java.variables.VariablesFactory; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +public class LocalVariableInitialiser extends AbstractInitialiserBase implements ILocalVariableInitialiser { + @Override + public LocalVariable instantiate() { + return VariablesFactory.eINSTANCE.createLocalVariable(); + } + + @Override + public ILocalVariableInitialiser newInitialiser() { + return new LocalVariableInitialiser(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/VariablesInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/VariablesInitialiserPackage.java new file mode 100644 index 0000000000..0081e1b4d1 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/VariablesInitialiserPackage.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.jamopp.variables; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +public class VariablesInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol( + new IInitialiser[] { new AdditionalLocalVariableInitialiser(), new LocalVariableInitialiser(), }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { IAdditionalLocalVariableInitialiser.class, ILocalVariableInitialiser.class, + IResourceInitialiser.class, IVariableInitialiser.class, }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/package-info.java new file mode 100644 index 0000000000..63280c4546 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/jamopp/variables/package-info.java @@ -0,0 +1,5 @@ +/** + * Contains {@link IInitialiser} implementations for + * {@link org.emftext.language.java.variables}. + */ +package cipm.consistency.initialisers.jamopp.variables; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/package-info.java new file mode 100644 index 0000000000..6904c86108 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/package-info.java @@ -0,0 +1,30 @@ +/** + * Contains interfaces for initialiser implementations (such as + * {@link cipm.consistency.initialisers.IInitialiser} as well as for classes + * that can be used to adapt them. Also has an interface + * {@link cipm.consistency.initialisers.IInitialiserPackage}, which can be + * implemented to access initialiser types and instances easier. + * {@link cipm.consistency.initialisers.IInitialiserPackage} defines a nestable + * structure that enables finding the proper initialisers as well as certain + * groups of initialisers. It is recommended to implement that interface for + * each package containing initialisers and to add all initialisers to that + * implementation.
+ *
+ * Initialisers are classes/interfaces, whose purpose is to instantiate, + * initialise and modify certain objects. Implementing initialisers similar to + * their designated objects, may help making the initialisers more flexible and + * can ease adding further initialisers later on. It is strongly recommended to + * define atomic modification methods in initialisers and re-using them, rather + * than defining complex modification methods.
+ *
+ * In order to make parameterised tests using initialisers as parameters + * possible, one can use + * {@link cipm.consistency.initialisers.IInitialiserAdapterStrategy} to adapt + * certain initialisers. This way, they can be used in such tests without + * throwing exceptions and without the need of type checking. The most common + * cause of such exceptions is initialisers not setting the required attributes + * while instantiating objects. In such cases, the said adapters can be used to + * have them set those attributes, so that using the instances in tests do not + * throw exceptions, due to their essential attributes not being set. + */ +package cipm.consistency.initialisers; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/IInitialiserTests.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/IInitialiserTests.java new file mode 100644 index 0000000000..17c822ab98 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/IInitialiserTests.java @@ -0,0 +1,353 @@ +package cipm.consistency.initialisers.tests; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.DummyModifiableObjInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.IDummyInitialiserWithoutMethods; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjFour; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjFourInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjOne; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjOneInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjThree; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjThreeInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjTwo; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.DummyObjTwoInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.IDummyObjFourInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.IDummyObjOneInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.IDummyObjThreeInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.flathierarchy.IDummyObjTwoInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyAlternateInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyNonTerminalObj; +import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyNonTerminalObjInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyTerminalObj; +import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyTerminalObjInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyTopLevelObj; +import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.DummyTopLevelObjInitialiser; +import cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy.IDummyAlternateInitialiser; + +/** + * Contains tests for (static/default) methods implemented in + * {@link IInitialiser} + * + * @author Alp Torac Genc + */ +public class IInitialiserTests { + /** + * Ensures that + * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)} + * throws null pointer exceptions if the object to be modified is null. + */ + @Test + public void test_doMultipleModifications_NullObject() { + var init = new DummyModifiableObjInitialiser(); + Assertions.assertThrows(NullPointerException.class, () -> { + init.addAttrs(null, new Object[] { 1 }); + }); + } + + /** + * Check whether + * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)} + * throws exceptions, if null is passed as array of modification parameters. + * Also ensures that true is returned. + */ + @Test + public void test_doMultipleModifications_NullModificationParams() { + var init = new DummyModifiableObjInitialiser(); + Assertions.assertTrue(init.addAttrs(init.instantiate(), null)); + } + + /** + * Check whether + * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)} + * throws exceptions, if array of modification parameters is empty. Also ensures + * that true is returned. + */ + @Test + public void test_doMultipleModifications_EmptyModificationParams() { + var init = new DummyModifiableObjInitialiser(); + Assertions.assertTrue(init.addAttrs(init.instantiate(), new Object[] {})); + } + + /** + * Check whether + * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)} + * works for 1 proper modification parameter (passed via an array of size 1). + */ + @Test + public void test_doMultipleModifications_SingleModification_Success() { + var init = new DummyModifiableObjInitialiser(); + Assertions.assertTrue(init.addAttrs(init.instantiate(), new Object[] { 1 })); + } + + /** + * Check whether + * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)} + * works for 1 inappropriate modification parameter (passed via an array of size + * 1). + */ + @Test + public void test_doMultipleModifications_SingleModification_Failure() { + var init = new DummyModifiableObjInitialiser(); + Assertions.assertFalse(init.addAttrs(init.instantiate(), new Object[] { null })); + } + + /** + * Check whether + * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)} + * works for its intended use case (i.e. summarising multiple modification + * method calls) with proper parameters. + */ + @Test + public void test_doMultipleModifications_MultipleModifications_Success() { + var init = new DummyModifiableObjInitialiser(); + Assertions.assertTrue(init.addAttrs(init.instantiate(), new Object[] { 1, 2, 3 })); + } + + /** + * Check whether + * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)} + * successfully performs modifications till it fails. + */ + @Test + public void test_doMultipleModifications_MultipleModifications_LateFailure() { + var init = new DummyModifiableObjInitialiser(); + var obj = init.instantiate(); + var attr1 = Integer.valueOf(1); + var attr2 = Integer.valueOf(2); + + Assertions.assertFalse(init.addAttrs(obj, new Object[] { attr1, attr2, attr1 })); + var attrs = obj.getAttrs(); + Assertions.assertTrue(attrs.contains(attr1)); + Assertions.assertTrue(attrs.contains(attr2)); + Assertions.assertEquals(2, attrs.size()); + } + + /** + * Check whether + * {@link IInitialiser#doMultipleModifications(Object, Object[], java.util.function.BiFunction)} + * fails early, if a modification fails, which is neither performed at the start + * nor at the end. + */ + @Test + public void test_doMultipleModifications_MultipleModifications_FailEarly() { + var init = new DummyModifiableObjInitialiser(); + var obj = init.instantiate(); + var attr1 = Integer.valueOf(1); + var attr2 = Integer.valueOf(2); + + Assertions.assertFalse(init.addAttrs(obj, new Object[] { attr1, attr1, attr2 })); + var attrs = obj.getAttrs(); + Assertions.assertTrue(attrs.contains(attr1)); + Assertions.assertFalse(attrs.contains(attr2)); + Assertions.assertEquals(1, attrs.size()); + } + + /** + * Checks whether {@link IInitialiser#declaresModificationMethods(Class)} + * circumvents null pointer exceptions. + */ + @Test + public void test_DeclaresModificationMethods_NullClass() { + Class cls = null; + Assertions.assertFalse(IInitialiser.declaresModificationMethods(cls)); + } + + /** + * Checks whether {@link IInitialiser#declaresModificationMethods(IInitialiser)} + * circumvents null pointer exceptions. + */ + @Test + public void test_DeclaresModificationMethods_NullInitialiser() { + IInitialiser init = null; + Assertions.assertFalse(IInitialiser.declaresModificationMethods(init)); + } + + /** + * Check whether a modification method implemented only in the interface of an + * initialiser can be found. + */ + @Test + public void test_DeclaresModificationMethods_InInterface() { + var init = new DummyObjOneInitialiser(); + Assertions.assertFalse(init.declaresModificationMethods()); + Assertions.assertFalse(IInitialiser.declaresModificationMethods(init)); + Assertions.assertTrue(IInitialiser.declaresModificationMethods(IDummyObjOneInitialiser.class)); + } + + /** + * Check whether a modification method implemented only in the concrete class of + * an initialiser can be found. + */ + @Test + public void test_DeclaresModificationMethods_InClass() { + var init = new DummyObjTwoInitialiser(); + Assertions.assertTrue(init.declaresModificationMethods()); + Assertions.assertTrue(IInitialiser.declaresModificationMethods(init)); + Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyObjTwoInitialiser.class)); + } + + /** + * Check whether initialiser types with neither direct nor overridden methods + * cause exceptions. + */ + @Test + public void test_DeclaresModificationMethods_NoMethods() { + Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyInitialiserWithoutMethods.class)); + } + + /** + * Check whether initialisers with only an overridden instantiate() method are + * detected as initialisers without modification methods. + */ + @Test + public void test_DeclaresModificationMethods_NoAdditionalMethods() { + var init = new DummyObjThreeInitialiser(); + Assertions.assertFalse(init.declaresModificationMethods()); + Assertions.assertFalse(IInitialiser.declaresModificationMethods(init)); + Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyObjThreeInitialiser.class)); + } + + /** + * Check whether initialisers with no additional modification methods can be + * detected, even if they do have other methods. + */ + @Test + public void test_DeclaresModificationMethods_NoModificationMethods() { + var init = new DummyObjFourInitialiser(); + Assertions.assertFalse(init.declaresModificationMethods()); + Assertions.assertFalse(IInitialiser.declaresModificationMethods(init)); + Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyObjFourInitialiser.class)); + } + + /** + * Check whether initialisers with no direct modification methods are detected, + * i.e. initialisers that do inherit modification methods yet do not implement + * any in their own body. + */ + @Test + public void test_DeclaresModificationMethods_NoDirectModificationMethods() { + var init = new DummyAlternateInitialiser(); + Assertions.assertFalse(init.declaresModificationMethods()); + Assertions.assertFalse(IInitialiser.declaresModificationMethods(init)); + Assertions.assertFalse(IInitialiser.declaresModificationMethods(IDummyAlternateInitialiser.class)); + } + + /** + * Check whether initialiser types with neither direct nor overridden methods + * cause exceptions. + */ + @Test + public void test_IsInitialiserFor_NoMethods() { + Assertions.assertFalse( + IInitialiser.isInitialiserFor(IDummyInitialiserWithoutMethods.class, DummyNonTerminalObj.class)); + Assertions.assertFalse(IInitialiser.isInitialiserFor(IDummyInitialiserWithoutMethods.class, null)); + } + + /** + * Check whether an initialiser, whose name does not contain the name of the + * object class it is supposed to instantiate, is still detected as its + * initialiser, if it has a proper instantiation method. + */ + @Test + public void test_IsInitialiserFor_NameMismatch() { + Assertions.assertTrue(new DummyAlternateInitialiser().isInitialiserFor(DummyNonTerminalObj.class)); + Assertions + .assertTrue(IInitialiser.isInitialiserFor(IDummyAlternateInitialiser.class, DummyNonTerminalObj.class)); + } + + /** + * Checks whether {@link IInitialiser#isInitialiserFor(Class, Class)} + * circumvents null pointer exceptions, which could be caused by the first + * parameter being null. + */ + @Test + public void test_IsInitialiserFor_NullInitialiserClass() { + Class initCls = null; + Assertions.assertFalse(IInitialiser.isInitialiserFor(initCls, DummyNonTerminalObj.class)); + } + + /** + * Checks whether {@link IInitialiser#isInitialiserFor(IInitialiser, Class)} + * circumvents null pointer exceptions, which could be caused by the first + * parameter being null. + */ + @Test + public void test_IsInitialiserFor_NullInitialiser() { + IInitialiser init = null; + Assertions.assertFalse(IInitialiser.isInitialiserFor(init, DummyNonTerminalObj.class)); + } + + /** + * Checks whether isInitialiserFor methods circumvent null pointer exceptions, + * which could be caused by the class object parameter being null. + */ + @Test + public void test_IsInitialiserFor_NullClass() { + Class cls = null; + + Assertions.assertFalse(IInitialiser.isInitialiserFor(new DummyObjOneInitialiser(), cls)); + Assertions.assertFalse(IInitialiser.isInitialiserFor(DummyObjOneInitialiser.class, cls)); + Assertions.assertFalse(new DummyObjOneInitialiser().isInitialiserFor(cls)); + } + + /** + * Check whether initialisers that are meant to instantiate certain objects can + * be detected, where the said objects (and their initialisers) have no type + * hierarchy. + */ + @SuppressWarnings("unchecked") + @Test + public void test_IsInitialiserFor_NoTypeHierarchy() { + var objClss = new Class[] { DummyObjOne.class, DummyObjTwo.class, DummyObjThree.class, DummyObjFour.class }; + var initInterfaceClss = new Class[] { IDummyObjOneInitialiser.class, IDummyObjTwoInitialiser.class, + IDummyObjThreeInitialiser.class, IDummyObjFourInitialiser.class }; + var initClss = new Class[] { DummyObjOneInitialiser.class, DummyObjTwoInitialiser.class, + DummyObjThreeInitialiser.class, DummyObjFourInitialiser.class }; + var inits = new IInitialiser[] { new DummyObjOneInitialiser(), new DummyObjTwoInitialiser(), + new DummyObjThreeInitialiser(), new DummyObjFourInitialiser() }; + + // Test over all the classes given above, in order to make sure that + // other methods implemented in the classes/interfaces do not cause issues + for (int i = 0; i < objClss.length; i++) { + var cInitInterfaceCls = initInterfaceClss[i]; + var cInitClss = initClss[i]; + var cInit = inits[i]; + + for (int j = 0; j < objClss.length; j++) { + var cObjCls = objClss[j]; + + Assertions.assertEquals(i == j, cInit.isInitialiserFor(cObjCls)); + Assertions.assertEquals(i == j, IInitialiser.isInitialiserFor(cInit, cObjCls)); + Assertions.assertEquals(i == j, IInitialiser.isInitialiserFor(cInitClss, cObjCls)); + Assertions.assertEquals(i == j, IInitialiser.isInitialiserFor(cInitInterfaceCls, cObjCls)); + } + } + } + + /** + * Check whether initialisers within a type hierarchy are correctly matched to + * the object class they are supposed to instantiate. + */ + @Test + public void test_IsInitialiserFor_WithTypeHierarchy() { + var tlInit = new DummyTopLevelObjInitialiser(); + var ntInit = new DummyNonTerminalObjInitialiser(); + var tInit = new DummyTerminalObjInitialiser(); + + Assertions.assertFalse(tlInit.isInitialiserFor(DummyTerminalObj.class)); + Assertions.assertFalse(tlInit.isInitialiserFor(DummyNonTerminalObj.class)); + Assertions.assertTrue(tlInit.isInitialiserFor(DummyTopLevelObj.class)); + + Assertions.assertFalse(ntInit.isInitialiserFor(DummyTerminalObj.class)); + Assertions.assertTrue(ntInit.isInitialiserFor(DummyNonTerminalObj.class)); + Assertions.assertFalse(ntInit.isInitialiserFor(DummyTopLevelObj.class)); + + Assertions.assertTrue(tInit.isInitialiserFor(DummyTerminalObj.class)); + Assertions.assertFalse(tInit.isInitialiserFor(DummyNonTerminalObj.class)); + Assertions.assertFalse(tInit.isInitialiserFor(DummyTopLevelObj.class)); + + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserBaseTests.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserBaseTests.java new file mode 100644 index 0000000000..d7d68d6135 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserBaseTests.java @@ -0,0 +1,446 @@ +package cipm.consistency.initialisers.tests; + +import java.util.ArrayList; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; +import cipm.consistency.initialisers.IInitialiserBase; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserA; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserC; +import cipm.consistency.initialisers.tests.dummy.packages.ObjAInitStrat; +import cipm.consistency.initialisers.tests.dummy.packages.ObjCFirstInitStepStrat; +import cipm.consistency.initialisers.tests.dummy.packages.ObjCSecondInitStepStrat; + +/** + * Contains tests for {@link IInitialiserBase} over dummy elements, with a focus + * on the interaction with {@link IInitialiserAdapterStrategy}. + * + * @author Alp Torac Genc + */ +public class InitialiserBaseTests { + /** + * Shortcut for {@code assertAdapted(init, true)} + */ + private void assertAdapted(IInitialiserBase init) { + this.assertAdapted(init, true); + } + + /** + * Assert that the given initialiser is being adapted by at least one adaptation + * strategy. + */ + private void assertAdapted(IInitialiserBase init, boolean isAdapted) { + Assertions.assertEquals(init.getAdaptingStrategyCount(), init.getAdaptingStrategies().size()); + Assertions.assertEquals(isAdapted, init.isAdapted()); + Assertions.assertEquals(isAdapted, init.getAdaptingStrategyCount() > 0); + } + + /** + * Assert that all given adaptation strategies are adapting the given + * initialiser. + */ + private void assertAdaptedBy(IInitialiserAdapterStrategy[] strats, IInitialiserBase init) { + if (strats != null && strats.length > 0) { + var adaptingStrats = init.getAdaptingStrategies(); + Assertions.assertEquals(strats.length, adaptingStrats.size()); + this.assertAdapted(init); + for (var strat : strats) { + Assertions.assertTrue(adaptingStrats.contains(strat)); + } + } else { + this.assertAdapted(init, false); + } + } + + /** + * Add the given adaptation strategy to the given initialiser and make the + * necessary assertions before and after insertion. + */ + private void addAndAssertAdded(IInitialiserAdapterStrategy strat, IInitialiserBase init) { + var priorStrats = init.getAdaptingStrategies(); + Assertions.assertFalse(priorStrats.contains(strat)); + + var allStrats = new ArrayList(); + allStrats.addAll(priorStrats); + this.assertAdaptedBy(allStrats.toArray(IInitialiserAdapterStrategy[]::new), init); + + allStrats.add(strat); + init.addAdaptingStrategy(strat); + this.assertAdaptedBy(allStrats.toArray(IInitialiserAdapterStrategy[]::new), init); + + Assertions.assertEquals(priorStrats.size() + 1, init.getAdaptingStrategyCount()); + } + + /** + * Test adding a non-empty array of adaptation strategies to an initialiser + * during its construction. + */ + @Test + public void test_AddStrategiesToInitAtConstruction() { + var stratOne = new ObjCFirstInitStepStrat(); + var stratTwo = new ObjCSecondInitStepStrat(); + var stratArr = new IInitialiserAdapterStrategy[] { stratOne, stratTwo }; + + var init = new DummyInitialiserC(stratArr); + + this.assertAdaptedBy(stratArr, init); + } + + /** + * Test adding an empty array of adaptation strategies to an initialiser during + * its construction. + */ + @Test + public void test_AddStrategiesToInitAtConstruction_EmptyArray() { + var stratArr = new IInitialiserAdapterStrategy[] {}; + + var init = new DummyInitialiserC(stratArr); + + this.assertAdaptedBy(stratArr, init); + } + + /** + * Test adding a null array of adaptation strategies to an initialiser during + * its construction. + */ + @Test + public void test_AddStrategiesToInitAtConstruction_NullArray() { + var init = new DummyInitialiserC(null); + this.assertAdapted(init, false); + } + + /** + * Test adding adaptation strategies to an initialiser. Strategies are added one + * at a time. + */ + @Test + public void test_AddStrategy_OneAtATime() { + var init = new DummyInitialiserA(); + + this.assertAdapted(init, false); + + var stratOne = new ObjAInitStrat(); + init.addAdaptingStrategy(stratOne); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne }, init); + + var stratTwo = new ObjAInitStrat(); + init.addAdaptingStrategy(stratTwo); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init); + } + + /** + * Test adding adaptation strategies to an initialiser. A strategy array is + * added to the initialiser. + */ + @Test + public void test_AddStrategy_StrategyArray() { + var init = new DummyInitialiserA(); + this.assertAdapted(init, false); + + var stratOne = new ObjAInitStrat(); + var stratTwo = new ObjAInitStrat(); + var stratArr = new IInitialiserAdapterStrategy[] { stratOne, stratTwo }; + + init.addAdaptingStrategies(stratArr); + this.assertAdaptedBy(stratArr, init); + } + + /** + * Test adding adaptation strategies to an initialiser. A strategy array with a + * null element is added to the initialiser. + */ + @Test + public void test_AddStrategy_StrategyArrayWithNull() { + var init = new DummyInitialiserA(); + this.assertAdapted(init, false); + + var stratOne = new ObjAInitStrat(); + var stratTwo = new ObjAInitStrat(); + var stratArr = new IInitialiserAdapterStrategy[] { stratOne, null, stratTwo }; + + init.addAdaptingStrategies(stratArr); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init); + } + + /** + * Test adding an empty array of adaptation strategies to an initialiser. + */ + @Test + public void test_AddStrategy_EmptyArray() { + var init = new DummyInitialiserA(); + this.assertAdapted(init, false); + + var stratArr = new IInitialiserAdapterStrategy[] {}; + + init.addAdaptingStrategies(stratArr); + this.assertAdapted(init, false); + } + + /** + * Test adding a null array (of adaptation strategies) to an initialiser. + */ + @Test + public void test_AddStrategy_NullArray() { + var init = new DummyInitialiserA(); + this.assertAdapted(init, false); + + init.addAdaptingStrategies(null); + this.assertAdapted(init, false); + } + + /** + * Test removing (existing) adaptation strategies from an initialiser. + */ + @Test + public void test_RemoveAdapterStrategy() { + var init = new DummyInitialiserA(); + var stratOne = new ObjAInitStrat(); + var stratTwo = new ObjAInitStrat(); + init.addAdaptingStrategy(stratOne); + init.addAdaptingStrategy(stratTwo); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init); + + init.removeAdaptingStrategy(stratOne); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratTwo }, init); + + init.removeAdaptingStrategy(stratTwo); + this.assertAdaptedBy(null, init); + } + + /** + * Test removing a non-existent adaptation strategy from an initialiser. + */ + @Test + public void test_RemoveAdapterStrategy_NonExistent() { + var init = new DummyInitialiserA(); + var strat = new ObjAInitStrat(); + + this.assertAdapted(init, false); + init.removeAdaptingStrategy(strat); + this.assertAdapted(init, false); + } + + /** + * Test removing a non-existent adaptation strategy from an initialiser. + */ + @Test + public void test_RemoveAdapterStrategy_NullCheck() { + var init = new DummyInitialiserA(); + + this.assertAdapted(init, false); + init.removeAdaptingStrategy(null); + this.assertAdapted(init, false); + } + + /** + * Test removing an existing adaptation strategy from an initialiser twice. + */ + @Test + public void test_RemoveAdapterStrategy_Twice() { + var init = new DummyInitialiserA(); + var stratOne = new ObjAInitStrat(); + var stratTwo = new ObjAInitStrat(); + init.addAdaptingStrategy(stratOne); + init.addAdaptingStrategy(stratTwo); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init); + + init.removeAdaptingStrategy(stratOne); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratTwo }, init); + var stratsAfterFirstRemoval = init.getAdaptingStrategies(); + + init.removeAdaptingStrategy(stratOne); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratTwo }, init); + + // Make sure that all other adapting initialisers are still there after the + // second removal attempt + Assertions.assertTrue(init.getAdaptingStrategies().containsAll(stratsAfterFirstRemoval)); + } + + /** + * Test cleaning all adaptation strategies from an initialiser, i.e. removing + * all such strategies at once. + */ + @Test + public void test_CleanAdapterStrategy() { + var init = new DummyInitialiserA(); + var stratOne = new ObjAInitStrat(); + var stratTwo = new ObjAInitStrat(); + init.addAdaptingStrategy(stratOne); + init.addAdaptingStrategy(stratTwo); + this.assertAdaptedBy(new IInitialiserAdapterStrategy[] { stratOne, stratTwo }, init); + + init.cleanAdaptingStrategy(); + this.assertAdapted(init, false); + } + + /** + * Test new initialiser creation with adapting strategies, where the original + * initialiser has no adapting strategies. + */ + @Test + public void test_NewInitialiserWithStrategy_NoStrategies() { + var init = new DummyInitialiserC(); + this.assertAdapted(init, false); + var newInit = init.newInitialiserWithStrategies(); + this.assertAdapted(newInit, false); + + Assertions.assertFalse(init == newInit); + } + + /** + * Test new initialiser creation with adapting strategies. + */ + @Test + public void test_NewInitialiserWithStrategy() { + var init = new DummyInitialiserC(); + var stratOne = new ObjCFirstInitStepStrat(); + var stratTwo = new ObjCSecondInitStepStrat(); + + this.addAndAssertAdded(stratOne, init); + this.addAndAssertAdded(stratTwo, init); + this.assertAdapted(init, true); + + var newInit = init.newInitialiserWithStrategies(); + this.assertAdapted(newInit, true); + + Assertions.assertFalse(init == newInit); + Assertions.assertFalse(newInit.getAdaptingStrategies().contains(stratOne)); + Assertions.assertFalse(newInit.getAdaptingStrategies().contains(stratTwo)); + } + + /** + * Test new initialiser creation without adapting strategies, even though the + * original initialiser has adapting strategies. + */ + @Test + public void test_NewInitialiser_WithStrategies() { + var init = new DummyInitialiserC(); + var stratOne = new ObjCFirstInitStepStrat(); + var stratTwo = new ObjCSecondInitStepStrat(); + + this.addAndAssertAdded(stratOne, init); + this.addAndAssertAdded(stratTwo, init); + this.assertAdapted(init, true); + + var newInit = init.newInitialiser(); + this.assertAdapted(newInit, false); + + Assertions.assertFalse(init == newInit); + } + + /** + * Test initialising an object generated from an initialiser without adapting + * it. + */ + @Test + public void test_Initialisation_WithoutStrategy() { + var init = new DummyInitialiserC(); + var obj = init.instantiate(); + this.assertAdapted(init, false); + // No initialisation steps to fail here, so true + Assertions.assertTrue(init.initialise(obj)); + + Assertions.assertFalse(obj.isInitialisationStepOneDone()); + Assertions.assertFalse(obj.isInitialisationStepTwoDone()); + } + + /** + * Test initialising an object generated from an initialiser without adapting it + * all the way. + */ + @Test + public void test_SingleInitialisation_PartialSuccess() { + var init = new DummyInitialiserC(); + var obj = init.instantiate(); + + this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init); + Assertions.assertTrue(init.initialise(obj)); + Assertions.assertTrue(obj.isInitialisationStepOneDone()); + Assertions.assertFalse(obj.isInitialisationStepTwoDone()); + } + + /** + * Test initialising an object generated from an initialiser with a failing + * adaptation strategy. + */ + @Test + public void test_SingleInitialisation_Failure() { + var init = new DummyInitialiserC(); + var obj = init.instantiate(); + + this.addAndAssertAdded(new ObjCFirstInitStepStrat(false), init); + Assertions.assertFalse(init.initialise(obj)); + Assertions.assertFalse(obj.isInitialisationStepOneDone()); + Assertions.assertFalse(obj.isInitialisationStepTwoDone()); + } + + /** + * Test initialising an object generated from an adapted initialiser, where the + * first adaptation strategy succeeds but the second one fails. + */ + @Test + public void test_SingleInitialisation_LateConflict() { + var init = new DummyInitialiserC(); + var obj = init.instantiate(); + + this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init); + this.addAndAssertAdded(new ObjCSecondInitStepStrat(false), init); + Assertions.assertFalse(init.initialise(obj)); + Assertions.assertTrue(obj.isInitialisationStepOneDone()); + Assertions.assertFalse(obj.isInitialisationStepTwoDone()); + } + + /** + * Test initialising an object generated from an adapted initialiser, where the + * first adaptation strategy fails and stops the second one from working, even + * though the second one would succeed. + */ + @Test + public void test_SingleInitialisation_FailEarlyAtConflict() { + var init = new DummyInitialiserC(); + var obj = init.instantiate(); + + this.addAndAssertAdded(new ObjCFirstInitStepStrat(false), init); + this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init); + Assertions.assertFalse(init.initialise(obj)); + Assertions.assertFalse(obj.isInitialisationStepOneDone()); + Assertions.assertFalse(obj.isInitialisationStepTwoDone()); + } + + /** + * Test initialising an object generated from a properly adapted initialiser. + */ + @Test + public void test_SingleInitialisation_AtOnce() { + var init = new DummyInitialiserC(); + var obj = init.instantiate(); + + this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init); + this.addAndAssertAdded(new ObjCSecondInitStepStrat(), init); + Assertions.assertTrue(init.initialise(obj)); + Assertions.assertTrue(obj.isInitialisationStepOneDone()); + Assertions.assertTrue(obj.isInitialisationStepTwoDone()); + } + + /** + * Test initialising an object generated from an initialiser but add necessary + * adaptation strategies over multiple steps. + */ + @Test + public void test_MultipleInitialisations() { + var init = new DummyInitialiserC(); + var obj = init.instantiate(); + + this.addAndAssertAdded(new ObjCFirstInitStepStrat(), init); + Assertions.assertTrue(init.initialise(obj)); + Assertions.assertTrue(obj.isInitialisationStepOneDone()); + Assertions.assertFalse(obj.isInitialisationStepTwoDone()); + + this.addAndAssertAdded(new ObjCSecondInitStepStrat(), init); + Assertions.assertTrue(init.initialise(obj)); + Assertions.assertTrue(obj.isInitialisationStepOneDone()); + Assertions.assertTrue(obj.isInitialisationStepTwoDone()); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserPackageTests.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserPackageTests.java new file mode 100644 index 0000000000..8f8db7ac7f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/InitialiserPackageTests.java @@ -0,0 +1,199 @@ +package cipm.consistency.initialisers.tests; + +import java.util.Collection; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; +import cipm.consistency.initialisers.tests.dummy.packages.DummyAggregateInitialiserPackageOne; +import cipm.consistency.initialisers.tests.dummy.packages.DummyAggregateInitialiserPackageTwo; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserA; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserB; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserC; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserD; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserE; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserPackageA; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserPackageB; +import cipm.consistency.initialisers.tests.dummy.packages.DummyInitialiserPackageCD; +import cipm.consistency.initialisers.tests.dummy.packages.DummyObjA; +import cipm.consistency.initialisers.tests.dummy.packages.DummyObjB; +import cipm.consistency.initialisers.tests.dummy.packages.DummyObjC; +import cipm.consistency.initialisers.tests.dummy.packages.DummyObjD; +import cipm.consistency.initialisers.tests.dummy.packages.DummyObjE; +import cipm.consistency.initialisers.tests.dummy.packages.DummyTopLevelInitialiserPackage; + +/** + * Contains tests for {@link IInitialiserPackage} over dummy elements. The aim + * is to ensure that initialiser discovery works on certain package structures + * as intended.
+ *
+ * Check the used dummy elements to get more information on their structure. + * + * @author Alp Torac Genc + */ +public class InitialiserPackageTests { + /** + * Assert that the initialiser for objects of type cls is/is not reachable from + * pac. + */ + private void assertInitialiserReachableFrom(Class cls, IInitialiserPackage pac, boolean isReachable) { + var init = pac.getInitialiserInstanceFor(cls); + var initCls = pac.getInitialiserInterfaceTypeFor(cls); + + Assertions.assertEquals(isReachable, init != null); + Assertions.assertEquals(isReachable, initCls != null); + + if (isReachable) { + Assertions.assertTrue(init.isInitialiserFor(cls)); + Assertions.assertTrue(init.getClass().equals(initCls)); + } + } + + /** + * A variant of + * {@link #assertInitialiserReachableFrom(Class, IInitialiserPackage, boolean)}, + * where the final parameter is true. + */ + private void assertInitialiserReachableFrom(Class cls, IInitialiserPackage pac) { + this.assertInitialiserReachableFrom(cls, pac, true); + } + + /** + * Asserts either that the expected elements are in col or that col contains + * elements of same types as expected elements. + */ + private void assertContentEqualsByClass(T[] expectedElems, Collection col) { + if (expectedElems != null) { + Assertions.assertEquals(expectedElems.length, col.size()); + + for (var elem : expectedElems) { + Assertions.assertTrue( + col.contains(elem) || col.stream().anyMatch((e) -> e.getClass().equals(elem.getClass()))); + } + } else { + Assertions.assertEquals(0, col.size()); + } + } + + /** + * Asserts that all inits are present within initInsCol (as instance) and in + * initClsCol (as class object). + */ + @SuppressWarnings("unchecked") + private void assertInitialiserContentEquals(IInitialiser[] inits, Collection initInsCol, + Collection> initClsCol) { + this.assertContentEqualsByClass(inits, initInsCol); + this.assertContentEqualsByClass(initInsCol.stream().map((i) -> i.getClass()).toArray(Class[]::new), initClsCol); + } + + /** + * Asserts that direct contents (i.e. contents of pac that can be found without + * discovering its sub-packages) of pac are equal to inits. + */ + private void assertDirectPackageContentEquals(IInitialiser[] inits, IInitialiserPackage pac) { + this.assertInitialiserContentEquals(inits, pac.getInitialiserInstances(), pac.getInitialiserInterfaceTypes()); + } + + /** + * Asserts that all contents accessible from pac are equal to inits. + */ + private void assertAllPackageContentEquals(IInitialiser[] inits, IInitialiserPackage pac) { + this.assertInitialiserContentEquals(inits, pac.getAllInitialiserInstances(), + pac.getAllInitialiserInterfaceTypes()); + } + + @Test + public void test_TopLevelPackage_Content() { + var pac = new DummyTopLevelInitialiserPackage(); + + this.assertDirectPackageContentEquals(null, pac); + this.assertAllPackageContentEquals(new IInitialiser[] { new DummyInitialiserA(), new DummyInitialiserB(), + new DummyInitialiserC(), new DummyInitialiserD(), new DummyInitialiserE() }, pac); + } + + @Test + public void test_AggregateOnePackage_Content() { + var pac = new DummyAggregateInitialiserPackageOne(); + + this.assertDirectPackageContentEquals(new IInitialiser[] { new DummyInitialiserE() }, pac); + this.assertAllPackageContentEquals( + new IInitialiser[] { new DummyInitialiserE(), new DummyInitialiserA(), new DummyInitialiserB() }, pac); + } + + @Test + public void test_AggregateTwoPackage_Content() { + var pac = new DummyAggregateInitialiserPackageTwo(); + + this.assertDirectPackageContentEquals(null, pac); + this.assertAllPackageContentEquals(new IInitialiser[] { new DummyInitialiserC(), new DummyInitialiserD() }, + pac); + } + + @Test + public void test_TopLevelPackage_GetInitialiser() { + var pac = new DummyTopLevelInitialiserPackage(); + + this.assertInitialiserReachableFrom(DummyObjA.class, pac); + this.assertInitialiserReachableFrom(DummyObjB.class, pac); + this.assertInitialiserReachableFrom(DummyObjC.class, pac); + this.assertInitialiserReachableFrom(DummyObjD.class, pac); + this.assertInitialiserReachableFrom(DummyObjE.class, pac); + } + + @Test + public void test_AggregateOnePackage_GetInitialiser() { + var pac = new DummyAggregateInitialiserPackageOne(); + + this.assertInitialiserReachableFrom(DummyObjA.class, pac); + this.assertInitialiserReachableFrom(DummyObjB.class, pac); + this.assertInitialiserReachableFrom(DummyObjC.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjD.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjE.class, pac); + } + + @Test + public void test_AggregateTwoPackage_GetInitialiser() { + var pac = new DummyAggregateInitialiserPackageTwo(); + + this.assertInitialiserReachableFrom(DummyObjA.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjB.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjC.class, pac); + this.assertInitialiserReachableFrom(DummyObjD.class, pac); + this.assertInitialiserReachableFrom(DummyObjE.class, pac, false); + } + + @Test + public void test_PackageA_GetInitialiser() { + var pac = new DummyInitialiserPackageA(); + + this.assertInitialiserReachableFrom(DummyObjA.class, pac); + this.assertInitialiserReachableFrom(DummyObjB.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjC.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjD.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjE.class, pac, false); + } + + @Test + public void test_PackageB_GetInitialiser() { + var pac = new DummyInitialiserPackageB(); + + this.assertInitialiserReachableFrom(DummyObjA.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjB.class, pac); + this.assertInitialiserReachableFrom(DummyObjC.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjD.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjE.class, pac, false); + } + + @Test + public void test_PackageCD_GetInitialiser() { + var pac = new DummyInitialiserPackageCD(); + + this.assertInitialiserReachableFrom(DummyObjA.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjB.class, pac, false); + this.assertInitialiserReachableFrom(DummyObjC.class, pac); + this.assertInitialiserReachableFrom(DummyObjD.class, pac); + this.assertInitialiserReachableFrom(DummyObjE.class, pac, false); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/package-info.java new file mode 100644 index 0000000000..661d3e0147 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/package-info.java @@ -0,0 +1,5 @@ +/** + * Sub-packages contain various dummy elements designed to test interfaces and + * abstract classes used by initialisers. + */ +package cipm.consistency.initialisers.tests.dummy; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/AbstractDummyAdaptationStrategy.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/AbstractDummyAdaptationStrategy.java new file mode 100644 index 0000000000..6c4dc90bbf --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/AbstractDummyAdaptationStrategy.java @@ -0,0 +1,45 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; + +/** + * An abstract class for simple dummy implementations of + * {@link IInitialiserAdapterStrategy} that are used in tests. + * + * @author Alp Torac Genc + */ +public abstract class AbstractDummyAdaptationStrategy implements IInitialiserAdapterStrategy { + /** + * @see {@link #doesInitialiseSuccessfully()} + */ + private boolean initSuccessfully; + + /** + * A variant of {@link #AbstractDummyAdaptationStrategy(boolean)} with "true" as + * boolean parameter. + */ + public AbstractDummyAdaptationStrategy() { + this(true); + } + + /** + * Constructs an instance with the given parameter that determines the success + * of the adaptation strategy. + * + * @param initSuccessfully Whether + * {@link #apply(cipm.consistency.initialisers.IInitialiser, Object)} + * performs the initialisation as expected. + */ + public AbstractDummyAdaptationStrategy(boolean initSuccessfully) { + this.initSuccessfully = initSuccessfully; + } + + /** + * @return Whether + * {@link #apply(cipm.consistency.initialisers.IInitialiser, Object)} + * performs the initialisation as expected. + */ + public boolean doesInitialiseSuccessfully() { + return this.initSuccessfully; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyAggregateInitialiserPackageOne.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyAggregateInitialiserPackageOne.java new file mode 100644 index 0000000000..2781dd0714 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyAggregateInitialiserPackageOne.java @@ -0,0 +1,33 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +/** + * An {@link IInitialiserPackage} implementation, which simulates a package + * containing 1 initialiser implementation and 2 further sub-packages. + * + * @author Alp Torac Genc + * @see {@link cipm.consistency.initialisers.tests.dummy.packages} for the + * package layout. + */ +public class DummyAggregateInitialiserPackageOne implements IInitialiserPackage { + @Override + public Collection getSubPackages() { + return this + .initCol(new IInitialiserPackage[] { new DummyInitialiserPackageA(), new DummyInitialiserPackageB() }); + } + + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new DummyInitialiserE() }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { DummyInitialiserE.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyAggregateInitialiserPackageTwo.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyAggregateInitialiserPackageTwo.java new file mode 100644 index 0000000000..ac485de879 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyAggregateInitialiserPackageTwo.java @@ -0,0 +1,20 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiserPackage; + +/** + * An {@link IInitialiserPackage} implementation, which simulates a package + * containing 1 further sub-package and no initialiser implementations. + * + * @author Alp Torac Genc + * @see {@link cipm.consistency.initialisers.tests.dummy.packages} for the + * package layout. + */ +public class DummyAggregateInitialiserPackageTwo implements IInitialiserPackage { + @Override + public Collection getSubPackages() { + return this.initCol(new IInitialiserPackage[] { new DummyInitialiserPackageCD() }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserA.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserA.java new file mode 100644 index 0000000000..6fffd11731 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserA.java @@ -0,0 +1,22 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.AbstractInitialiserBase; + +/** + * A dummy initialiser for {@link DummyObjA}. + * + * @author Alp Torac Genc + * @see {@link ObjAInitStrat} + */ +public class DummyInitialiserA extends AbstractInitialiserBase { + + @Override + public DummyInitialiserA newInitialiser() { + return new DummyInitialiserA(); + } + + @Override + public DummyObjA instantiate() { + return new DummyObjA(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserB.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserB.java new file mode 100644 index 0000000000..b93bc8dadc --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserB.java @@ -0,0 +1,32 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy initialiser for {@link DummyObjB}, whose {@link #initialise(Object)} + * method always returns true. + * + * @author Alp Torac Genc + */ +public class DummyInitialiserB implements IInitialiser { + + @Override + public DummyInitialiserB newInitialiser() { + return new DummyInitialiserB(); + } + + @Override + public DummyObjB instantiate() { + return new DummyObjB(); + } + + /** + * {@inheritDoc}
+ *
+ * For this implementor, does nothing and returns true. + */ + @Override + public boolean initialise(Object obj) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserC.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserC.java new file mode 100644 index 0000000000..be3e1c8526 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserC.java @@ -0,0 +1,38 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.AbstractInitialiserBase; +import cipm.consistency.initialisers.IInitialiserAdapterStrategy; + +/** + * A dummy initialiser for {@link DummyObjC}. + * + * @author Alp Torac Genc + * @see {@link ObjCFirstInitStepStrat} + * @see {@link ObjCSecondInitStepStrat} + */ +public class DummyInitialiserC extends AbstractInitialiserBase { + + /** + * @see {@link AbstractInitialiserBase#AbstractInitialiserBase()} + */ + public DummyInitialiserC() { + super(); + } + + /** + * @see {@link AbstractInitialiserBase#AbstractInitialiserBase(IInitialiserAdapterStrategy[])} + */ + public DummyInitialiserC(IInitialiserAdapterStrategy[] adaptingInits) { + super(adaptingInits); + } + + @Override + public DummyInitialiserC newInitialiser() { + return new DummyInitialiserC(); + } + + @Override + public DummyObjC instantiate() { + return new DummyObjC(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserD.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserD.java new file mode 100644 index 0000000000..17535bdde9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserD.java @@ -0,0 +1,32 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy initialiser for {@link DummyObjD}, whose {@link #initialise(Object)} + * method always returns true. + * + * @author Alp Torac Genc + */ +public class DummyInitialiserD implements IInitialiser { + + @Override + public DummyInitialiserD newInitialiser() { + return new DummyInitialiserD(); + } + + @Override + public DummyObjD instantiate() { + return new DummyObjD(); + } + + /** + * {@inheritDoc}
+ *
+ * For this implementor, does nothing and returns true. + */ + @Override + public boolean initialise(Object obj) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserE.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserE.java new file mode 100644 index 0000000000..0707e0ee60 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserE.java @@ -0,0 +1,32 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy initialiser for {@link DummyObjE}, whose {@link #initialise(Object)} + * method always returns false. + * + * @author Alp Torac Genc + */ +public class DummyInitialiserE implements IInitialiser { + + @Override + public DummyInitialiserE newInitialiser() { + return new DummyInitialiserE(); + } + + @Override + public DummyObjE instantiate() { + return new DummyObjE(); + } + + /** + * {@inheritDoc}
+ *
+ * For this implementor, does nothing and returns false. + */ + @Override + public boolean initialise(Object obj) { + return false; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageA.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageA.java new file mode 100644 index 0000000000..a530191a23 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageA.java @@ -0,0 +1,27 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +/** + * An {@link IInitialiserPackage} implementation, which simulates a package + * containing 1 initialiser implementation and no further sub-packages. + * + * @author Alp Torac Genc + * @see {@link cipm.consistency.initialisers.tests.dummy.packages} for the + * package layout. + */ +public class DummyInitialiserPackageA implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new DummyInitialiserA() }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { DummyInitialiserA.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageB.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageB.java new file mode 100644 index 0000000000..b57467588c --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageB.java @@ -0,0 +1,27 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +/** + * An {@link IInitialiserPackage} implementation, which simulates a package + * containing 1 initialiser implementation and no further sub-packages. + * + * @author Alp Torac Genc + * @see {@link cipm.consistency.initialisers.tests.dummy.packages} for the + * package layout. + */ +public class DummyInitialiserPackageB implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new DummyInitialiserB() }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { DummyInitialiserB.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageCD.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageCD.java new file mode 100644 index 0000000000..85a130e4e6 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyInitialiserPackageCD.java @@ -0,0 +1,27 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiser; +import cipm.consistency.initialisers.IInitialiserPackage; + +/** + * An {@link IInitialiserPackage} implementation, which simulates a package + * containing 2 initialiser implementation and no further sub-packages. + * + * @author Alp Torac Genc + * @see {@link cipm.consistency.initialisers.tests.dummy.packages} for the + * package layout. + */ +public class DummyInitialiserPackageCD implements IInitialiserPackage { + @Override + public Collection getInitialiserInstances() { + return this.initCol(new IInitialiser[] { new DummyInitialiserC(), new DummyInitialiserD() }); + } + + @SuppressWarnings("unchecked") + @Override + public Collection> getInitialiserInterfaceTypes() { + return this.initCol(new Class[] { DummyInitialiserC.class, DummyInitialiserD.class }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjA.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjA.java new file mode 100644 index 0000000000..d9ea4b8846 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjA.java @@ -0,0 +1,30 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +/** + * A dummy object that can be initialised via {@link #initStep()}. Note that the + * said initialisation does not do any vital changes on the object, it only + * simulates an initialisation. + * + * @author Alp Torac Genc + */ +public class DummyObjA { + /** + * @see {@link #isInitialisationStepDone()} + */ + private boolean initialisationStepDone = false; + + /** + * Performs the initialisation + */ + public void initStep() { + this.initialisationStepDone = true; + } + + /** + * @return Whether initialisation was done + * @see {@link #initStep()} + */ + public boolean isInitialisationStepDone() { + return initialisationStepDone; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjB.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjB.java new file mode 100644 index 0000000000..bcca0f9975 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjB.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +/** + * A dummy object that needs no initialisation. + * + * @author Alp Torac Genc + */ +public class DummyObjB { + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjC.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjC.java new file mode 100644 index 0000000000..5f47d0ae01 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjC.java @@ -0,0 +1,50 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +/** + * A dummy object that can be initialised via 2 methods {@link #initStepOne()} + * and {@link #initStepTwo()}. Note that the said initialisation methods do not + * do any vital changes on the object, they only simulate an initialisation with + * multiple steps. The order of the steps do not matter. + * + * @author Alp Torac Genc + */ +public class DummyObjC { + /** + * @see {@link #isInitialisationStepOneDone()} + */ + private boolean initialisationStepOneDone = false; + /** + * @see {@link #isInitialisationStepTwoDone()} + */ + private boolean initialisationStepTwoDone = false; + + /** + * Performs the step one of the initialisation. + */ + public void initStepOne() { + this.initialisationStepOneDone = true; + } + + /** + * Performs the step two of the initialisation. + */ + public void initStepTwo() { + this.initialisationStepTwoDone = true; + } + + /** + * @return Whether the step one of the initialisation is performed. + * @see {@link #initStepOne()} + */ + public boolean isInitialisationStepOneDone() { + return initialisationStepOneDone; + } + + /** + * @return Whether the step two of the initialisation is performed. + * @see {@link #initStepTwo()} + */ + public boolean isInitialisationStepTwoDone() { + return initialisationStepTwoDone; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjD.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjD.java new file mode 100644 index 0000000000..c2b95d2495 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjD.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +/** + * A dummy object that needs no initialisation. + * + * @author Alp Torac Genc + */ +public class DummyObjD { + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjE.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjE.java new file mode 100644 index 0000000000..ede2a85f92 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyObjE.java @@ -0,0 +1,10 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +/** + * A dummy object that needs no initialisation. + * + * @author Alp Torac Genc + */ +public class DummyObjE { + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyTopLevelInitialiserPackage.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyTopLevelInitialiserPackage.java new file mode 100644 index 0000000000..c262efe44a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/DummyTopLevelInitialiserPackage.java @@ -0,0 +1,21 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import java.util.Collection; + +import cipm.consistency.initialisers.IInitialiserPackage; + +/** + * An {@link IInitialiserPackage} implementation, which simulates a top-level + * package containing 2 further sub-packages. + * + * @author Alp Torac Genc + * @see {@link cipm.consistency.initialisers.tests.dummy.packages} for the + * package layout. + */ +public class DummyTopLevelInitialiserPackage implements IInitialiserPackage { + @Override + public Collection getSubPackages() { + return this.initCol(new IInitialiserPackage[] { new DummyAggregateInitialiserPackageOne(), + new DummyAggregateInitialiserPackageTwo() }); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjAInitStrat.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjAInitStrat.java new file mode 100644 index 0000000000..d29952ec08 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjAInitStrat.java @@ -0,0 +1,53 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * An {@link AbstractDummyAdaptationStrategy} implementation that initialises + * {@link DummyObjA} instances, provided its constructor is given parameters + * that allow it. + * + * @author Alp Torac Genc + */ +public class ObjAInitStrat extends AbstractDummyAdaptationStrategy { + /** + * A variant of {@link #ObjAInitStrat(boolean)} with "true" as the boolean + * parameter. + */ + public ObjAInitStrat() { + super(); + } + + /** + * @see {@link AbstractDummyAdaptationStrategy#AbstractDummyAdaptationStrategy(boolean)} + */ + public ObjAInitStrat(boolean initSuccessfully) { + super(initSuccessfully); + } + + /** + * {@inheritDoc}
+ *
+ * Initialises the given {@link DummyObjA} instance, if + * {@link #doesInitialiseSuccessfully()} is true. + */ + @Override + public boolean apply(IInitialiser init, Object obj) { + if (obj instanceof DummyObjA) { + var castedO = (DummyObjA) obj; + + if (this.doesInitialiseSuccessfully()) { + castedO.initStep(); + } + + return castedO.isInitialisationStepDone(); + } + + return true; + } + + @Override + public ObjAInitStrat newStrategy() { + return new ObjAInitStrat(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjCFirstInitStepStrat.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjCFirstInitStepStrat.java new file mode 100644 index 0000000000..2b984b3cea --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjCFirstInitStepStrat.java @@ -0,0 +1,55 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * An {@link AbstractDummyAdaptationStrategy} implementation that partially + * initialises {@link DummyObjC} instances, provided its constructor is given + * parameters that allow it. This implementation is complemented with + * {@link ObjCSecondInitStepStrat}, which performs the remaining part of the + * said initialisation. + * + * @author Alp Torac Genc + */ +public class ObjCFirstInitStepStrat extends AbstractDummyAdaptationStrategy { + /** + * A variant of {@link #ObjCFirstInitStepStrat(boolean)} with "true" as the + * boolean parameter. + */ + public ObjCFirstInitStepStrat() { + super(); + } + + /** + * @see {@link AbstractDummyAdaptationStrategy#AbstractDummyAdaptationStrategy(boolean)} + */ + public ObjCFirstInitStepStrat(boolean initSuccessfully) { + super(initSuccessfully); + } + + /** + * {@inheritDoc}
+ *
+ * Performs {@link DummyObjC#initStepOne()} on the given {@link DummyObjC} + * instance, if {@link #doesInitialiseSuccessfully()} is true. + */ + @Override + public boolean apply(IInitialiser init, Object obj) { + if (obj instanceof DummyObjC) { + var castedO = (DummyObjC) obj; + + if (this.doesInitialiseSuccessfully()) { + castedO.initStepOne(); + } + + return castedO.isInitialisationStepOneDone(); + } + + return true; + } + + @Override + public ObjCFirstInitStepStrat newStrategy() { + return new ObjCFirstInitStepStrat(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjCSecondInitStepStrat.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjCSecondInitStepStrat.java new file mode 100644 index 0000000000..5b6a2c2aa9 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/ObjCSecondInitStepStrat.java @@ -0,0 +1,55 @@ +package cipm.consistency.initialisers.tests.dummy.packages; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * An {@link AbstractDummyAdaptationStrategy} implementation that partially + * initialises {@link DummyObjC} instances, provided its constructor is given + * parameters that allow it. This implementation is complemented with + * {@link ObjCFirstInitStepStrat}, which performs the remaining part of the said + * initialisation. + * + * @author Alp Torac Genc + */ +public class ObjCSecondInitStepStrat extends AbstractDummyAdaptationStrategy { + /** + * A variant of {@link #ObjCSecondInitStepStrat(boolean)} with "true" as the + * boolean parameter. + */ + public ObjCSecondInitStepStrat() { + super(); + } + + /** + * @see {@link AbstractDummyAdaptationStrategy#AbstractDummyAdaptationStrategy(boolean)} + */ + public ObjCSecondInitStepStrat(boolean initSuccessfully) { + super(initSuccessfully); + } + + /** + * {@inheritDoc}
+ *
+ * Performs {@link DummyObjC#initStepTwo()} on the given {@link DummyObjC} + * instance, if {@link #doesInitialiseSuccessfully()} is true. + */ + @Override + public boolean apply(IInitialiser init, Object obj) { + if (obj instanceof DummyObjC) { + var castedO = (DummyObjC) obj; + + if (this.doesInitialiseSuccessfully()) { + castedO.initStepTwo(); + } + + return castedO.isInitialisationStepTwoDone(); + } + + return true; + } + + @Override + public ObjCSecondInitStepStrat newStrategy() { + return new ObjCSecondInitStepStrat(); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/package-info.java new file mode 100644 index 0000000000..bb61fa3c31 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/packages/package-info.java @@ -0,0 +1,36 @@ +/** + * Contains dummy implementations of initialiser packages as well as their + * content. They are used in tests for initialiser packages and initialiser + * adaptation. Through these tests, the recursive discovery of sub-packages and + * their content is tested. The current package/initialiser layout is as + * follows:
+ *
+ *
    + *
  • {@link DummyTopLevelInitialiserPackage} + *
      + *
    • {@link DummyAggregateInitialiserPackageOne} + *
        + *
      • {@link DummyInitialiserE} + *
      • {@link DummyInitialiserPackageA} + *
          + *
        • {@link DummyInitialiserA} + *
        + *
      • {@link DummyInitialiserPackageB} + *
          + *
        • {@link DummyInitialiserB} + *
        + *
      + *
    • {@link DummyAggregateInitialiserPackageTwo} + *
        + *
      • {@link DummyInitialiserPackageCD} + *
          + *
        • {@link DummyInitialiserC} + *
        • {@link DummyInitialiserD} + *
        + *
      + *
    + *
+ * + * @author Alp Torac Genc + */ +package cipm.consistency.initialisers.tests.dummy.packages; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/AbstractDummyTriviallyInitialisingInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/AbstractDummyTriviallyInitialisingInitialiser.java new file mode 100644 index 0000000000..a4ce23e2b5 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/AbstractDummyTriviallyInitialisingInitialiser.java @@ -0,0 +1,49 @@ +package cipm.consistency.initialisers.tests.dummy.types; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * An abstract dummy {@link IInitialiser}, which either always succeeds or + * always fails initialising via {@link #initialise(Object)}. + * + * @author Alp Torac Genc + */ +public abstract class AbstractDummyTriviallyInitialisingInitialiser implements IInitialiser { + + /** + * @see {@link AbstractDummyTriviallyInitialisingInitialiser#AbstractDummyTriviallyInitialisingInitialiser(boolean)} + */ + private boolean isInitialiseSuccessful; + + /** + * A variant of + * {@link AbstractDummyTriviallyInitialisingInitialiser#AbstractDummyTriviallyInitialisingInitialiser(boolean)} + * with "true" as the boolean parameter. + */ + public AbstractDummyTriviallyInitialisingInitialiser() { + this(true); + } + + /** + * Constructs an instance, which either always succeeds or always fails + * initialising via {@link #initialise(Object)}. + * + * @param isInitialiseSuccessful The return value of {@link #initialise(Object)} + * (i.e. whether initialisation succeeds). + */ + public AbstractDummyTriviallyInitialisingInitialiser(boolean isInitialiseSuccessful) { + this.isInitialiseSuccessful = isInitialiseSuccessful; + } + + /** + * {@inheritDoc}
+ *
+ * For this implementation, does nothing to the given object. Check + * {@link AbstractDummyTriviallyInitialisingInitialiser#AbstractDummyTriviallyInitialisingInitialiser(boolean)} + * for the return value. + */ + @Override + public boolean initialise(Object obj) { + return this.isInitialiseSuccessful; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/DummyModifiableObj.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/DummyModifiableObj.java new file mode 100644 index 0000000000..b98c07a556 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/DummyModifiableObj.java @@ -0,0 +1,37 @@ +package cipm.consistency.initialisers.tests.dummy.types; + +import java.util.HashSet; +import java.util.Set; + +/** + * A dummy object, to which modifiable attributes can be added. The said + * attributes are then stored in a {@link Set}. + * + * @author Alp Torac Genc + */ +public class DummyModifiableObj { + /** + * A set of modifiable attributes. + */ + private final Set someModifiableAttrCol = new HashSet(); + + /** + * @param attrToAdd An attribute to be added to this + * @return Whether the given attibute was added successfully + */ + public boolean addAttr(Object attrToAdd) { + return attrToAdd != null && this.someModifiableAttrCol.add(attrToAdd); + } + + /** + * @return A set containing all attributes stored in this. Modifying the + * returned attributes will affect the attributes stored in this. + * Modifying the returned set will not affect the stored values, + * however. + */ + public Set getAttrs() { + var attrs = new HashSet(); + this.someModifiableAttrCol.forEach((attr) -> attrs.add(attr)); + return attrs; + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/DummyModifiableObjInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/DummyModifiableObjInitialiser.java new file mode 100644 index 0000000000..f623942e8f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/DummyModifiableObjInitialiser.java @@ -0,0 +1,48 @@ +package cipm.consistency.initialisers.tests.dummy.types; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy {@link IInitialiser} implementation for {@link DummyModifiableObj}, + * which also offers methods to add them attributes. + * + * @author Alp Torac Genc + */ +public class DummyModifiableObjInitialiser implements IInitialiser { + + @Override + public DummyModifiableObjInitialiser newInitialiser() { + return new DummyModifiableObjInitialiser(); + } + + @Override + public DummyModifiableObj instantiate() { + return new DummyModifiableObj(); + } + + /** + * {@inheritDoc}
+ *
+ * For this implementor, does nothing and returns true. + */ + @Override + public boolean initialise(Object obj) { + return true; + } + + /** + * @see {@link DummyModifiableObj#addAttr(Object)} + */ + public boolean addAttr(DummyModifiableObj obj, Object attrToAdd) { + return obj.addAttr(attrToAdd); + } + + /** + * A variant of {@link #addAttr(DummyModifiableObj, Object)} for adding an array + * of attributes (each element within the given array will be added + * individually). + */ + public boolean addAttrs(DummyModifiableObj obj, Object[] attrsToAdd) { + return this.doMultipleModifications(obj, attrsToAdd, this::addAttr); + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/IDummyInitialiserWithoutMethods.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/IDummyInitialiserWithoutMethods.java new file mode 100644 index 0000000000..68086fb874 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/IDummyInitialiserWithoutMethods.java @@ -0,0 +1,13 @@ +package cipm.consistency.initialisers.tests.dummy.types; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy interface that extends {@link IInitialiser} without introducing + * anything new. + * + * @author Alp Torac Genc + */ +public interface IDummyInitialiserWithoutMethods extends IInitialiser { + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjFour.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjFour.java new file mode 100644 index 0000000000..501a1fc233 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjFour.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +/** + * A dummy object that needs no initialisation. + * + * @author Alp Torac Genc + */ +public class DummyObjFour { +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjFourInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjFourInitialiser.java new file mode 100644 index 0000000000..fba03e8e18 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjFourInitialiser.java @@ -0,0 +1,43 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +import cipm.consistency.initialisers.tests.dummy.types.AbstractDummyTriviallyInitialisingInitialiser; + +/** + * A dummy initialiser implementation of {@link IDummyObjFourInitialiser} that + * introduces some further utility methods: + *
    + *
  • One with an object parameter + *
  • Another one without parameters + *
+ * + * @author Alp Torac Genc + */ +public class DummyObjFourInitialiser extends AbstractDummyTriviallyInitialisingInitialiser + implements IDummyObjFourInitialiser { + + public DummyObjFourInitialiser() { + super(); + } + + public DummyObjFourInitialiser(boolean isInitialiseSuccessful) { + super(isInitialiseSuccessful); + } + + @Override + public DummyObjFourInitialiser newInitialiser() { + return new DummyObjFourInitialiser(); + } + + @Override + public DummyObjFour instantiate() { + return new DummyObjFour(); + } + + public boolean someUtilityMethodInClass(Object param) { + return true; + } + + public boolean someUtilityMethodInClassWithoutParam() { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjOne.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjOne.java new file mode 100644 index 0000000000..78ef06da84 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjOne.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +/** + * A dummy object that needs no initialisation. + * + * @author Alp Torac Genc + */ +public class DummyObjOne { +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjOneInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjOneInitialiser.java new file mode 100644 index 0000000000..5ff0a852a8 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjOneInitialiser.java @@ -0,0 +1,31 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +import cipm.consistency.initialisers.tests.dummy.types.AbstractDummyTriviallyInitialisingInitialiser; + +/** + * A dummy initialiser implementation of {@link IDummyObjOneInitialiser} that + * introduces no new methods. + * + * @author Alp Torac Genc + */ +public class DummyObjOneInitialiser extends AbstractDummyTriviallyInitialisingInitialiser + implements IDummyObjOneInitialiser { + + public DummyObjOneInitialiser() { + super(); + } + + public DummyObjOneInitialiser(boolean isInitialiseSuccessful) { + super(isInitialiseSuccessful); + } + + @Override + public DummyObjOneInitialiser newInitialiser() { + return new DummyObjOneInitialiser(); + } + + @Override + public DummyObjOne instantiate() { + return new DummyObjOne(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjThree.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjThree.java new file mode 100644 index 0000000000..4bfadf7005 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjThree.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +/** + * A dummy object that needs no initialisation. + * + * @author Alp Torac Genc + */ +public class DummyObjThree { +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjThreeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjThreeInitialiser.java new file mode 100644 index 0000000000..810aab7d30 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjThreeInitialiser.java @@ -0,0 +1,31 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +import cipm.consistency.initialisers.tests.dummy.types.AbstractDummyTriviallyInitialisingInitialiser; + +/** + * A dummy initialiser implementation of {@link IDummyObjThreeInitialiser} that + * introduces no new methods. + * + * @author Alp Torac Genc + */ +public class DummyObjThreeInitialiser extends AbstractDummyTriviallyInitialisingInitialiser + implements IDummyObjThreeInitialiser { + + public DummyObjThreeInitialiser() { + super(); + } + + public DummyObjThreeInitialiser(boolean isInitialiseSuccessful) { + super(isInitialiseSuccessful); + } + + @Override + public DummyObjThreeInitialiser newInitialiser() { + return new DummyObjThreeInitialiser(); + } + + @Override + public DummyObjThree instantiate() { + return new DummyObjThree(); + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjTwo.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjTwo.java new file mode 100644 index 0000000000..80ceee57df --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjTwo.java @@ -0,0 +1,9 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +/** + * A dummy object that needs no initialisation. + * + * @author Alp Torac Genc + */ +public class DummyObjTwo { +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjTwoInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjTwoInitialiser.java new file mode 100644 index 0000000000..b27989437a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/DummyObjTwoInitialiser.java @@ -0,0 +1,36 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +import cipm.consistency.initialisers.tests.dummy.types.AbstractDummyTriviallyInitialisingInitialiser; + +/** + * A dummy initialiser implementation of {@link IDummyObjTwoInitialiser} that + * introduces a new modification method, which takes an object parameter as well + * as the object to be modified. + * + * @author Alp Torac Genc + */ +public class DummyObjTwoInitialiser extends AbstractDummyTriviallyInitialisingInitialiser + implements IDummyObjTwoInitialiser { + + public DummyObjTwoInitialiser() { + super(); + } + + public DummyObjTwoInitialiser(boolean isInitialiseSuccessful) { + super(isInitialiseSuccessful); + } + + @Override + public DummyObjTwoInitialiser newInitialiser() { + return new DummyObjTwoInitialiser(); + } + + @Override + public DummyObjTwo instantiate() { + return new DummyObjTwo(); + } + + public boolean modificationMethodInClass(DummyObjTwo obj, Object param) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjFourInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjFourInitialiser.java new file mode 100644 index 0000000000..21781b6a17 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjFourInitialiser.java @@ -0,0 +1,25 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy initialiser interface with some default utility methods: + *
    + *
  • One with an object parameter + *
  • Another one without parameters + *
+ * + * @author Alp Torac Genc + */ +public interface IDummyObjFourInitialiser extends IInitialiser { + @Override + public DummyObjFour instantiate(); + + public default boolean someUtilityMethodInInterface(Object someParam) { + return true; + } + + public default boolean someUtilityMethodInInterfaceWithoutParam() { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjOneInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjOneInitialiser.java new file mode 100644 index 0000000000..cdd150c0f7 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjOneInitialiser.java @@ -0,0 +1,18 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy initialiser interface with a default modification method taking + * multiple parameters, as well as the object to be modified. + * + * @author Alp Torac Genc + */ +public interface IDummyObjOneInitialiser extends IInitialiser { + @Override + public DummyObjOne instantiate(); + + public default boolean modificationMethodInInterface(DummyObjOne obj, Object param1, Object param2) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjThreeInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjThreeInitialiser.java new file mode 100644 index 0000000000..4ec1a796f4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjThreeInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy initialiser interface that introduces nothing new. It only overrides + * the return type of {@link IDummyObjThreeInitialiser#instantiate()}. + * + * @author Alp Torac Genc + */ +public interface IDummyObjThreeInitialiser extends IInitialiser { + @Override + public DummyObjThree instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjTwoInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjTwoInitialiser.java new file mode 100644 index 0000000000..c4849e9384 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/IDummyObjTwoInitialiser.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy initialiser interface that introduces nothing new. It only overrides + * the return type of {@link IDummyObjThreeInitialiser#instantiate()}. + * + * @author Alp Torac Genc + */ +public interface IDummyObjTwoInitialiser extends IInitialiser { + @Override + public DummyObjTwo instantiate(); +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/package-info.java new file mode 100644 index 0000000000..41bc7f2487 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/flathierarchy/package-info.java @@ -0,0 +1,11 @@ +/** + * This package contains dummy objects without members and one initialiser for + * each of those objects (both an initialiser class and an initialiser + * interface). Neither the dummy objects nor their initialisers depend on one + * another.
+ *
+ * The constructs defined within this package can be used to test interactions + * of some {@link IInitialiser} methods with objects/initialisers that are + * independent of one another. + */ +package cipm.consistency.initialisers.tests.dummy.types.flathierarchy; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/package-info.java new file mode 100644 index 0000000000..0eaa0a1c70 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/package-info.java @@ -0,0 +1,11 @@ +/** + * This package, as well as its sub-packages, contain dummy object and + * initialiser implementations for tests. They can be used to test various + * methods of the {@link IInitialiser} interface, especially the static utility + * methods within.
+ *
+ * The sub-packages feature different initialiser (and object) hierarchies, so + * that the interaction of initialiser methods with different type hierarchies + * can be tested. + */ +package cipm.consistency.initialisers.tests.dummy.types; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyAlternateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyAlternateInitialiser.java new file mode 100644 index 0000000000..4adca9a9e3 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyAlternateInitialiser.java @@ -0,0 +1,26 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +/** + * A dummy implementation of {@link IDummyAlternateInitialiser} that introduces + * nothing new. Serves as an alternative to + * {@link DummyNonTerminalObjInitialiser} (does not have any dependencies to + * it). + * + * @author Alp Torac Genc + */ +public class DummyAlternateInitialiser implements IDummyAlternateInitialiser { + @Override + public DummyAlternateInitialiser newInitialiser() { + return new DummyAlternateInitialiser(); + } + + @Override + public DummyNonTerminalObj instantiate() { + return new DummyNonTerminalObj(); + } + + @Override + public boolean initialise(Object obj) { + return true; + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyNonTerminalObj.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyNonTerminalObj.java new file mode 100644 index 0000000000..6d433a9178 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyNonTerminalObj.java @@ -0,0 +1,14 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +/** + * A dummy object in the middle of the type hierarchy defined within this + * package. Does not need initialisation.
+ *
+ * Can be instantiated by 2 separate initialisers: + * {@link DummyAlternateInitialiser} and {@link DummyNonTerminalObjInitialiser}. + * + * @author Alp Torac Genc + */ +public class DummyNonTerminalObj extends DummyTopLevelObj { + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyNonTerminalObjInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyNonTerminalObjInitialiser.java new file mode 100644 index 0000000000..bf31e4a2ac --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyNonTerminalObjInitialiser.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +/** + * A dummy implementation of {@link IDummyNonTerminalObjInitialiser} that + * introduces nothing new. + * + * @author Alp Torac Genc + */ +public class DummyNonTerminalObjInitialiser implements IDummyNonTerminalObjInitialiser { + @Override + public DummyNonTerminalObjInitialiser newInitialiser() { + return new DummyNonTerminalObjInitialiser(); + } + + @Override + public DummyNonTerminalObj instantiate() { + return new DummyNonTerminalObj(); + } + + @Override + public boolean initialise(Object obj) { + return true; + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTerminalObj.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTerminalObj.java new file mode 100644 index 0000000000..d9bb5ad98a --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTerminalObj.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +/** + * A dummy object at the bottom of the type hierarchy defined within this + * package. Does not need initialisation. + * + * @author Alp Torac Genc + */ +public class DummyTerminalObj extends DummyNonTerminalObj { + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTerminalObjInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTerminalObjInitialiser.java new file mode 100644 index 0000000000..7e81765a19 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTerminalObjInitialiser.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +/** + * A dummy implementation of {@link IDummyTerminalObjInitialiser} that + * introduces nothing new. + * + * @author Alp Torac Genc + */ +public class DummyTerminalObjInitialiser implements IDummyTerminalObjInitialiser { + @Override + public DummyTerminalObjInitialiser newInitialiser() { + return new DummyTerminalObjInitialiser(); + } + + @Override + public DummyTerminalObj instantiate() { + return new DummyTerminalObj(); + } + + @Override + public boolean initialise(Object obj) { + return true; + } +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTopLevelObj.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTopLevelObj.java new file mode 100644 index 0000000000..8d0b78839e --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTopLevelObj.java @@ -0,0 +1,11 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +/** + * A dummy object at the top of the type hierarchy defined within this package. + * Does not need initialisation. + * + * @author Alp Torac Genc + */ +public class DummyTopLevelObj { + +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTopLevelObjInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTopLevelObjInitialiser.java new file mode 100644 index 0000000000..f3d31bfeda --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/DummyTopLevelObjInitialiser.java @@ -0,0 +1,24 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +/** + * A dummy implementation of {@link IDummyTopLevelObjInitialiser} that + * introduces nothing new. + * + * @author Alp Torac Genc + */ +public class DummyTopLevelObjInitialiser implements IDummyTopLevelObjInitialiser { + @Override + public DummyTopLevelObjInitialiser newInitialiser() { + return new DummyTopLevelObjInitialiser(); + } + + @Override + public DummyTopLevelObj instantiate() { + return new DummyTopLevelObj(); + } + + @Override + public boolean initialise(Object obj) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyAlternateInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyAlternateInitialiser.java new file mode 100644 index 0000000000..c621ca4cea --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyAlternateInitialiser.java @@ -0,0 +1,16 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy {@link IInitialiser} interface that is in the middle of the type + * hierarchy defined within this package. It represents an alternative for + * {@link IDummyNonTerminalObjInitialiser} (does not have any dependencies to + * it). + * + * @author Alp Torac Genc + */ +public interface IDummyAlternateInitialiser extends IDummyTopLevelObjInitialiser { + @Override + public DummyNonTerminalObj instantiate(); +} \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyNonTerminalObjInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyNonTerminalObjInitialiser.java new file mode 100644 index 0000000000..bbcae24f5f --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyNonTerminalObjInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy {@link IInitialiser} interface that is in the middle of the type + * hierarchy defined within this package. Introduces one default modification + * method that only takes the object to be modified. + * + * @author Alp Torac Genc + */ +public interface IDummyNonTerminalObjInitialiser extends IDummyTopLevelObjInitialiser { + @Override + public DummyNonTerminalObj instantiate(); + + public default boolean someNonTerminalObjModificationMethod(DummyNonTerminalObj obj) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyTerminalObjInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyTerminalObjInitialiser.java new file mode 100644 index 0000000000..bffab357ae --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyTerminalObjInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy {@link IInitialiser} interface that is at the bottom of the type + * hierarchy defined within this package. Introduces one default modification + * method that only takes the object to be modified. + * + * @author Alp Torac Genc + */ +public interface IDummyTerminalObjInitialiser extends IDummyNonTerminalObjInitialiser { + @Override + public DummyTerminalObj instantiate(); + + public default boolean someTerminalObjModificationMethod(DummyTerminalObj obj) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyTopLevelObjInitialiser.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyTopLevelObjInitialiser.java new file mode 100644 index 0000000000..6ee199965d --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/IDummyTopLevelObjInitialiser.java @@ -0,0 +1,19 @@ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; + +import cipm.consistency.initialisers.IInitialiser; + +/** + * A dummy {@link IInitialiser} interface that is at the top of the type + * hierarchy defined within this package. Introduces one default modification + * method that only takes the object to be modified. + * + * @author Alp Torac Genc + */ +public interface IDummyTopLevelObjInitialiser extends IInitialiser { + @Override + public DummyTopLevelObj instantiate(); + + public default boolean someTopLevelObjModificationMethod(DummyTopLevelObj obj) { + return true; + } +} diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/package-info.java new file mode 100644 index 0000000000..83f17570ca --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/dummy/types/verticalhierarchy/package-info.java @@ -0,0 +1,34 @@ +/** + * This package contains dummy objects without members and initialisers for each + * of those objects (both an initialiser class and an initialiser interface). + * These objects and initialisers extend one another and form a type hierarchy. + *
+ *
+ * The constructs defined within this package can be used to test interactions + * of some {@link IInitialiser} methods with objects/initialisers that inherit + * from one another.
+ *
+ * The current layout of the type hierarchy for the objects is as follows: + *
    + *
  • {@link DummyTopLevelObj} + *
      + *
    • {@link DummyNonTerminalObj} + *
        + *
      • {@link DummyTerminalObj} + *
      + *
    + *
+ * The current layout of the type hierarchy for the initialisers is as follows + * (similar for initialiser interfaces): + *
    + *
  • {@link DummyTopLevelObjInitialiser} + *
      + *
    • {@link DummyNonTerminalObjInitialiser} + *
        + *
      • {@link DummyTerminalObjInitialiser} + *
      + *
    • {@link DummyAlternateInitialiser} + *
    + *
+ */ +package cipm.consistency.initialisers.tests.dummy.types.verticalhierarchy; \ No newline at end of file diff --git a/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/package-info.java b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/package-info.java new file mode 100644 index 0000000000..87d99130a4 --- /dev/null +++ b/commit-based-cipm/initialisers/cipm.consistency.initialisers/src/cipm/consistency/initialisers/tests/package-info.java @@ -0,0 +1,8 @@ +/** + * Contains tests for top level {@link IInitialiser} classes and interfaces. + *
+ *
+ * Concrete initialisers are not tested, since there are already mechanisms + * implemented in them to ensure that they do what they are meant to do. + */ +package cipm.consistency.initialisers.tests; \ No newline at end of file