diff --git a/.gitignore b/.gitignore index 057184fb61b08829d913f53ba9b27c5201bef3fb..df249aee774e7d3a3655bf22bcff0acb61c1a830 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ .DS_Store pom.xml updatesite/ +**/lib/dependencies/ de.prob.core/prob/ build/ de.prob.repository/category.xml \ No newline at end of file diff --git a/README.md b/README.md index c6f9fc89b476eecd246eae463c20e6921231870a..a01a8b1eeff5b81bf8c6aecd56bf330f4e9428e0 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,23 @@ The ProB binary and source distributions contain the nauty library (http://cs.an For availability of commercial support, please contact Formal Mind (http://www.formalmind.com). +# Setting up the development environment + +- Clone the repository (http://github.com/bendisposto/prob) + We suggest to fork the project on github (see https://help.github.com/articles/fork-a-repo) + +- We use gradle to manage the dependencies to the libraries, thus you will need gradle installed on your computer. + (see http://www.gradle.org/) + +- In the de.prob.releng directory run the downloadCli and collectDependencies tasks (gradle downloadCli collectDependencies). This will download the latest nightly build of the Prolog binary and the required Java libraries (such as apache commons, etc.) + +- Install Eclipse (Indigo/Juno) for RCP Development + +- Import the projects into Eclipse. You can leave out de.prob.releng. At this point Eclipse will complain about errors, the reason is that the target platform (i.e., Rodin) hasn't been setup yet). + +- Open the file prob_target.target from the de.prob.core project and click on "Set as Target Platform". Grab a coffee. + +- After the target platform was installed and the workspace has been compiled you can run the project as an Eclipse application (use org.rodinp.platform.product as the product in the run configuration) + + + diff --git a/build.gradle b/build.gradle deleted file mode 100644 index ed0e79f4d24614a557d864f1fa985b348548fbea..0000000000000000000000000000000000000000 --- a/build.gradle +++ /dev/null @@ -1,65 +0,0 @@ -groupID = "de.prob" -features = ["de.prob2.feature"] // must be the same as the folder name - -descriptions = [["de.prob2.feature": "ProB Rodin Plugin"],["de.prob2.feature": """ProB is an animator and model checker for the B-Method. It allows -fully automatic animation of many B specifications, and can be -used to systematically check a specification for errors. -Part of the research and development was conducted within the -EPSRC funded projects ABCD and iMoc, and within the EU funded -project Rodin. -Development is continued under the EU funded project Deploy and -the DFG project Gepavas. -ProB has been successfully used on various industrial specifications -and is now being used within Siemens."""] ] // label and descriptions of the features - -repositoryName = groupID+".repository" // will be the folder name -parentID = groupID+".parent" // will be the same as the folder name - -targetRepositories = ["http://cobra.cs.uni-duesseldorf.de/prob_dev_target/","http://download.eclipse.org/releases/indigo/"] // ps Repository with Target Definition File - -apply from: 'tycho_build.gradle' - -// Local tasks -def download(address,target) { - def file = new FileOutputStream(target) - def out = new BufferedOutputStream(file) - out << new URL(address).openStream() - out.close() -} - -task downloadCli << { - dir = 'de.prob.core/prob/' - delete file(dir) - new File(dir).mkdirs() - - ['leopard':'macos','linux':'linux','linux64':'linux64','win32':'windows'].each { - n = it.getKey() - - targetdir = dir+it.getValue() - targetzip = dir+"probcli_${n}.zip" - url = "http://nightly.cobra.cs.uni-duesseldorf.de/cli/probcli_${n}.zip" - download(url,targetzip) - FileTree zip = zipTree(targetzip) - copy { - from zip - into targetdir - } - delete file(targetzip) - } - - targetdir = dir+"windows/" - targetzip = targetdir+"windowslib.zip" - download("http://nightly.cobra.cs.uni-duesseldorf.de/cli/windowslib.zip",targetzip) - FileTree zip = zipTree(targetzip) - copy { - from zip - into targetdir - } - delete file(targetzip) - -} - -task collectArtifacts(type:Copy) { - from groupID+'.repository/target/repository/' - into 'updatesite' -} diff --git a/de.bmotionstudio.gef.editor/.classpath b/de.bmotionstudio.gef.editor/.classpath index 1650e61be9f7cdd29178addcb2696b1962d4e5ef..0ebdd2991947f519db624b4393a3de4e1e841303 100644 --- a/de.bmotionstudio.gef.editor/.classpath +++ b/de.bmotionstudio.gef.editor/.classpath @@ -1,10 +1,11 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> - <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> - <classpathentry kind="src" path="src"/> - <classpathentry exported="true" kind="lib" path="lib/ext/xpp3_min-1.1.4c.jar"/> - <classpathentry exported="true" kind="lib" path="lib/ext/xstream-1.3.1.jar" sourcepath="D:/xstream-distribution-1.3.1-src.zip"/> - <classpathentry exported="true" kind="lib" path="lib/ext/animation-1.2.0.jar"/> - <classpathentry kind="output" path="bin"/> -</classpath> +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry exported="true" kind="lib" path="lib/ext/groovy-all-1.8.6.jar"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry exported="true" kind="lib" path="lib/ext/xpp3_min-1.1.4c.jar"/> + <classpathentry exported="true" kind="lib" path="lib/ext/xstream-1.3.1.jar" sourcepath="D:/xstream-distribution-1.3.1-src.zip"/> + <classpathentry exported="true" kind="lib" path="lib/ext/animation-1.2.0.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/de.bmotionstudio.gef.editor/.project b/de.bmotionstudio.gef.editor/.project index 5b47a81f892de4a2a747c3084f04e161bff4cb17..266629c4895e933adf14f11029b247fd87cb776e 100644 --- a/de.bmotionstudio.gef.editor/.project +++ b/de.bmotionstudio.gef.editor/.project @@ -1,28 +1,28 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>de.bmotionstudio.gef.editor</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.pde.ManifestBuilder</name> - <arguments> - </arguments> - </buildCommand> - <buildCommand> - <name>org.eclipse.pde.SchemaBuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.pde.PluginNature</nature> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>de.bmotionstudio.gef.editor</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.resources.prefs b/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.resources.prefs index bb7d9ec6f5c0705e126c1655f0ac4bd64e5cc4e6..35c1f5a73d13cf6b4f0a370335f908432f2fe713 100644 --- a/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.resources.prefs +++ b/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.resources.prefs @@ -1,3 +1,3 @@ -#Tue Nov 29 16:16:11 CET 2011 -eclipse.preferences.version=1 -encoding/<project>=UTF-8 +#Tue Nov 29 16:16:11 CET 2011 +eclipse.preferences.version=1 +encoding/<project>=UTF-8 diff --git a/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.runtime.prefs b/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.runtime.prefs index 98fd8a4c46ac8acfc4de4fba2caac68703d8b58d..11c1f686b491df30d3f56ce88d8512986f4f43b2 100644 --- a/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.runtime.prefs +++ b/de.bmotionstudio.gef.editor/.settings/org.eclipse.core.runtime.prefs @@ -1,3 +1,3 @@ -#Tue Nov 29 16:16:11 CET 2011 -eclipse.preferences.version=1 -line.separator=\n +#Tue Nov 29 16:16:11 CET 2011 +eclipse.preferences.version=1 +line.separator=\n diff --git a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF index 38395207fac8d54f64db8525820fff1d3de5535e..2b1c131339b3221022a735f828e0a7a060cdb714 100644 --- a/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF +++ b/de.bmotionstudio.gef.editor/META-INF/MANIFEST.MF @@ -2,18 +2,18 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: BMotion Studio Editor Plug-in Bundle-SymbolicName: de.bmotionstudio.gef.editor;singleton:=true -Bundle-Version: 5.3.1.qualifier +Bundle-Version: 5.3.2.qualifier Bundle-Activator: de.bmotionstudio.gef.editor.BMotionEditorPlugin Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)", org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)", - org.eclipse.ui.views;bundle-version="[3.5.0,4.0.0)", + org.eclipse.ui.views;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)", org.eclipse.jface;bundle-version="[3.5.0,4.0.0)", org.eclipse.core.databinding;bundle-version="[1.2.0,2.0.0)", org.eclipse.jface.databinding;bundle-version="[1.2.1,2.0.0)", org.eclipse.core.databinding.beans;bundle-version="[1.1.1,2.0.0)", - org.eclipse.gef;bundle-version="[3.7.0,4.0.0)", - de.prob.core;bundle-version="[9.2.0,9.3.0)", + org.eclipse.gef;bundle-version="[3.7.0,4.0.0)";visibility:=reexport, + de.prob.core;bundle-version="[9.2.0,9.3.0)";visibility:=reexport, org.eventb.core;bundle-version="[2.1.0,2.6.0)" Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 @@ -57,4 +57,5 @@ Export-Package: com.thoughtworks.xstream, Bundle-ClassPath: lib/ext/xpp3_min-1.1.4c.jar, lib/ext/xstream-1.3.1.jar, lib/ext/animation-1.2.0.jar, - . + ., + lib/ext/groovy-all-1.8.6.jar diff --git a/de.bmotionstudio.gef.editor/build.properties b/de.bmotionstudio.gef.editor/build.properties index f09a47a63b1eb6bf2a17335833018109364659b8..1243f18c1c52ce2e7e47bf70e1289a643ef7c821 100644 --- a/de.bmotionstudio.gef.editor/build.properties +++ b/de.bmotionstudio.gef.editor/build.properties @@ -5,5 +5,6 @@ bin.includes = plugin.xml,\ .,\ icons/,\ schema/,\ - lib/ + lib/,\ + lib/ext/groovy-all-1.8.6.jar diff --git a/de.bmotionstudio.gef.editor/icons/eclipse16/image_obj.gif b/de.bmotionstudio.gef.editor/icons/eclipse16/image_obj.gif new file mode 100644 index 0000000000000000000000000000000000000000..830be0ea08df3f7f3de47ec1e3b92a4052e4c85a Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/eclipse16/image_obj.gif differ diff --git a/de.bmotionstudio.gef.editor/icons/eclipse16/overview_obj.gif b/de.bmotionstudio.gef.editor/icons/eclipse16/overview_obj.gif new file mode 100644 index 0000000000000000000000000000000000000000..0624021bc1ecd0a712580622c66eb03987039afc Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/eclipse16/overview_obj.gif differ diff --git a/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps.gif b/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps.gif new file mode 100644 index 0000000000000000000000000000000000000000..d11c996e570dfe06518631ba3f0f1893a21f88d1 Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps.gif differ diff --git a/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps2.gif b/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps2.gif new file mode 100644 index 0000000000000000000000000000000000000000..2460e6a3f70de1a8e594535101cd9e8f4f3eb158 Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps2.gif differ diff --git a/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps3.gif b/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps3.gif new file mode 100644 index 0000000000000000000000000000000000000000..963bf79d8097c47c7e71b2dcfbdf665fe401c0f5 Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/eclipse16/prop_ps3.gif differ diff --git a/de.bmotionstudio.gef.editor/icons/icon_canister.gif b/de.bmotionstudio.gef.editor/icons/icon_canister.gif deleted file mode 100644 index f5a20232c661c5afea954c41cb11a8d839e407b2..0000000000000000000000000000000000000000 Binary files a/de.bmotionstudio.gef.editor/icons/icon_canister.gif and /dev/null differ diff --git a/de.bmotionstudio.gef.editor/icons/icon_table.gif b/de.bmotionstudio.gef.editor/icons/icon_table.gif new file mode 100644 index 0000000000000000000000000000000000000000..d11c996e570dfe06518631ba3f0f1893a21f88d1 Binary files /dev/null and b/de.bmotionstudio.gef.editor/icons/icon_table.gif differ diff --git a/de.bmotionstudio.gef.editor/lib/ext/groovy-all-1.8.6.jar b/de.bmotionstudio.gef.editor/lib/ext/groovy-all-1.8.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..03c02efae3759e2ba7d2a5766ade154550202ded Binary files /dev/null and b/de.bmotionstudio.gef.editor/lib/ext/groovy-all-1.8.6.jar differ diff --git a/de.bmotionstudio.gef.editor/plugin.xml b/de.bmotionstudio.gef.editor/plugin.xml index 0ee2080e5ad77315a48db9c95a41083dd13e0680..5be99e2974e7bb3004ff6166878b13223ed00f95 100644 --- a/de.bmotionstudio.gef.editor/plugin.xml +++ b/de.bmotionstudio.gef.editor/plugin.xml @@ -166,7 +166,7 @@ </group> <control groupid="de.bmotionstudio.gef.editor.group.main" - icon="icons/icon_image.gif" + icon="icons/eclipse16/image_obj.gif" id="de.bmotionstudio.gef.editor.image" name="Image" service="de.bmotionstudio.gef.editor.service.BImageService"> @@ -194,7 +194,7 @@ </control> <control groupid="de.bmotionstudio.gef.editor.group.main" - icon="icons/icon_composite.gif" + icon="icons/eclipse16/overview_obj.gif" id="de.bmotionstudio.gef.editor.composite" name="Composite" service="de.bmotionstudio.gef.editor.service.BCompositeService"> @@ -216,9 +216,16 @@ <control groupid="de.bmotionstudio.gef.editor.group.main" icon="icons/icon_rectangle.gif" - id="de.bmotionstudio.gef.editor.shape" - name="Shape" - service="de.bmotionstudio.gef.editor.service.BShapeService"> + id="de.bmotionstudio.gef.editor.rectangle" + name="Rectanlge" + service="de.bmotionstudio.gef.editor.service.BRectangleService"> + </control> + <control + groupid="de.bmotionstudio.gef.editor.group.main" + icon="icons/icon_ellipse.gif" + id="de.bmotionstudio.gef.editor.ellipse" + name="Ellipse" + service="de.bmotionstudio.gef.editor.service.BEllipseService"> </control> <control groupid="de.bmotionstudio.gef.editor.group.main" @@ -227,6 +234,27 @@ name="Connection" service="de.bmotionstudio.gef.editor.service.BConnectionService"> </control> + <control + groupid="de.bmotionstudio.gef.editor.group.main" + icon="icons/eclipse16/prop_ps.gif" + id="de.bmotionstudio.gef.editor.table" + name="Table" + service="de.bmotionstudio.gef.editor.service.BTableService"> + </control> + <control + groupid="de.bmotionstudio.gef.editor.group.main" + icon="icons/eclipse16/prop_ps2.gif" + id="de.bmotionstudio.gef.editor.tablecolumn" + name="Column" + service="de.bmotionstudio.gef.editor.service.BTableColumnService"> + </control> + <control + groupid="de.bmotionstudio.gef.editor.group.main" + icon="icons/eclipse16/prop_ps3.gif" + id="de.bmotionstudio.gef.editor.tablecell" + name="Cell" + service="de.bmotionstudio.gef.editor.service.BTableCellService"> + </control> </extension> <extension point="de.bmotionstudio.gef.editor.observer"> @@ -259,9 +287,12 @@ name="Switch Coordinates"> </observer> <observer - class="de.bmotionstudio.gef.editor.observer.CloneObserver" - description="This observer clones the control depending on an expression rule" - name="Clone Observer"> + class="de.bmotionstudio.gef.editor.observer.ExternalObserverScript" + name="External Observer Script"> + </observer> + <observer + class="de.bmotionstudio.gef.editor.observer.ColumnObserver" + name="Column Observer"> </observer> </extension> <extension @@ -276,7 +307,7 @@ class="de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript" description="Execute an animation script" menu="true" - name="Execute Scheduler (Multi)"> + name="Execute Scheduler"> </schedulerEvent> <schedulerEvent class="de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicateMulti" @@ -332,7 +363,7 @@ id="de.bmotionstudio.gef.editor.ellipse"> </control> <control - id="de.bmotionstudio.gef.editor.shape"> + id="de.bmotionstudio.gef.editor.rectangle"> </control> <control id="de.bmotionstudio.gef.editor.radiobutton"> @@ -343,14 +374,11 @@ <control id="de.bmotionstudio.gef.editor.connection"> </control> - </observer> - <observer - id="de.bmotionstudio.gef.editor.observer.CloneObserver"> <control - id="de.bmotionstudio.gef.editor.composite"> + id="de.bmotionstudio.gef.editor.tablecell"> </control> <control - id="de.bmotionstudio.gef.editor.visualization"> + id="de.bmotionstudio.gef.editor.table"> </control> </observer> <observer @@ -368,7 +396,7 @@ id="de.bmotionstudio.gef.editor.text"> </control> <control - id="de.bmotionstudio.gef.editor.shape"> + id="de.bmotionstudio.gef.editor.rectangle"> </control> <control id="de.bmotionstudio.gef.editor.radiobutton"> @@ -379,6 +407,12 @@ <control id="de.bmotionstudio.gef.editor.checkbox"> </control> + <control + id="de.bmotionstudio.gef.editor.ellipse"> + </control> + <control + id="de.bmotionstudio.gef.editor.table"> + </control> </observer> <observer id="de.bmotionstudio.gef.editor.observer.SimpleValueDisplay"> @@ -394,18 +428,60 @@ <control id="de.bmotionstudio.gef.editor.button"> </control> + <control + id="de.bmotionstudio.gef.editor.tablecell"> + </control> </observer> <observer - id="de.bmotionstudio.gef.editor.observer.SwitchImage"> + id="de.bmotionstudio.gef.editor.observer.SetAttribute"> <control id="de.bmotionstudio.gef.editor.image"> </control> + <control + id="de.bmotionstudio.gef.editor.button"> + </control> <control id="de.bmotionstudio.gef.editor.composite"> </control> + <control + id="de.bmotionstudio.gef.editor.text"> + </control> + <control + id="de.bmotionstudio.gef.editor.rectangle"> + </control> + <control + id="de.bmotionstudio.gef.editor.radiobutton"> + </control> + <control + id="de.bmotionstudio.gef.editor.checkbox"> + </control> + <control + id="de.bmotionstudio.gef.editor.connection"> + </control> + <control + id="de.bmotionstudio.gef.editor.ellipse"> + </control> + <control + id="de.bmotionstudio.gef.editor.textfield"> + </control> + <control + id="de.bmotionstudio.gef.editor.tablecell"> + </control> + <control + id="de.bmotionstudio.gef.editor.table"> + </control> </observer> <observer - id="de.bmotionstudio.gef.editor.observer.SetAttribute"> + id="de.bmotionstudio.gef.editor.observer.SwitchChildCoordinates"> + <control + id="de.bmotionstudio.gef.editor.composite"> + </control> + <control + id="de.bmotionstudio.gef.editor.visualization"> + </control> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ExternalObserverScript"> <control id="de.bmotionstudio.gef.editor.image"> </control> @@ -419,7 +495,7 @@ id="de.bmotionstudio.gef.editor.text"> </control> <control - id="de.bmotionstudio.gef.editor.shape"> + id="de.bmotionstudio.gef.editor.rectangle"> </control> <control id="de.bmotionstudio.gef.editor.radiobutton"> @@ -430,14 +506,38 @@ <control id="de.bmotionstudio.gef.editor.connection"> </control> + <control + id="de.bmotionstudio.gef.editor.ellipse"> + </control> + <control + id="de.bmotionstudio.gef.editor.textfield"> + </control> + <control + id="de.bmotionstudio.gef.editor.tablecell"> + </control> + <control + id="de.bmotionstudio.gef.editor.table"> + </control> </observer> <observer - id="de.bmotionstudio.gef.editor.observer.SwitchChildCoordinates"> + id="de.bmotionstudio.gef.editor.observer.SwitchImage"> + <control + id="de.bmotionstudio.gef.editor.image"> + </control> <control id="de.bmotionstudio.gef.editor.composite"> </control> <control - id="de.bmotionstudio.gef.editor.visualization"> + id="de.bmotionstudio.gef.editor.rectangle"> + </control> + <control + id="de.bmotionstudio.gef.editor.ellipse"> + </control> + </observer> + <observer + id="de.bmotionstudio.gef.editor.observer.ColumnObserver"> + <control + id="de.bmotionstudio.gef.editor.tablecolumn"> </control> </observer> </include> diff --git a/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.control.exsd b/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.control.exsd index 2582ef9607e1c8b291e739da2243cbffd5a92107..ce1f1677784cea86330b89864ecc79fc0eab3f6a 100644 --- a/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.control.exsd +++ b/de.bmotionstudio.gef.editor/schema/de.bmotionstudio.gef.editor.control.exsd @@ -115,7 +115,7 @@ </documentation> <appInfo> - <meta.attribute kind="java" basedOn="de.bmotionstudio.gef.editor.service.AbstractBControlService:de.bmotionstudio.gef.editor.IBControlService"/> + <meta.attribute kind="java" basedOn="de.bmotionstudio.gef.editor.AbstractBControlService:de.bmotionstudio.gef.editor.IBControlService"/> </appInfo> </annotation> </attribute> diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractBControlService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractBControlService.java index 5eacc4c6d570539eb13aafaaa034ea4a9924e101..f0a5f6c8febb8efdc0da4eb6b840e2d4792b7c50 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractBControlService.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractBControlService.java @@ -27,9 +27,9 @@ public abstract class AbstractBControlService { String type = configurationElement.getAttribute("id"); // Get the source plug-in (from the control extension) String sourcePluginID = configurationElement.getContributor().getName(); - return new CombinedTemplateCreationEntry(name, - "Create Control " + name, new BControlTemplate(type), - new BControlCreationFactory(type, visualization), + return new CombinedTemplateCreationEntry(name, "Create " + name, + new BControlTemplate(type), new BControlCreationFactory(type, + visualization), AbstractUIPlugin .imageDescriptorFromPlugin(sourcePluginID, icon), AbstractUIPlugin diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractExpressionControl.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractExpressionControl.java index 002567c4e6049d89ea2a355d3bb6899205fb6e80..a08f1e160786898ca1f2c1fa00cd4174398994e2 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractExpressionControl.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AbstractExpressionControl.java @@ -6,40 +6,15 @@ package de.bmotionstudio.gef.editor; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import de.be4.classicalb.core.parser.exceptions.BException; -import de.bmotionstudio.gef.editor.internal.Animation; import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.ObserverEvalObject; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.observer.IObserver; import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; -import de.prob.core.command.EvaluationGetValuesCommand; -import de.prob.core.command.GetOperationByPredicateCommand; -import de.prob.core.domainobjects.EvaluationElement; -import de.prob.core.domainobjects.EvaluationStateElement; -import de.prob.core.domainobjects.Operation; -import de.prob.core.domainobjects.State; -import de.prob.exceptions.ProBException; -import de.prob.parserbase.ProBParseException; public abstract class AbstractExpressionControl extends BindingObject { - private static final Pattern PATTERN = Pattern.compile("\\$(.+?)\\$"); - protected transient String ID; protected transient String name; protected transient String description; - protected transient Boolean hasError = false; - private transient static final String DEFAULT_PREDICATE = "1=1"; - private transient static final String DEFAULT_BOOLVAL = "true"; public String getID() { return this.ID; @@ -53,220 +28,6 @@ public abstract class AbstractExpressionControl extends BindingObject { return this.description; } - public void addError(BControl control, Animation animation, String message) { - // TODO: Implement me! - // History history = animation.getAnimator().getHistory(); - // int currentHistoryPos = history.getCurrentPosition(); - // control.getVisualization().addError( - // new ErrorMessage(history.getAllItems()[currentHistoryPos - 1], - // this, control, message)); - } - - /** - * tbd - * - * @param expressionString - * @param control - * @param animation - * @param obj - * @return true or false - */ - protected String parsePredicate(String expressionString, BControl control, - Animation animation, ObserverEvalObject obj) { - if (expressionString == null || expressionString.trim().length() == 0) - return DEFAULT_BOOLVAL; - return parseExpression(expressionString, true, control, animation, obj, - true); - } - - protected String parseExpression(String expressionString, BControl control, - Animation animation, ObserverEvalObject obj) { - return parseExpression(expressionString, true, control, animation, obj, - false); - } - - protected String parseExpression(final String expressionString, - final boolean evalSingleExpression, final BControl control, - final Animation animation, final ObserverEvalObject obj, - final boolean isPredicate) { - - Map<EvaluationElement, String> evaluationKeys = new HashMap<EvaluationElement, String>(); - - boolean hasSubExpressions = false; - - hasError = false; - - // Find expressions and collect ExpressionEvalElements - final Matcher matcher = PATTERN.matcher(expressionString); - - while (matcher.find()) { - final String subExpr = matcher.group(1); - collectEvalElements(subExpr, "$" + subExpr + "$", isPredicate, - animation, control, evaluationKeys); - hasSubExpressions = true; - } - - // We have only one expression (without "$$") - if (!hasSubExpressions) { - if (evalSingleExpression) { - collectEvalElements(expressionString, expressionString, - isPredicate, animation, control, evaluationKeys); - } else { - return expressionString; - } - } - - // Try to get expression results and parse expression string - Collection<EvaluationStateElement> resultList; - try { - resultList = getExpressionValues(control, animation, - new ArrayList<EvaluationElement>(evaluationKeys.keySet())); - } catch (ProBException e) { - resultList = Collections.emptyList(); - hasError = true; - } - - // If getting ExpressionEvalElement throws no error, try to get - // expression results - String result = expressionString; - if (!hasError) { - for (EvaluationStateElement stateElement : resultList) { - final EvaluationElement evalElement = stateElement.getElement(); - final String text; - if (isPredicate) { - text = stateElement.getResult().isPredicateTrue() ? "true" - : "false"; - } else { - text = stateElement.getText(); - } - final String subExpression = evaluationKeys.get(evalElement); - result = result.replace(subExpression, text); - } - } else { - if (obj != null) - obj.setHasError(true); - addError(control, animation, - "An error occurred while evaluating expression\\predicate value: \"" - + expressionString - + "\". Please check your expression\\predicate."); - } - - return result; - - } - - private void collectEvalElements(final String subexpression, - final String key, final boolean isPredicate, - final Animation animation, final BControl control, - final Map<EvaluationElement, String> evaluationKeys) { - - final String parsedSubexpr = parseControls(subexpression, control); - EvaluationElement evalElement; - try { - evalElement = animation.getCachedEvalElement(parsedSubexpr, - isPredicate); - evaluationKeys.put(evalElement, key); - } catch (UnsupportedOperationException e) { - hasError = true; - } catch (ProBException e) { - hasError = true; - } catch (ProBParseException e) { - addError(control, animation, e.getMessage()); - hasError = true; - } - - } - - protected List<Operation> parseOperation(final String opName, - String opPredicate, int opRandom, final Animation animation, - final String currentState, final BControl control) { - - try { - - if (opPredicate != null && opPredicate.length() > 0) - opPredicate = parseControls(opPredicate, control); - else - opPredicate = DEFAULT_PREDICATE; - - if (opRandom < 1) - opRandom = 1; - - return GetOperationByPredicateCommand.getOperations( - animation.getAnimator(), currentState, opName, opPredicate, - opRandom); - - } catch (ProBException e) { - addError(control, animation, e.getMessage()); - hasError = true; - } catch (BException e) { - addError(control, animation, e.getMessage()); - hasError = true; - } - - return null; - - } - - /** - * This method matches the pattern <i>(\\w+)</i>. This means that the method - * matches alphanumeric words in the given predicate or expression string. - * The method focuses on control id's or the key word <i>this</i>. In the - * first case the method tries to find a reference on the corresponding - * control in the visualization regarding to the matched control id. In the - * second case the method creates a reference to the control which contains - * the observer. In addition in both cases the method returns the value of - * {@link AppAbstractEditPart#getValueOfData()} of the located - * {@link BControl}. - * - * @param expressionString - * @param control - * @return the parsed expression - */ - protected String parseControls(String expressionString, BControl control) { - - List<String> allControlIDs = control.getVisualization() - .getAllBControlNames(); - - // Search for control ids - Pattern cPattern = Pattern.compile("(\\w+)"); - Matcher cMatcher = cPattern.matcher(expressionString); - - while (cMatcher.find()) { - - String controlID = cMatcher.group(1); - - if (controlID.equals("this")) { - - expressionString = expressionString.replace(controlID, control - .getAttributeValue(AttributeConstants.ATTRIBUTE_CUSTOM) - .toString()); - - } else if (allControlIDs.contains(controlID)) { - - expressionString = expressionString.replace(controlID, control - .getVisualization().getBControl(controlID) - .getValueOfData()); - - } else { - // TODO: Return error if no control exists - } - } - - return expressionString; - - } - - protected Collection<EvaluationStateElement> getExpressionValues( - final BControl control, final Animation animation, - final Collection<EvaluationElement> evalElements) - throws ProBException { - final State state = animation.getAnimator().getCurrentState(); - // TODO[DP, 11.04.2011] Add an animator to the parameters! - final Collection<EvaluationStateElement> values = EvaluationGetValuesCommand - .getValuesForExpressionsCached(state, evalElements); - return values; - } - /** * This method is invoked before the expression control ({@link IObserver} * or {@link SchedulerEvent}) will be deleted. diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/Animation.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/Animation.java similarity index 84% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/Animation.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/Animation.java index 1ad524efa4653e88249dce207a197c2ebac64f16..736d82ce4494168f138ef4a9d5975d56b4a8084e 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/Animation.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/Animation.java @@ -1,164 +1,179 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.swt.widgets.Display; - -import de.bmotionstudio.gef.editor.animation.StaticListenerRegistry; -import de.bmotionstudio.gef.editor.model.Visualization; -import de.prob.core.Animator; -import de.prob.core.IAnimationListener; -import de.prob.core.command.EvaluationGetValuesCommand; -import de.prob.core.command.EvaluationInsertFormulaCommand; -import de.prob.core.command.EvaluationInsertFormulaCommand.FormulaType; -import de.prob.core.domainobjects.EvaluationElement; -import de.prob.core.domainobjects.Operation; -import de.prob.core.domainobjects.State; -import de.prob.exceptions.ProBException; -import de.prob.parserbase.ProBParseException; - -public class Animation implements IAnimationListener { - - private Animator animator; - - private final Map<String, Operation> currentStateOperations; - - private final Map<String, EvaluationElement> cachedEvalElements = new HashMap<String, EvaluationElement>(); - - private State currentState; - - private Visualization visualization; - - private Boolean observerCallBack = true; - - public Animation(Animator anim, Visualization visualization) { - StaticListenerRegistry.registerListener((IAnimationListener) this); - this.currentStateOperations = new HashMap<String, Operation>(); - this.animator = anim; - this.visualization = visualization; - this.visualization.setAnimation(this); - } - - private void setNewState(State state) { - currentState = state; - currentStateOperations.clear(); - for (Operation op : state.getEnabledOperations()) { - this.currentStateOperations.put(op.getName(), op); - } - } - - @Override - public void currentStateChanged(State currentState, Operation operation) { - // set new state and remember old state, if possible - setNewState(currentState); - updateCachedExpressions(currentState); - if (currentState.isInitialized()) { - - if (animator == null) { - animator = Animator.getAnimator(); - } - - checkObserver(); - - } - - } - - /** - * Get values for all used expressions. This should speed up the - * communication between ProB's core and Java. The result is not used, just - * to fill the caches. - * - * @param currentState - */ - private void updateCachedExpressions(State currentState) { - try { - EvaluationGetValuesCommand.getValuesForExpressionsCached( - currentState, cachedEvalElements.values()); - } catch (ProBException e) { - // TODO Log this - } - } - - public void checkObserver() { - if (visualization.isRunning()) { - Display.getDefault().asyncExec(new Runnable() { - @Override - public void run() { - visualization.checkObserver(Animation.this); - visualization.afterCheckObserver(Animation.this); - } - }); - } - } - - // public boolean checkObserverCallBack() { - // return visualization.checkObserverCallBack(); - // } - - public State getState() { - return currentState; - } - - public Animator getAnimator() { - return animator; - } - - public Operation getCurrentStateOperation(String operation) { - return currentStateOperations.get(operation); - } - - public Visualization getVisualization() { - return this.visualization; - } - - public void unregister() { - StaticListenerRegistry.unregisterListener((IAnimationListener) this); - } - - public void setObserverCallBack(Boolean observerCallBack) { - this.observerCallBack = observerCallBack; - } - - public boolean isObserverCallBack() { - return observerCallBack; - } - - public EvaluationElement getCachedEvalElement(String expressionStr, - boolean isPredicate) throws UnsupportedOperationException, - ProBException, ProBParseException { - final EvaluationElement evalElement; - if (cachedEvalElements.containsKey(expressionStr)) { - evalElement = cachedEvalElements.get(expressionStr); - } else { - // TODO: exception handling ... - evalElement = createPredicateExpressionElement(expressionStr, - isPredicate); - cachedEvalElements.put(expressionStr, evalElement); - } - return evalElement; - } - - private EvaluationElement createPredicateExpressionElement( - String expressionStr, boolean isPredicate) - throws UnsupportedOperationException, ProBException, - ProBParseException { - final EvaluationInsertFormulaCommand.FormulaType type = isPredicate ? FormulaType.PREDICATE - : FormulaType.EXPRESSION; - final EvaluationElement evaluationElement = EvaluationInsertFormulaCommand - .insertFormula(animator, type, expressionStr); - return evaluationElement; - } - - public Map<String, Operation> getCurrentStateOperations() { - return currentStateOperations; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.swt.widgets.Display; + +import de.bmotionstudio.gef.editor.animation.StaticListenerRegistry; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.Visualization; +import de.prob.core.Animator; +import de.prob.core.IAnimationListener; +import de.prob.core.command.EvaluationGetValuesCommand; +import de.prob.core.command.EvaluationInsertFormulaCommand; +import de.prob.core.command.EvaluationInsertFormulaCommand.FormulaType; +import de.prob.core.domainobjects.EvaluationElement; +import de.prob.core.domainobjects.Operation; +import de.prob.core.domainobjects.State; +import de.prob.exceptions.ProBException; +import de.prob.parserbase.ProBParseException; + +public class Animation implements IAnimationListener { + + private Animator animator; + + private final Map<String, Operation> currentStateOperations; + + private final Map<String, EvaluationElement> cachedEvalElements = new HashMap<String, EvaluationElement>(); + + private State currentState; + + private Visualization visualization; + + private Boolean observerCallBack = true; + + public Animation(Animator anim, Visualization visualization) { + StaticListenerRegistry.registerListener((IAnimationListener) this); + this.currentStateOperations = new HashMap<String, Operation>(); + this.animator = anim; + this.visualization = visualization; + this.visualization.setAnimation(this); + } + + private void setNewState(State state) { + currentState = state; + currentStateOperations.clear(); + for (Operation op : state.getEnabledOperations()) { + this.currentStateOperations.put(op.getName(), op); + } + } + + @Override + public void currentStateChanged(State currentState, Operation operation) { + // set new state and remember old state, if possible + setNewState(currentState); + updateCachedExpressions(currentState); + if (currentState.isInitialized()) { + + if (animator == null) { + animator = Animator.getAnimator(); + } + + checkObserver(); + + } + + } + + /** + * Get values for all used expressions. This should speed up the + * communication between ProB's core and Java. The result is not used, just + * to fill the caches. + * + * @param currentState + */ + private void updateCachedExpressions(State currentState) { + try { + EvaluationGetValuesCommand.getValuesForExpressionsCached( + currentState, cachedEvalElements.values()); + } catch (ProBException e) { + // TODO Log this + } + } + + private void collectAllBControls(List<BControl> allBControls, + BControl control) { + + if (control.getChildrenArray().isEmpty()) + return; + + for (BControl bcontrol : control.getChildrenArray()) { + allBControls.add(bcontrol); + collectAllBControls(allBControls, bcontrol); + } + + } + + public void checkObserver() { + if (visualization.isRunning()) { + Display.getDefault().asyncExec(new Runnable() { + @Override + public void run() { + List<BControl> allBControls = new ArrayList<BControl>(); + allBControls.add(visualization); + collectAllBControls(allBControls, visualization); + for (BControl c : allBControls) + c.checkObserver(Animation.this); + } + }); + } + } + + public State getState() { + return currentState; + } + + public Animator getAnimator() { + return animator; + } + + public Operation getCurrentStateOperation(String operation) { + return currentStateOperations.get(operation); + } + + public Visualization getVisualization() { + return this.visualization; + } + + public void unregister() { + StaticListenerRegistry.unregisterListener((IAnimationListener) this); + } + + public void setObserverCallBack(Boolean observerCallBack) { + this.observerCallBack = observerCallBack; + } + + public boolean isObserverCallBack() { + return observerCallBack; + } + + public EvaluationElement getCachedEvalElement(String expressionStr, + boolean isPredicate) throws UnsupportedOperationException, + ProBException, ProBParseException { + final EvaluationElement evalElement; + if (cachedEvalElements.containsKey(expressionStr)) { + evalElement = cachedEvalElements.get(expressionStr); + } else { + // TODO: exception handling ... + evalElement = createPredicateExpressionElement(expressionStr, + isPredicate); + cachedEvalElements.put(expressionStr, evalElement); + } + return evalElement; + } + + private EvaluationElement createPredicateExpressionElement( + String expressionStr, boolean isPredicate) + throws UnsupportedOperationException, ProBException, + ProBParseException { + final EvaluationInsertFormulaCommand.FormulaType type = isPredicate ? FormulaType.PREDICATE + : FormulaType.EXPRESSION; + final EvaluationElement evaluationElement = EvaluationInsertFormulaCommand + .insertFormula(animator, type, expressionStr); + return evaluationElement; + } + + public Map<String, Operation> getCurrentStateOperations() { + return currentStateOperations; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AppContextMenuProvider.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AppContextMenuProvider.java index 1cb2efb1c6e01ee3050551cd3871c79a051cc93b..221e61ab8575c5fd656f01a173c4c8bf4c58ff7b 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AppContextMenuProvider.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AppContextMenuProvider.java @@ -1,311 +1,313 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.Platform; -import org.eclipse.gef.ContextMenuProvider; -import org.eclipse.gef.EditPartViewer; -import org.eclipse.gef.ui.actions.ActionRegistry; -import org.eclipse.gef.ui.actions.GEFActionConstants; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.ui.actions.ActionFactory; - -import de.bmotionstudio.gef.editor.action.SchedulerEventAction; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; -import de.bmotionstudio.gef.editor.part.VisualizationPart; -import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; - -public class AppContextMenuProvider extends ContextMenuProvider { - - private ActionRegistry actionRegistry; - - private IExtensionRegistry registry = Platform.getExtensionRegistry(); - - private String[] eventIDs = { AttributeConstants.EVENT_MOUSECLICK }; - - public AppContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) { - super(viewer); - setActionRegistry(registry); - } - - @Override - public void buildContextMenu(IMenuManager menu) { - - IAction action; - - GEFActionConstants.addStandardActionGroups(menu); - - action = getActionRegistry().getAction(ActionFactory.UNDO.getId()); - menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action); - - action = getActionRegistry().getAction(ActionFactory.REDO.getId()); - menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action); - - action = actionRegistry.getAction(ActionFactory.COPY.getId()); - menu.appendToGroup(GEFActionConstants.GROUP_COPY, action); - - action = actionRegistry.getAction(ActionFactory.PASTE.getId()); - menu.appendToGroup(GEFActionConstants.GROUP_COPY, action); - - action = getActionRegistry().getAction(ActionFactory.DELETE.getId()); - menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action); - - buildCustomMenu(menu); - - buildObserverMenu(menu); - - buildEventMenu(menu); - - } - - private void buildCustomMenu(IMenuManager menu) { - - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.installMenu"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("menu".equals(configurationElement.getName())) { - - try { - - IInstallMenu installMenuClass = (IInstallMenu) configurationElement - .createExecutableExtension("class"); - - installMenuClass.installMenu(menu, getActionRegistry()); - - } catch (final CoreException e) { - e.printStackTrace(); - } - - } - - } - - } - - } - - private void buildObserverMenu(IMenuManager menu) { - - final MenuManager handleObserverMenu = new MenuManager("Observers", - BMotionStudioImage.getImageDescriptor( - BMotionEditorPlugin.PLUGIN_ID, - "icons/icon_observer.gif"), "observerMenu"); - menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleObserverMenu); - - IStructuredSelection selection = (IStructuredSelection) BMotionEditorPlugin - .getActiveEditor().getEditorSite().getSelectionProvider() - .getSelection(); - - if (selection.getFirstElement() instanceof AppAbstractEditPart) { - - BControl bcontrol = (BControl) ((AppAbstractEditPart) selection - .getFirstElement()).getModel(); - - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.observer"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("observer".equals(configurationElement.getName())) { - - final String observerClassName = configurationElement - .getAttribute("class"); - final String observerName = configurationElement - .getAttribute("name"); - - if (checkIncludeObserver(observerClassName, bcontrol)) { - - IAction action = getActionRegistry().getAction( - "de.bmotionstudio.gef.editor.observerAction." - + observerClassName); - action.setText(observerName); - action.setToolTipText(observerName); - - if (bcontrol.hasObserver(observerClassName)) { - action.setImageDescriptor(BMotionStudioImage - .getImageDescriptor( - BMotionEditorPlugin.PLUGIN_ID, - "icons/icon_chop.gif")); - } else { - action.setImageDescriptor(null); - } - handleObserverMenu.add(action); - - } - - } - - } - - } - - } - - } - - private boolean checkIncludeObserver(String observerID, BControl control) { - - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.includeObserver"); - - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("include".equals(configurationElement.getName())) { - - String langID = configurationElement - .getAttribute("language"); - - if (langID.equals(control.getVisualization().getLanguage())) { - - for (IConfigurationElement cObserver : configurationElement - .getChildren("observer")) { - - String oID = cObserver.getAttribute("id"); - - if (observerID.equals(oID)) { - - for (IConfigurationElement configBControl : cObserver - .getChildren("control")) { - - String bID = configBControl - .getAttribute("id"); - - if (control.getType().equals(bID)) { - return true; - } - - } - - } - - } - - } - - } - - } - } - - return false; - - } - - private void buildEventMenu(IMenuManager menu) { - - MenuManager handleEventMenu = new MenuManager("Events", - BMotionStudioImage.getImageDescriptor( - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_event.png"), - "eventMenu"); - menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleEventMenu); - - IStructuredSelection selection = (IStructuredSelection) BMotionEditorPlugin - .getActiveEditor().getEditorSite().getSelectionProvider() - .getSelection(); - - if ((selection.getFirstElement() instanceof AppAbstractEditPart) - && !(selection.getFirstElement() instanceof VisualizationPart)) { - - BControl bcontrol = (BControl) ((AppAbstractEditPart) selection - .getFirstElement()).getModel(); - - // Has event - if (bcontrol.hasEvent(eventIDs[0])) { - - SchedulerEvent event = bcontrol.getEvent(eventIDs[0]); - - SchedulerEventAction action = (SchedulerEventAction) getActionRegistry() - .getAction( - "de.bmotionstudio.gef.editor.SchedulerEventAction." - + event.getID()); - action.setEventID(eventIDs[0]); - action.setText(event.getName()); - action.setImageDescriptor(BMotionStudioImage - .getImageDescriptor(BMotionEditorPlugin.PLUGIN_ID, - "icons/icon_chop.gif")); - handleEventMenu.add(action); - - } else { // Has no event - - IExtensionPoint schedulerExtensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.schedulerEvent"); - for (IExtension schedulerExtension : schedulerExtensionPoint - .getExtensions()) { - for (IConfigurationElement configSchedulerElement : schedulerExtension - .getConfigurationElements()) { - - if ("schedulerEvent".equals(configSchedulerElement - .getName())) { - - String sClassName = configSchedulerElement - .getAttribute("class"); - Boolean show = Boolean - .valueOf(configSchedulerElement - .getAttribute("menu")); - - if (show) { - - SchedulerEventAction action = (SchedulerEventAction) getActionRegistry() - .getAction( - "de.bmotionstudio.gef.editor.SchedulerEventAction." - + sClassName); - action.setEventID(eventIDs[0]); - action.setText(configSchedulerElement - .getAttribute("name")); - - // if (bcontrol.hasEvent(eventIDs[0])) { - // action - // .setImageDescriptor(BMotionStudioImage - // .getImageDescriptor( - // BMotionEditorPlugin.PLUGIN_ID, - // "icons/icon_chop.gif")); - // } else { - - action.setImageDescriptor(null); - - // } - - handleEventMenu.add(action); - - } - - } - - } - - } - - } - - } - - } - - private ActionRegistry getActionRegistry() { - return actionRegistry; - } - - private void setActionRegistry(ActionRegistry registry) { - actionRegistry = registry; - } - +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.Platform; +import org.eclipse.gef.ContextMenuProvider; +import org.eclipse.gef.EditPartViewer; +import org.eclipse.gef.ui.actions.ActionRegistry; +import org.eclipse.gef.ui.actions.GEFActionConstants; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.actions.ActionFactory; + +import de.bmotionstudio.gef.editor.action.OpenSchedulerEventAction; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.VisualizationPart; +import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; + +public class AppContextMenuProvider extends ContextMenuProvider { + + private ActionRegistry actionRegistry; + + private IExtensionRegistry registry = Platform.getExtensionRegistry(); + + private String[] eventIDs = { AttributeConstants.EVENT_MOUSECLICK }; + + public AppContextMenuProvider(EditPartViewer viewer, ActionRegistry registry) { + super(viewer); + setActionRegistry(registry); + } + + @Override + public void buildContextMenu(IMenuManager menu) { + + IAction action; + + GEFActionConstants.addStandardActionGroups(menu); + + action = getActionRegistry().getAction(ActionFactory.UNDO.getId()); + menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action); + + action = getActionRegistry().getAction(ActionFactory.REDO.getId()); + menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action); + + action = actionRegistry.getAction(ActionFactory.COPY.getId()); + menu.appendToGroup(GEFActionConstants.GROUP_COPY, action); + + action = actionRegistry.getAction(ActionFactory.PASTE.getId()); + menu.appendToGroup(GEFActionConstants.GROUP_COPY, action); + + action = getActionRegistry().getAction(ActionFactory.DELETE.getId()); + menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action); + + buildCustomMenu(menu); + + buildObserverMenu(menu); + + buildEventMenu(menu); + + } + + private void buildCustomMenu(IMenuManager menu) { + + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.installMenu"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("menu".equals(configurationElement.getName())) { + + try { + + IInstallMenu installMenuClass = (IInstallMenu) configurationElement + .createExecutableExtension("class"); + + installMenuClass.installMenu(menu, getActionRegistry()); + + } catch (final CoreException e) { + e.printStackTrace(); + } + + } + + } + + } + + } + + private void buildObserverMenu(IMenuManager menu) { + + final MenuManager handleObserverMenu = new MenuManager("Observers", + BMotionStudioImage.getImageDescriptor( + BMotionEditorPlugin.PLUGIN_ID, + "icons/icon_observer.gif"), "observerMenu"); + menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleObserverMenu); + + IStructuredSelection selection = (IStructuredSelection) BMotionEditorPlugin + .getActiveEditor().getEditorSite().getSelectionProvider() + .getSelection(); + + if (selection.getFirstElement() instanceof AppAbstractEditPart) { + + BControl bcontrol = (BControl) ((AppAbstractEditPart) selection + .getFirstElement()).getModel(); + + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.observer"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("observer".equals(configurationElement.getName())) { + + final String observerClassName = configurationElement + .getAttribute("class"); + final String observerName = configurationElement + .getAttribute("name"); + + if (checkIncludeObserver(observerClassName, bcontrol)) { + + IAction action = getActionRegistry().getAction( + "de.bmotionstudio.gef.editor.observerAction." + + observerClassName); + action.setText(observerName); + action.setToolTipText(observerName); + + if (bcontrol.hasObserver(observerClassName)) { + action.setImageDescriptor(BMotionStudioImage + .getImageDescriptor( + BMotionEditorPlugin.PLUGIN_ID, + "icons/icon_chop.gif")); + } else { + action.setImageDescriptor(null); + } + handleObserverMenu.add(action); + + } + + } + + } + + } + + } + + } + + private boolean checkIncludeObserver(String observerID, BControl control) { + + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.includeObserver"); + + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("include".equals(configurationElement.getName())) { + + String langID = configurationElement + .getAttribute("language"); + + if (langID != null + && langID.equals(control.getVisualization() + .getLanguage())) { + + for (IConfigurationElement cObserver : configurationElement + .getChildren("observer")) { + + String oID = cObserver.getAttribute("id"); + + if (observerID.equals(oID)) { + + for (IConfigurationElement configBControl : cObserver + .getChildren("control")) { + + String bID = configBControl + .getAttribute("id"); + + if (control.getType().equals(bID)) { + return true; + } + + } + + } + + } + + } + + } + + } + } + + return false; + + } + + private void buildEventMenu(IMenuManager menu) { + + MenuManager handleEventMenu = new MenuManager("Events", + BMotionStudioImage.getImageDescriptor( + BMotionEditorPlugin.PLUGIN_ID, "icons/icon_event.png"), + "eventMenu"); + menu.appendToGroup(GEFActionConstants.GROUP_ADD, handleEventMenu); + + IStructuredSelection selection = (IStructuredSelection) BMotionEditorPlugin + .getActiveEditor().getEditorSite().getSelectionProvider() + .getSelection(); + + if ((selection.getFirstElement() instanceof AppAbstractEditPart) + && !(selection.getFirstElement() instanceof VisualizationPart)) { + + BControl bcontrol = (BControl) ((AppAbstractEditPart) selection + .getFirstElement()).getModel(); + + // Has event + if (bcontrol.hasEvent(eventIDs[0])) { + + SchedulerEvent event = bcontrol.getEvent(eventIDs[0]); + + OpenSchedulerEventAction action = (OpenSchedulerEventAction) getActionRegistry() + .getAction( + "de.bmotionstudio.gef.editor.SchedulerEventAction." + + event.getID()); + action.setEventID(eventIDs[0]); + action.setText(event.getName()); + action.setImageDescriptor(BMotionStudioImage + .getImageDescriptor(BMotionEditorPlugin.PLUGIN_ID, + "icons/icon_chop.gif")); + handleEventMenu.add(action); + + } else { // Has no event + + IExtensionPoint schedulerExtensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.schedulerEvent"); + for (IExtension schedulerExtension : schedulerExtensionPoint + .getExtensions()) { + for (IConfigurationElement configSchedulerElement : schedulerExtension + .getConfigurationElements()) { + + if ("schedulerEvent".equals(configSchedulerElement + .getName())) { + + String sClassName = configSchedulerElement + .getAttribute("class"); + Boolean show = Boolean + .valueOf(configSchedulerElement + .getAttribute("menu")); + + if (show) { + + OpenSchedulerEventAction action = (OpenSchedulerEventAction) getActionRegistry() + .getAction( + "de.bmotionstudio.gef.editor.SchedulerEventAction." + + sClassName); + action.setEventID(eventIDs[0]); + action.setText(configSchedulerElement + .getAttribute("name")); + + // if (bcontrol.hasEvent(eventIDs[0])) { + // action + // .setImageDescriptor(BMotionStudioImage + // .getImageDescriptor( + // BMotionEditorPlugin.PLUGIN_ID, + // "icons/icon_chop.gif")); + // } else { + + action.setImageDescriptor(null); + + // } + + handleEventMenu.add(action); + + } + + } + + } + + } + + } + + } + + } + + private ActionRegistry getActionRegistry() { + return actionRegistry; + } + + private void setActionRegistry(ActionRegistry registry) { + actionRegistry = registry; + } + } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AttributeConstants.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AttributeConstants.java index 5fb0bfdd4b5195d6a1f2c6666ced65362a3911e3..56ddf9afb27f53172c11eb238f659cb74684dda4 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AttributeConstants.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/AttributeConstants.java @@ -1,60 +1,58 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -public final class AttributeConstants { - - public static final String ATTRIBUTE_X = "de.bmotionstudio.gef.editor.attribute.BAttributeX"; - public static final String ATTRIBUTE_Y = "de.bmotionstudio.gef.editor.attribute.BAttributeY"; - public static final String ATTRIBUTE_WIDTH = "de.bmotionstudio.gef.editor.attribute.BAttributeWidth"; - public static final String ATTRIBUTE_HEIGHT = "de.bmotionstudio.gef.editor.attribute.BAttributeHeight"; - public static final String ATTRIBUTE_CUSTOM = "de.bmotionstudio.gef.editor.attribute.BAttributeCustom"; - public static final String ATTRIBUTE_ID = "de.bmotionstudio.gef.editor.attribute.BAttributeID"; - public static final String ATTRIBUTE_VISIBLE = "de.bmotionstudio.gef.editor.attribute.BAttributeVisible"; - - public static final String ATTRIBUTE_BACKGROUND_IMAGE = "de.bmotionstudio.gef.editor.attribute.BAttributeImage"; - public static final String ATTRIBUTE_BACKGROUND_COLOR = "de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor"; - public static final String ATTRIBUTE_FOREGROUND_COLOR = "de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor"; - public static final String ATTRIBUTE_BACKGROUND_VISIBLE = "de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible"; - public static final String ATTRIBUTE_IMAGE = "de.bmotionstudio.gef.editor.attribute.BAttributeImage"; - public static final String ATTRIBUTE_TEXT = "de.bmotionstudio.gef.editor.attribute.BAttributeText"; - public static final String ATTRIBUTE_TEXT_COLOR = "de.bmotionstudio.gef.editor.attribute.BAttributeTextColor"; - public static final String ATTRIBUTE_FILL_HEIGHT = "de.bmotionstudio.gef.editor.attribute.BAttributeFillHeight"; - public static final String ATTRIBUTE_FILL_COLOR = "de.bmotionstudio.gef.editor.attribute.BAttributeFillColor"; - public static final String ATTRIBUTE_SHOWS_MEASURE = "de.bmotionstudio.gef.editor.attribute.BAttributeShowMeasure"; - public static final String ATTRIBUTE_MEASURE_MAXPOS = "de.bmotionstudio.gef.editor.attribute.BAttributeMeasureMaxPos"; - public static final String ATTRIBUTE_MEASURE_INTERVAL = "de.bmotionstudio.gef.editor.attribute.BAttributeMeasureInterval"; - public static final String ATTRIBUTE_ALPHA = "de.bmotionstudio.gef.editor.attribute.BAttributeAlpha"; - public static final String ATTRIBUTE_OUTLINEALPHA = "de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha"; - public static final String ATTRIBUTE_FONT = "de.bmotionstudio.gef.editor.attribute.BAttributeFont"; - public static final String ATTRIBUTE_ENABLED = "de.bmotionstudio.gef.editor.attribute.BAttributeEnabled"; - public static final String ATTRIBUTE_CHECKED = "de.bmotionstudio.gef.editor.attribute.BAttributeChecked"; - public static final String ATTRIBUTE_VALUE = "de.bmotionstudio.gef.editor.attribute.BAttributeValue"; - public static final String ATTRIBUTE_BUTTONGROUP = "de.bmotionstudio.gef.editor.attribute.BAttributeButtonGroup"; - public static final String ATTRIBUTE_SHAPE = "de.bmotionstudio.gef.editor.attribute.BAttributeShape"; - public static final String ATTRIBUTE_ORIENTATION = "de.bmotionstudio.gef.editor.attribute.BAttributeOrientation"; - public static final String ATTRIBUTE_DIRECTION = "de.bmotionstudio.gef.editor.attribute.BAttributeDirection"; - public static final String ATTRIBUTE_FILLTYPE = "de.bmotionstudio.gef.editor.attribute.BAttributeFillType"; - public static final String ATTRIBUTE_LINEWIDTH = "de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth"; - public static final String ATTRIBUTE_LINESTYLE = "de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle"; - public static final String ATTRIBUTE_TRUEVALUE = "de.bmotionstudio.gef.editor.attribute.BAttributeTrueValue"; - public static final String ATTRIBUTE_FALSEVALUE = "de.bmotionstudio.gef.editor.attribute.BAttributeFalseValue"; - public static final String ATTRIBUTE_LABEL = "de.bmotionstudio.gef.editor.attribute.BAttributeLabel"; - public static final String ATTRIBUTE_OFFSET_H = "de.bmotionstudio.gef.editor.attribute.BAttributeOffsetH"; - public static final String ATTRIBUTE_OFFSET_V = "de.bmotionstudio.gef.editor.attribute.BAttributeOffsetV"; - public static final String ATTRIBUTE_CONNECTION_SOURCE_DECORATION = "de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration"; - public static final String ATTRIBUTE_CONNECTION_TARGET_DECORATION = "de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration"; - - public static final String ATTRIBUTE_SIZE = "de.bmotionstudio.gef.editor.attribute.BAttributeSize"; - public static final String ATTRIBUTE_COORDINATES = "de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates"; - public static final String ATTRIBUTE_MISC = "de.bmotionstudio.gef.editor.attribute.BAttributeMisc"; - public static final String ATTRIBUTE_MAIN = "de.bmotionstudio.gef.editor.attribute.BAttributeMain"; - - public static final String EVENT_MOUSECLICK = "de.bmotionstudio.gef.editor.event.OnClickEvent"; - public static final String EVENT_MOUSEDBLCLICK = "de.bmotionstudio.gef.editor.event.OnDblClickEvent"; - +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +public final class AttributeConstants { + + public static final String ATTRIBUTE_X = "de.bmotionstudio.gef.editor.attribute.BAttributeX"; + public static final String ATTRIBUTE_Y = "de.bmotionstudio.gef.editor.attribute.BAttributeY"; + public static final String ATTRIBUTE_WIDTH = "de.bmotionstudio.gef.editor.attribute.BAttributeWidth"; + public static final String ATTRIBUTE_HEIGHT = "de.bmotionstudio.gef.editor.attribute.BAttributeHeight"; + public static final String ATTRIBUTE_CUSTOM = "de.bmotionstudio.gef.editor.attribute.BAttributeCustom"; + public static final String ATTRIBUTE_ID = "de.bmotionstudio.gef.editor.attribute.BAttributeID"; + public static final String ATTRIBUTE_VISIBLE = "de.bmotionstudio.gef.editor.attribute.BAttributeVisible"; + + public static final String ATTRIBUTE_COLUMNS = "de.bmotionstudio.gef.editor.attribute.BAttributeColumns"; + public static final String ATTRIBUTE_ROWS = "de.bmotionstudio.gef.editor.attribute.BAttributeRows"; + + public static final String ATTRIBUTE_BACKGROUND_IMAGE = "de.bmotionstudio.gef.editor.attribute.BAttributeImage"; + public static final String ATTRIBUTE_BACKGROUND_COLOR = "de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor"; + public static final String ATTRIBUTE_FOREGROUND_COLOR = "de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor"; + public static final String ATTRIBUTE_BACKGROUND_VISIBLE = "de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundVisible"; + public static final String ATTRIBUTE_IMAGE = "de.bmotionstudio.gef.editor.attribute.BAttributeImage"; + public static final String ATTRIBUTE_TEXT = "de.bmotionstudio.gef.editor.attribute.BAttributeText"; + public static final String ATTRIBUTE_TEXT_COLOR = "de.bmotionstudio.gef.editor.attribute.BAttributeTextColor"; + public static final String ATTRIBUTE_ALPHA = "de.bmotionstudio.gef.editor.attribute.BAttributeAlpha"; + public static final String ATTRIBUTE_OUTLINEALPHA = "de.bmotionstudio.gef.editor.attribute.BAttributeOutlineAlpha"; + public static final String ATTRIBUTE_FONT = "de.bmotionstudio.gef.editor.attribute.BAttributeFont"; + public static final String ATTRIBUTE_ENABLED = "de.bmotionstudio.gef.editor.attribute.BAttributeEnabled"; + public static final String ATTRIBUTE_CHECKED = "de.bmotionstudio.gef.editor.attribute.BAttributeChecked"; + public static final String ATTRIBUTE_VALUE = "de.bmotionstudio.gef.editor.attribute.BAttributeValue"; + public static final String ATTRIBUTE_BUTTONGROUP = "de.bmotionstudio.gef.editor.attribute.BAttributeButtonGroup"; + public static final String ATTRIBUTE_SHAPE = "de.bmotionstudio.gef.editor.attribute.BAttributeShape"; + public static final String ATTRIBUTE_ORIENTATION = "de.bmotionstudio.gef.editor.attribute.BAttributeOrientation"; + public static final String ATTRIBUTE_DIRECTION = "de.bmotionstudio.gef.editor.attribute.BAttributeDirection"; + public static final String ATTRIBUTE_FILLTYPE = "de.bmotionstudio.gef.editor.attribute.BAttributeFillType"; + public static final String ATTRIBUTE_LINEWIDTH = "de.bmotionstudio.gef.editor.attribute.BAttributeLineWidth"; + public static final String ATTRIBUTE_LINESTYLE = "de.bmotionstudio.gef.editor.attribute.BAttributeLineStyle"; + public static final String ATTRIBUTE_TRUEVALUE = "de.bmotionstudio.gef.editor.attribute.BAttributeTrueValue"; + public static final String ATTRIBUTE_FALSEVALUE = "de.bmotionstudio.gef.editor.attribute.BAttributeFalseValue"; + public static final String ATTRIBUTE_LABEL = "de.bmotionstudio.gef.editor.attribute.BAttributeLabel"; + public static final String ATTRIBUTE_OFFSET_H = "de.bmotionstudio.gef.editor.attribute.BAttributeOffsetH"; + public static final String ATTRIBUTE_OFFSET_V = "de.bmotionstudio.gef.editor.attribute.BAttributeOffsetV"; + public static final String ATTRIBUTE_CONNECTION_SOURCE_DECORATION = "de.bmotionstudio.gef.editor.attribute.BAttributeConnectionSourceDecoration"; + public static final String ATTRIBUTE_CONNECTION_TARGET_DECORATION = "de.bmotionstudio.gef.editor.attribute.BAttributeConnectionTargetDecoration"; + + public static final String ATTRIBUTE_SIZE = "de.bmotionstudio.gef.editor.attribute.BAttributeSize"; + public static final String ATTRIBUTE_COORDINATES = "de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates"; + public static final String ATTRIBUTE_MISC = "de.bmotionstudio.gef.editor.attribute.BAttributeMisc"; + public static final String ATTRIBUTE_MAIN = "de.bmotionstudio.gef.editor.attribute.BAttributeMain"; + + public static final String EVENT_MOUSECLICK = "de.bmotionstudio.gef.editor.event.OnClickEvent"; + public static final String EVENT_MOUSEDBLCLICK = "de.bmotionstudio.gef.editor.event.OnDblClickEvent"; + } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BControlCreationFactory.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BControlCreationFactory.java index f94182dcb703ac07236ce66209167035b84edd4c..50024a585311ccce269679ea639f4d451b5ed159 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BControlCreationFactory.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BControlCreationFactory.java @@ -1,45 +1,45 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.gef.requests.CreationFactory; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.Visualization; - -public class BControlCreationFactory implements CreationFactory { - - private Visualization visualization; - private String type; - - public BControlCreationFactory(String type, Visualization visualization) { - this.type = type; - this.visualization = visualization; - } - - @Override - public Object getNewObject() { - BControl control = null; - try { - IBControlService service = (IBControlService) BMotionEditorPlugin - .getControlServices().get(type) - .createExecutableExtension("service"); - control = service.createControl(visualization); - } catch (CoreException e) { - e.printStackTrace(); - } - // TODO: check if control == null - return control; - } - - @Override - public Object getObjectType() { - return BControl.class; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.gef.requests.CreationFactory; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.Visualization; + +public class BControlCreationFactory implements CreationFactory { + + private Visualization visualization; + private String type; + + public BControlCreationFactory(String type, Visualization visualization) { + this.type = type; + this.visualization = visualization; + } + + @Override + public Object getNewObject() { + BControl control = null; + try { + IBControlService service = (IBControlService) BMotionEditorPlugin + .getControlServices().get(type) + .createExecutableExtension("service"); + control = service.createControl(visualization); + } catch (CoreException e) { + e.printStackTrace(); + } + // TODO: check if control == null + return control; + } + + @Override + public Object getObjectType() { + return BControl.class; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java new file mode 100644 index 0000000000000000000000000000000000000000..b4524f4a38388e7cd806f2b95971b189fe425b33 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionAbstractWizard.java @@ -0,0 +1,34 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import org.eclipse.jface.wizard.Wizard; + +import de.bmotionstudio.gef.editor.model.BControl; + +public abstract class BMotionAbstractWizard extends Wizard { + + private BControl control; + + public BMotionAbstractWizard(BControl control) { + this.control = control; + } + + @Override + public boolean performFinish() { + return prepareToFinish(); + } + + public BControl getBControl() { + return this.control; + } + + public abstract String getName(); + + protected abstract Boolean prepareToFinish(); + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionEditorPlugin.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionEditorPlugin.java index 554ef61e747e60b621229afe145c0082055a7c25..471fb40d71ffa52e5d42c6ab6994b7b4518d6ff8 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionEditorPlugin.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionEditorPlugin.java @@ -1,221 +1,221 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import java.util.ArrayList; -import java.util.HashMap; - -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; - -import com.thoughtworks.xstream.XStream; - -import de.bmotionstudio.gef.editor.internal.BControlListConverter; -import de.bmotionstudio.gef.editor.model.BConnection; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.BControlList; -import de.bmotionstudio.gef.editor.model.BMotionGuide; -import de.bmotionstudio.gef.editor.model.Visualization; - -/** - * The activator class controls the plug-in life cycle - */ -public class BMotionEditorPlugin extends AbstractUIPlugin { - - // The plug-in ID - public static final String PLUGIN_ID = "de.bmotionstudio.gef.editor"; - - public static final String FILEEXT_STUDIO = "bmso"; - - // The shared instance - private static BMotionEditorPlugin plugin; - - private static HashMap<String, IConfigurationElement> controlExtensions = new HashMap<String, IConfigurationElement>(); - - private static HashMap<String, IConfigurationElement> observerExtensions = new HashMap<String, IConfigurationElement>(); - - private static HashMap<String, IConfigurationElement> schedulerExtensions = new HashMap<String, IConfigurationElement>(); - - private static HashMap<String, IConfigurationElement> controlServices = new HashMap<String, IConfigurationElement>(); - - IExtensionRegistry registry = Platform.getExtensionRegistry(); - - static BMotionStudioEditorPage activeBMotionStudioEditor = null; - - /** - * The constructor - */ - public BMotionEditorPlugin() { - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext - * ) - */ - @Override - public void start(final BundleContext context) throws Exception { - super.start(context); - plugin = this; - initExtensionClasses(); - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext - * ) - */ - @Override - public void stop(final BundleContext context) throws Exception { - plugin = null; - super.stop(context); - } - - /** - * Returns the shared instance - * - * @return the shared instance - */ - public static BMotionEditorPlugin getDefault() { - return plugin; - } - - /** - * Returns an image descriptor for the image file at the given plug-in - * relative path - * - * @param path - * the path - * @return the image descriptor - */ - public static ImageDescriptor getImageDescriptor(final String path) { - return imageDescriptorFromPlugin(PLUGIN_ID, path); - } - - /** - * Get the active workbench page. - * - * @return current active workbench page - */ - public static IWorkbenchPage getActivePage() { - return getDefault().internalGetActivePage(); - } - - /** - * Get the active editor. - * - * @return current active editor - */ - public static BMotionStudioEditor getActiveEditor() { - if (getActivePage() != null) { - if (getActivePage().getActiveEditor() instanceof BMotionStudioEditor) - return (BMotionStudioEditor) getActivePage().getActiveEditor(); - } - return null; - } - - /** - * Getting the current active page from the active workbench window. - * <p> - * - * @return current active workbench page - */ - private IWorkbenchPage internalGetActivePage() { - return getWorkbench().getActiveWorkbenchWindow().getActivePage(); - } - - private void initExtensionClass(String extensionPointID, - ArrayList<String> elementIDs, String getAttribute, - HashMap<String, IConfigurationElement> hashMap) { - - IExtensionPoint extensionPoint = registry - .getExtensionPoint(extensionPointID); - for (IExtension extension : extensionPoint.getExtensions()) { - - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if (elementIDs.contains(configurationElement.getName())) { - - String atr = configurationElement - .getAttribute(getAttribute); - - hashMap.put(atr, configurationElement); - - } - - } - - } - - } - - private void initExtensionClasses() { - - ArrayList<String> elementIDs = new ArrayList<String>(); - elementIDs.add("control"); - initExtensionClass("de.bmotionstudio.gef.editor.control", elementIDs, - "id", controlExtensions); - - elementIDs.clear(); - elementIDs.add("control"); - initExtensionClass("de.bmotionstudio.gef.editor.control", elementIDs, - "id", controlServices); - - elementIDs.clear(); - elementIDs.add("observer"); - initExtensionClass("de.bmotionstudio.gef.editor.observer", elementIDs, - "class", observerExtensions); - - elementIDs.clear(); - elementIDs.add("schedulerEvent"); - initExtensionClass("de.bmotionstudio.gef.editor.schedulerEvent", - elementIDs, "class", schedulerExtensions); - - } - - public static IConfigurationElement getControlExtension(String ident) { - return controlExtensions.get(ident); - } - - public static IConfigurationElement getObserverExtension(String ident) { - return observerExtensions.get(ident); - } - - public static IConfigurationElement getSchedulerExtension(String ident) { - return schedulerExtensions.get(ident); - } - - public static HashMap<String, IConfigurationElement> getSchedulerExtensions() { - return schedulerExtensions; - } - - public static HashMap<String, IConfigurationElement> getControlServices() { - return controlServices; - } - - public static void setAliases(XStream xstream) { - xstream.registerConverter(new BControlListConverter()); - xstream.alias("control", BControl.class); - xstream.alias("visualization", Visualization.class); - xstream.alias("guide", BMotionGuide.class); - xstream.alias("connection", BConnection.class); - xstream.alias("children", BControlList.class); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +import com.thoughtworks.xstream.XStream; + +import de.bmotionstudio.gef.editor.internal.BControlListConverter; +import de.bmotionstudio.gef.editor.model.BConnection; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BControlList; +import de.bmotionstudio.gef.editor.model.BMotionGuide; +import de.bmotionstudio.gef.editor.model.Visualization; + +/** + * The activator class controls the plug-in life cycle + */ +public class BMotionEditorPlugin extends AbstractUIPlugin { + + // The plug-in ID + public static final String PLUGIN_ID = "de.bmotionstudio.gef.editor"; + + public static final String FILEEXT_STUDIO = "bmso"; + + // The shared instance + private static BMotionEditorPlugin plugin; + + private static HashMap<String, IConfigurationElement> controlExtensions = new HashMap<String, IConfigurationElement>(); + + private static HashMap<String, IConfigurationElement> observerExtensions = new HashMap<String, IConfigurationElement>(); + + private static HashMap<String, IConfigurationElement> schedulerExtensions = new HashMap<String, IConfigurationElement>(); + + private static HashMap<String, IConfigurationElement> controlServices = new HashMap<String, IConfigurationElement>(); + + IExtensionRegistry registry = Platform.getExtensionRegistry(); + + static BMotionStudioEditorPage activeBMotionStudioEditor = null; + + /** + * The constructor + */ + public BMotionEditorPlugin() { + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext + * ) + */ + @Override + public void start(final BundleContext context) throws Exception { + super.start(context); + plugin = this; + initExtensionClasses(); + } + + /* + * (non-Javadoc) + * + * @see + * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext + * ) + */ + @Override + public void stop(final BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static BMotionEditorPlugin getDefault() { + return plugin; + } + + /** + * Returns an image descriptor for the image file at the given plug-in + * relative path + * + * @param path + * the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(final String path) { + return imageDescriptorFromPlugin(PLUGIN_ID, path); + } + + /** + * Get the active workbench page. + * + * @return current active workbench page + */ + public static IWorkbenchPage getActivePage() { + return getDefault().internalGetActivePage(); + } + + /** + * Get the active editor. + * + * @return current active editor + */ + public static BMotionStudioEditor getActiveEditor() { + if (getActivePage() != null) { + if (getActivePage().getActiveEditor() instanceof BMotionStudioEditor) + return (BMotionStudioEditor) getActivePage().getActiveEditor(); + } + return null; + } + + /** + * Getting the current active page from the active workbench window. + * <p> + * + * @return current active workbench page + */ + private IWorkbenchPage internalGetActivePage() { + return getWorkbench().getActiveWorkbenchWindow().getActivePage(); + } + + private void initExtensionClass(String extensionPointID, + ArrayList<String> elementIDs, String getAttribute, + HashMap<String, IConfigurationElement> hashMap) { + + IExtensionPoint extensionPoint = registry + .getExtensionPoint(extensionPointID); + for (IExtension extension : extensionPoint.getExtensions()) { + + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if (elementIDs.contains(configurationElement.getName())) { + + String atr = configurationElement + .getAttribute(getAttribute); + + hashMap.put(atr, configurationElement); + + } + + } + + } + + } + + private void initExtensionClasses() { + + ArrayList<String> elementIDs = new ArrayList<String>(); + elementIDs.add("control"); + initExtensionClass("de.bmotionstudio.gef.editor.control", elementIDs, + "id", controlExtensions); + + elementIDs.clear(); + elementIDs.add("control"); + initExtensionClass("de.bmotionstudio.gef.editor.control", elementIDs, + "id", controlServices); + + elementIDs.clear(); + elementIDs.add("observer"); + initExtensionClass("de.bmotionstudio.gef.editor.observer", elementIDs, + "class", observerExtensions); + + elementIDs.clear(); + elementIDs.add("schedulerEvent"); + initExtensionClass("de.bmotionstudio.gef.editor.schedulerEvent", + elementIDs, "class", schedulerExtensions); + + } + + public static IConfigurationElement getControlExtension(String ident) { + return controlExtensions.get(ident); + } + + public static IConfigurationElement getObserverExtension(String ident) { + return observerExtensions.get(ident); + } + + public static IConfigurationElement getSchedulerExtension(String ident) { + return schedulerExtensions.get(ident); + } + + public static HashMap<String, IConfigurationElement> getSchedulerExtensions() { + return schedulerExtensions; + } + + public static HashMap<String, IConfigurationElement> getControlServices() { + return controlServices; + } + + public static void setAliases(XStream xstream) { + xstream.registerConverter(new BControlListConverter()); + xstream.alias("control", BControl.class); + xstream.alias("visualization", Visualization.class); + xstream.alias("guide", BMotionGuide.class); + xstream.alias("connection", BConnection.class); + xstream.alias("children", BControlList.class); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditor.java index aea1df6d56a4a9813ebfe1dafb4608409a6faeda..2d5013b10dc8c12cb1449236c5f642b195fd85ca 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditor.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditor.java @@ -36,7 +36,6 @@ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.mapper.MapperWrapper; import de.bmotionstudio.gef.editor.animation.StaticListenerRegistry; -import de.bmotionstudio.gef.editor.internal.Animation; import de.bmotionstudio.gef.editor.internal.BMSConverter512; import de.bmotionstudio.gef.editor.model.Visualization; import de.prob.core.ILifecycleListener; diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java index 3caccfa2fa3e71f4136f9672be62a451150ecf89..6fb06c9db4e6fee602bb85500ddfb0720370fbfb 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioEditorPage.java @@ -1,810 +1,839 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.util.ArrayList; -import java.util.EventObject; -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Platform; -import org.eclipse.draw2d.FigureCanvas; -import org.eclipse.draw2d.LightweightSystem; -import org.eclipse.draw2d.PositionConstants; -import org.eclipse.draw2d.Viewport; -import org.eclipse.draw2d.parts.ScrollableThumbnail; -import org.eclipse.gef.ContextMenuProvider; -import org.eclipse.gef.DefaultEditDomain; -import org.eclipse.gef.KeyHandler; -import org.eclipse.gef.KeyStroke; -import org.eclipse.gef.LayerConstants; -import org.eclipse.gef.MouseWheelHandler; -import org.eclipse.gef.MouseWheelZoomHandler; -import org.eclipse.gef.SnapToGeometry; -import org.eclipse.gef.SnapToGrid; -import org.eclipse.gef.commands.CommandStack; -import org.eclipse.gef.commands.CommandStackListener; -import org.eclipse.gef.dnd.TemplateTransferDragSourceListener; -import org.eclipse.gef.editparts.ScalableRootEditPart; -import org.eclipse.gef.editparts.ZoomManager; -import org.eclipse.gef.palette.PaletteRoot; -import org.eclipse.gef.rulers.RulerProvider; -import org.eclipse.gef.ui.actions.ActionRegistry; -import org.eclipse.gef.ui.actions.GEFActionConstants; -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.gef.ui.actions.ToggleGridAction; -import org.eclipse.gef.ui.actions.ToggleRulerVisibilityAction; -import org.eclipse.gef.ui.actions.ToggleSnapToGeometryAction; -import org.eclipse.gef.ui.actions.ZoomInAction; -import org.eclipse.gef.ui.actions.ZoomOutAction; -import org.eclipse.gef.ui.palette.FlyoutPaletteComposite; -import org.eclipse.gef.ui.palette.PaletteViewer; -import org.eclipse.gef.ui.palette.PaletteViewerProvider; -import org.eclipse.gef.ui.parts.ContentOutlinePage; -import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette; -import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler; -import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer; -import org.eclipse.gef.ui.parts.SelectionSynchronizer; -import org.eclipse.gef.ui.parts.TreeViewer; -import org.eclipse.gef.ui.rulers.RulerComposite; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeItem; -import org.eclipse.ui.IActionBars; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IEditorSite; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.actions.ActionFactory; -import org.eclipse.ui.part.IPageSite; -import org.eclipse.ui.views.contentoutline.IContentOutlinePage; -import org.eclipse.ui.views.properties.IPropertySheetPage; - -import com.thoughtworks.xstream.XStream; - -import de.bmotionstudio.gef.editor.action.CopyAction; -import de.bmotionstudio.gef.editor.action.ObserverAction; -import de.bmotionstudio.gef.editor.action.PasteAction; -import de.bmotionstudio.gef.editor.action.SchedulerEventAction; -import de.bmotionstudio.gef.editor.internal.BControlTransferDropTargetListener; -import de.bmotionstudio.gef.editor.library.AttributeTransferDropTargetListener; -import de.bmotionstudio.gef.editor.model.BMotionRuler; -import de.bmotionstudio.gef.editor.model.BMotionRulerProvider; -import de.bmotionstudio.gef.editor.model.Visualization; -import de.bmotionstudio.gef.editor.part.AppEditPartFactory; -import de.bmotionstudio.gef.editor.part.AppTreeEditPartFactory; - -public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette { - - public final static String ID = "de.bmotionstudio.gef.editor"; - - private boolean isDirty; - - private KeyHandler sharedKeyHandler; - - private Visualization visualization; - - private RulerComposite rulerComp; - - // private BControl editArea; - - private BMotionStudioEditor bmotionStudioEditor; - - private BMotionSelectionSynchronizer bmotionSelectionSynchronizer; - - /** Palette component, holding the tools and b-controls. */ - private PaletteRoot palette; - - public BMotionStudioEditorPage(Visualization visualization, - BMotionStudioEditor bmotionStudioEditor) { - this.visualization = visualization; - this.bmotionStudioEditor = bmotionStudioEditor; - setEditDomain(new DefaultEditDomain(this)); - } - - @Override - public void selectionChanged(IWorkbenchPart part, ISelection selection) { - // If not the active editor, ignore selection changed. - if (getBMotionStudioEditor().equals( - getSite().getPage().getActiveEditor())) - updateActions(getSelectionActions()); - } - - /** - * @see org.eclipse.ui.IEditorPart#init(IEditorSite, IEditorInput) - **/ - public void init(IEditorSite iSite, IEditorInput iInput) - throws PartInitException { - super.init(iSite, iInput); - setSite(iSite); - // add CommandStackListener - getCommandStack().addCommandStackListener(getCommandStackListener()); - } - - /** - * @see org.eclipse.gef.ui.parts.GraphicalEditor#initializeGraphicalViewer() - **/ - protected void initializeGraphicalViewer() { - - super.initializeGraphicalViewer(); - - getGraphicalViewer().setContents(getVisualization()); - - getGraphicalViewer().addDropTargetListener( - new BControlTransferDropTargetListener(getGraphicalViewer(), - visualization)); - getGraphicalViewer().addDropTargetListener( - new AttributeTransferDropTargetListener(getGraphicalViewer(), - getSite().getPart())); - - getPalettePreferences().setPaletteState( - FlyoutPaletteComposite.STATE_PINNED_OPEN); - - } - - @Override - protected PaletteViewerProvider createPaletteViewerProvider() { - return new PaletteViewerProvider(getEditDomain()) { - protected void configurePaletteViewer(PaletteViewer viewer) { - super.configurePaletteViewer(viewer); - viewer.addDragSourceListener(new TemplateTransferDragSourceListener( - viewer)); - } - - protected void hookPaletteViewer(PaletteViewer viewer) { - super.hookPaletteViewer(viewer); - } - }; - } - - /** - * @see org.eclipse.ui.IEditorPart#isSaveAsAllowed() - **/ - public boolean isSaveAsAllowed() { - return true; - } - - /** - * Creates an appropriate output stream and writes the activity diagram out - * to this stream. - * - * @param os - * the base output stream - * @throws IOException - */ - protected void createOutputStream(OutputStream os) throws IOException { - OutputStreamWriter writer = new OutputStreamWriter(os, "UTF8"); - XStream xstream = new XStream(); - BMotionEditorPlugin.setAliases(xstream); - xstream.toXML(visualization, writer); - } - - /** - * @see org.eclipse.ui.IEditorPart#doSave(IProgressMonitor) - **/ - public void doSave(IProgressMonitor iMonitor) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - try { - saveProperties(); - createOutputStream(out); - IFile file = ((IFileEditorInput) getEditorInput()).getFile(); - file.setContents(new ByteArrayInputStream(out.toByteArray()), true, - false, iMonitor); - getCommandStack().markSaveLocation(); - } catch (CoreException ce) { - ce.printStackTrace(); - } catch (IOException ioe) { - ioe.printStackTrace(); - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.IWorkbenchPart#dispose() - */ - public void dispose() { - // remove CommandStackListener - getCommandStack().removeCommandStackListener(getCommandStackListener()); - // important: always call super implementation of dispose - super.dispose(); - } - - /** - * @see org.eclipse.ui.IEditorPart#doSaveAs() - **/ - public void doSaveAs() { - // Nothing to do here, this is never allowed - throw new IllegalAccessError("No way to enter this method."); - } - - @Override - public Object getAdapter(@SuppressWarnings("rawtypes") Class type) { - if (type == ZoomManager.class) - return ((ScalableRootEditPart) getGraphicalViewer() - .getRootEditPart()).getZoomManager(); - if (type == IContentOutlinePage.class) - return new BMotionOutlinePage(); - if (type == IPropertySheetPage.class) { - BMotionStudioPropertySheet page = new BMotionStudioPropertySheet(); - page.setRootEntry(new CustomSortPropertySheetEntry( - getCommandStack())); - return page; - } - return super.getAdapter(type); - } - - /** - * @see org.eclipse.ui.IEditorPart#gotoMarker(IMarker) - **/ - public void gotoMarker(IMarker iMarker) { - } - - /** - * Returns the KeyHandler with common bindings for both the Outline and - * Graphical Views. For example, delete is a common action. - */ - protected KeyHandler getCommonKeyHandler() { - if (sharedKeyHandler == null) { - sharedKeyHandler = new KeyHandler(); - sharedKeyHandler.put( - KeyStroke.getPressed(SWT.F2, 0), - getActionRegistry().getAction( - GEFActionConstants.DIRECT_EDIT)); - sharedKeyHandler - .put(KeyStroke.getPressed(SWT.DEL, 127, 0), - getActionRegistry().getAction( - ActionFactory.DELETE.getId())); - - sharedKeyHandler.put(KeyStroke.getPressed('+', SWT.KEYPAD_ADD, 0), - getActionRegistry().getAction(GEFActionConstants.ZOOM_IN)); - - sharedKeyHandler.put( - KeyStroke.getPressed('-', SWT.KEYPAD_SUBTRACT, 0), - getActionRegistry().getAction(GEFActionConstants.ZOOM_OUT)); - - sharedKeyHandler.put( - KeyStroke.getPressed(SWT.F2, 0), - getActionRegistry().getAction( - GEFActionConstants.DIRECT_EDIT)); - } - return sharedKeyHandler; - } - - public void setDirty(boolean dirty) { - if (isDirty() != dirty) { - isDirty = dirty; - firePropertyChange(IEditorPart.PROP_DIRTY); - } - } - - /* - * @see EditorPart#isDirty - */ - @Override - public boolean isDirty() { - return isDirty; - } - - @SuppressWarnings("unchecked") - public void createActions() { - - super.createActions(); - - ActionRegistry registry = getActionRegistry(); - - installCustomActions(); - - IAction action = new CopyAction(this); - registry.registerAction(action); - getSelectionActions().add(action.getId()); - - action = new PasteAction(this); - registry.registerAction(action); - getSelectionActions().add(action.getId()); - - installObserverActions(); - installSchedulerActions(); - - } - - @SuppressWarnings("unchecked") - private void installObserverActions() { - - IAction action; - ActionRegistry registry = getActionRegistry(); - - IExtensionRegistry reg = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = reg - .getExtensionPoint("de.bmotionstudio.gef.editor.observer"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("observer".equals(configurationElement.getName())) { - - String observerClassName = configurationElement - .getAttribute("class"); - - action = new ObserverAction(this); - action.setId("de.bmotionstudio.gef.editor.observerAction." - + observerClassName); - ((ObserverAction) action).setClassName(observerClassName); - registry.registerAction(action); - getSelectionActions().add( - "de.bmotionstudio.gef.editor.observerAction." - + observerClassName); - - } - - } - - } - - } - - @SuppressWarnings("unchecked") - private void installSchedulerActions() { - - IAction action; - ActionRegistry registry = getActionRegistry(); - - IExtensionRegistry reg = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = reg - .getExtensionPoint("de.bmotionstudio.gef.editor.schedulerEvent"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("schedulerEvent".equals(configurationElement.getName())) { - - String sClassName = configurationElement - .getAttribute("class"); - - action = new SchedulerEventAction(this); - action.setId("de.bmotionstudio.gef.editor.SchedulerEventAction." - + sClassName); - ((SchedulerEventAction) action).setClassName(sClassName); - registry.registerAction(action); - getSelectionActions().add( - "de.bmotionstudio.gef.editor.SchedulerEventAction." - + sClassName); - - } - - } - - } - - } - - @SuppressWarnings("unchecked") - private void installCustomActions() { - - ActionRegistry registry = getActionRegistry(); - - IExtensionRegistry reg = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = reg - .getExtensionPoint("de.bmotionstudio.gef.editor.installActions"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("action".equals(configurationElement.getName())) { - - try { - - IInstallActions installActionsClass = (IInstallActions) configurationElement - .createExecutableExtension("class"); - - installActionsClass.installActions(this); - HashMap<String, Action> actionMap = installActionsClass - .getActionMap(); - - for (Map.Entry<String, Action> entry : actionMap - .entrySet()) { - - registry.registerAction(entry.getValue()); - if (entry.getValue() instanceof SelectionAction) - getSelectionActions().add(entry.getKey()); - - } - - } catch (final CoreException e) { - e.printStackTrace(); - } - - } - - } - - } - - } - - protected Control getGraphicalControl() { - return rulerComp; - } - - protected void createGraphicalViewer(Composite parent) { - rulerComp = new RulerComposite(parent, SWT.NONE); - super.createGraphicalViewer(rulerComp); - rulerComp - .setGraphicalViewer((ScrollingGraphicalViewer) getGraphicalViewer()); - } - - /** - * @see org.eclipse.gef.ui.parts.GraphicalEditor#configureGraphicalViewer() - **/ - protected void configureGraphicalViewer() { - - double[] zoomLevels; - - super.configureGraphicalViewer(); - ScrollingGraphicalViewer viewer = (ScrollingGraphicalViewer) getGraphicalViewer(); - - viewer.setEditPartFactory(new AppEditPartFactory()); - - ScalableRootEditPart rootEditPart = new ScalableRootEditPart(); - viewer.setRootEditPart(rootEditPart); - - ZoomManager manager = rootEditPart.getZoomManager(); - getActionRegistry().registerAction(new ZoomInAction(manager)); - getActionRegistry().registerAction(new ZoomOutAction(manager)); - - zoomLevels = new double[] { 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, - 4.0, 5.0, 10.0, 20.0 }; - manager.setZoomLevels(zoomLevels); - ArrayList<String> zoomContributions = new ArrayList<String>(); - zoomContributions.add(ZoomManager.FIT_ALL); - zoomContributions.add(ZoomManager.FIT_HEIGHT); - zoomContributions.add(ZoomManager.FIT_WIDTH); - manager.setZoomLevelContributions(zoomContributions); - - viewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(SWT.NONE), - MouseWheelZoomHandler.SINGLETON); - - // viewer.setKeyHandler(keyHandler); - - viewer.setKeyHandler(new GraphicalViewerKeyHandler(viewer) - .setParent(getCommonKeyHandler())); - - loadProperties(); - - getActionRegistry().registerAction( - new ToggleRulerVisibilityAction(getGraphicalViewer())); - getActionRegistry().registerAction( - new ToggleSnapToGeometryAction(getGraphicalViewer())); - getActionRegistry().registerAction( - new ToggleGridAction(getGraphicalViewer())); - - ContextMenuProvider provider = new AppContextMenuProvider(viewer, - getActionRegistry()); - viewer.setContextMenu(provider); - - } - - protected void loadProperties() { - - // Ruler properties - BMotionRuler ruler = getVisualization() - .getRuler(PositionConstants.WEST); - RulerProvider provider = null; - if (ruler != null) { - provider = new BMotionRulerProvider(ruler); - } - getGraphicalViewer().setProperty(RulerProvider.PROPERTY_VERTICAL_RULER, - provider); - ruler = getVisualization().getRuler(PositionConstants.NORTH); - provider = null; - if (ruler != null) { - provider = new BMotionRulerProvider(ruler); - } - getGraphicalViewer().setProperty( - RulerProvider.PROPERTY_HORIZONTAL_RULER, provider); - getGraphicalViewer().setProperty( - RulerProvider.PROPERTY_RULER_VISIBILITY, - getVisualization().getRulerVisibility()); - getGraphicalViewer().setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED, - getVisualization().isSnapToGeometryEnabled()); - getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_ENABLED, - getVisualization().isGridEnabled()); - getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE, - getVisualization().isGridEnabled()); - - getPalettePreferences().setPaletteState( - FlyoutPaletteComposite.STATE_PINNED_OPEN); - - } - - protected void saveProperties() { - getVisualization().setRulerVisibility( - ((Boolean) getGraphicalViewer().getProperty( - RulerProvider.PROPERTY_RULER_VISIBILITY)) - .booleanValue()); - getVisualization().setGridEnabled( - ((Boolean) getGraphicalViewer().getProperty( - SnapToGrid.PROPERTY_GRID_ENABLED)).booleanValue()); - getVisualization().setSnapToGeometry( - ((Boolean) getGraphicalViewer().getProperty( - SnapToGeometry.PROPERTY_SNAP_ENABLED)).booleanValue()); - } - - /** - * The <code>CommandStackListener</code> that listens for - * <code>CommandStack </code>changes. - */ - private CommandStackListener commandStackListener = new CommandStackListener() { - public void commandStackChanged(EventObject event) { - setDirty(getCommandStack().isDirty()); - } - }; - - /** - * Returns the <code>CommandStack</code> of this editor's - * <code>EditDomain</code>. - * - * @return the <code>CommandStack</code> - */ - @Override - public CommandStack getCommandStack() { - return getEditDomain().getCommandStack(); - } - - /** - * Returns the <code>CommandStackListener</code>. - * - * @return the <code>CommandStackListener</code> - */ - protected CommandStackListener getCommandStackListener() { - return commandStackListener; - } - - /** - * Returns the palette root. - */ - protected PaletteRoot getPaletteRoot() { - if (palette == null) { - palette = new EditorPaletteFactory().createPalette(visualization); - } - return palette; - } - - protected FigureCanvas getEditor() { - return (FigureCanvas) getGraphicalViewer().getControl(); - } - - @Override - public SelectionSynchronizer getSelectionSynchronizer() { - if (bmotionSelectionSynchronizer == null) - bmotionSelectionSynchronizer = new BMotionSelectionSynchronizer( - bmotionStudioEditor); - return bmotionSelectionSynchronizer; - } - - protected class BMotionOutlinePage extends ContentOutlinePage { - - private SashForm sash; - - private ScrollableThumbnail thumbnail; - private DisposeListener disposeListener; - - public BMotionOutlinePage() { - super(new TreeViewer()); - } - - public void init(IPageSite pageSite) { - super.init(pageSite); - IActionBars bars = pageSite.getActionBars(); - ActionRegistry ar = getActionRegistry(); - bars.setGlobalActionHandler(ActionFactory.UNDO.getId(), - ar.getAction(ActionFactory.UNDO.getId())); - bars.setGlobalActionHandler(ActionFactory.REDO.getId(), - ar.getAction(ActionFactory.REDO.getId())); - bars.setGlobalActionHandler(ActionFactory.DELETE.getId(), - ar.getAction(ActionFactory.DELETE.getId())); - bars.setGlobalActionHandler(ActionFactory.COPY.getId(), - ar.getAction(ActionFactory.COPY.getId())); - bars.setGlobalActionHandler(ActionFactory.PASTE.getId(), - ar.getAction(ActionFactory.PASTE.getId())); - buildCustomActions(bars, ar); - bars.updateActionBars(); - } - - protected void configureOutlineViewer() { - getViewer().setEditDomain(getEditDomain()); - getViewer().setEditPartFactory(new AppTreeEditPartFactory()); - ContextMenuProvider provider = new AppContextMenuProvider( - getViewer(), getActionRegistry()); - getViewer().setContextMenu(provider); - getViewer().setKeyHandler(getCommonKeyHandler()); - } - - protected void initializeOutlineViewer() { - setContents(getVisualization()); - } - - public void setContents(Object contents) { - getViewer().setContents(contents); - } - - protected void hookOutlineViewer() { - getSelectionSynchronizer().addViewer(getViewer()); - } - - protected void unhookOutlineViewer() { - getSelectionSynchronizer().removeViewer(getViewer()); - if (getGraphicalViewer().getControl() != null - && !getGraphicalViewer().getControl().isDisposed()) - getGraphicalViewer().getControl().removeDisposeListener( - disposeListener); - } - - @Override - public void createControl(Composite parent) { - initializeOverview(parent); - getGraphicalViewer().getControl().addDisposeListener( - disposeListener); - configureOutlineViewer(); - hookOutlineViewer(); - initializeOutlineViewer(); - createMenu(); - } - - /** - * - */ - private void createMenu() { - - Action expandAllAction = new Action("Expand All") { - - @Override - public void run() { - for (TreeItem item : ((Tree) getViewer().getControl()) - .getItems()) { - item.setExpanded(true); - } - } - - }; - - Action collapseAllAction = new Action("Collapse All") { - - @Override - public void run() { - for (TreeItem item : ((Tree) getViewer().getControl()) - .getItems()) { - item.setExpanded(false); - } - } - - }; - // collapseAllAction - // .setImageDescriptor(ImageDescriptor - // .createFromImage(PlatformUI - // .getWorkbench() - // .getSharedImages() - // .getImage( - // ISharedImages.IMG_ELCL_COLLAPSEALL))); - - getSite().getActionBars().getMenuManager().add(expandAllAction); - getSite().getActionBars().getMenuManager().add(collapseAllAction); - - } - - protected void initializeOverview(Composite parent) { - sash = new SashForm(parent, SWT.VERTICAL); - - getViewer().createControl(sash); - - Canvas canvas = new Canvas(sash, SWT.BORDER); - canvas.setBackground(Display.getDefault().getSystemColor( - SWT.COLOR_WHITE)); - LightweightSystem lws = new LightweightSystem(canvas); - - thumbnail = new ScrollableThumbnail( - (Viewport) ((ScalableRootEditPart) getGraphicalViewer() - .getRootEditPart()).getFigure()); - thumbnail.setSource(((ScalableRootEditPart) getGraphicalViewer() - .getRootEditPart()) - .getLayer(LayerConstants.PRINTABLE_LAYERS)); - - lws.setContents(thumbnail); - - disposeListener = new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - if (thumbnail != null) { - thumbnail.deactivate(); - thumbnail = null; - } - } - }; - } - - public Control getControl() { - return sash; - } - - public void dispose() { - unhookOutlineViewer(); - super.dispose(); - } - - } - - private void buildCustomActions(IActionBars bars, ActionRegistry ar) { - - IExtensionRegistry reg = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = reg - .getExtensionPoint("de.bmotionstudio.gef.editor.installMenu"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("menu".equals(configurationElement.getName())) { - - try { - - IInstallMenu installMenuClass = (IInstallMenu) configurationElement - .createExecutableExtension("class"); - - installMenuClass.installBar(bars, getActionRegistry()); - - } catch (final CoreException e) { - e.printStackTrace(); - } - - } - - } - - } - - } - - public Visualization getVisualization() { - return visualization; - } - - public void setBMotionStudioEditor(BMotionStudioEditor bmotionStudioEditor) { - this.bmotionStudioEditor = bmotionStudioEditor; - } - - public BMotionStudioEditor getBMotionStudioEditor() { - return bmotionStudioEditor; - } - - public ScalableRootEditPart getRootEditPart() { - return (ScalableRootEditPart) getGraphicalViewer().getRootEditPart(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.util.ArrayList; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Platform; +import org.eclipse.draw2d.FigureCanvas; +import org.eclipse.draw2d.LightweightSystem; +import org.eclipse.draw2d.PositionConstants; +import org.eclipse.draw2d.Viewport; +import org.eclipse.draw2d.parts.ScrollableThumbnail; +import org.eclipse.gef.ContextMenuProvider; +import org.eclipse.gef.DefaultEditDomain; +import org.eclipse.gef.KeyHandler; +import org.eclipse.gef.KeyStroke; +import org.eclipse.gef.LayerConstants; +import org.eclipse.gef.MouseWheelHandler; +import org.eclipse.gef.MouseWheelZoomHandler; +import org.eclipse.gef.SnapToGeometry; +import org.eclipse.gef.SnapToGrid; +import org.eclipse.gef.commands.CommandStack; +import org.eclipse.gef.commands.CommandStackListener; +import org.eclipse.gef.dnd.TemplateTransferDragSourceListener; +import org.eclipse.gef.editparts.GridLayer; +import org.eclipse.gef.editparts.ScalableRootEditPart; +import org.eclipse.gef.editparts.ZoomManager; +import org.eclipse.gef.palette.PaletteRoot; +import org.eclipse.gef.rulers.RulerProvider; +import org.eclipse.gef.ui.actions.ActionRegistry; +import org.eclipse.gef.ui.actions.GEFActionConstants; +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.gef.ui.actions.ToggleGridAction; +import org.eclipse.gef.ui.actions.ToggleRulerVisibilityAction; +import org.eclipse.gef.ui.actions.ToggleSnapToGeometryAction; +import org.eclipse.gef.ui.actions.ZoomInAction; +import org.eclipse.gef.ui.actions.ZoomOutAction; +import org.eclipse.gef.ui.palette.FlyoutPaletteComposite; +import org.eclipse.gef.ui.palette.PaletteViewer; +import org.eclipse.gef.ui.palette.PaletteViewerProvider; +import org.eclipse.gef.ui.parts.ContentOutlinePage; +import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette; +import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler; +import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer; +import org.eclipse.gef.ui.parts.SelectionSynchronizer; +import org.eclipse.gef.ui.parts.TreeViewer; +import org.eclipse.gef.ui.rulers.RulerComposite; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.events.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeItem; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IFileEditorInput; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.ActionFactory; +import org.eclipse.ui.part.IPageSite; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; +import org.eclipse.ui.views.properties.IPropertySheetPage; + +import com.thoughtworks.xstream.XStream; + +import de.bmotionstudio.gef.editor.action.CopyAction; +import de.bmotionstudio.gef.editor.action.OpenObserverAction; +import de.bmotionstudio.gef.editor.action.OpenSchedulerEventAction; +import de.bmotionstudio.gef.editor.action.PasteAction; +import de.bmotionstudio.gef.editor.internal.BControlTransferDropTargetListener; +import de.bmotionstudio.gef.editor.library.AttributeTransferDropTargetListener; +import de.bmotionstudio.gef.editor.model.BMotionRuler; +import de.bmotionstudio.gef.editor.model.BMotionRulerProvider; +import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.part.AppEditPartFactory; +import de.bmotionstudio.gef.editor.part.AppTreeEditPartFactory; + +public class BMotionStudioEditorPage extends GraphicalEditorWithFlyoutPalette { + + public final static String ID = "de.bmotionstudio.gef.editor"; + + private boolean isDirty; + + private KeyHandler sharedKeyHandler; + + private Visualization visualization; + + private RulerComposite rulerComp; + + // private BControl editArea; + + private BMotionStudioEditor bmotionStudioEditor; + + private BMotionSelectionSynchronizer bmotionSelectionSynchronizer; + + private Color gridColor = new Color(null, 240, 240, 240); + + /** Palette component, holding the tools and b-controls. */ + private PaletteRoot palette; + + private PropertyChangeListener viewerListener = new PropertyChangeListener() { + + @Override + public void propertyChange(PropertyChangeEvent event) { + String propertyName = event.getPropertyName(); + if (propertyName.equals(SnapToGrid.PROPERTY_GRID_VISIBLE) + || propertyName.equals(SnapToGrid.PROPERTY_GRID_ENABLED)) { + setDirty(true); + } + } + + }; + + public BMotionStudioEditorPage(Visualization visualization, + BMotionStudioEditor bmotionStudioEditor) { + this.visualization = visualization; + this.bmotionStudioEditor = bmotionStudioEditor; + setEditDomain(new DefaultEditDomain(this)); + } + + @Override + public void selectionChanged(IWorkbenchPart part, ISelection selection) { + // If not the active editor, ignore selection changed. + if (getBMotionStudioEditor().equals( + getSite().getPage().getActiveEditor())) + updateActions(getSelectionActions()); + } + + /** + * @see org.eclipse.ui.IEditorPart#init(IEditorSite, IEditorInput) + **/ + public void init(IEditorSite iSite, IEditorInput iInput) + throws PartInitException { + super.init(iSite, iInput); + setSite(iSite); + // add CommandStackListener + getCommandStack().addCommandStackListener(getCommandStackListener()); + } + + /** + * @see org.eclipse.gef.ui.parts.GraphicalEditor#initializeGraphicalViewer() + **/ + protected void initializeGraphicalViewer() { + + super.initializeGraphicalViewer(); + + getGraphicalViewer().setContents(getVisualization()); + + getGraphicalViewer().addDropTargetListener( + new BControlTransferDropTargetListener(getGraphicalViewer(), + visualization)); + getGraphicalViewer().addDropTargetListener( + new AttributeTransferDropTargetListener(getGraphicalViewer(), + getSite().getPart())); + + getPalettePreferences().setPaletteState( + FlyoutPaletteComposite.STATE_PINNED_OPEN); + + } + + @Override + protected PaletteViewerProvider createPaletteViewerProvider() { + return new PaletteViewerProvider(getEditDomain()) { + protected void configurePaletteViewer(PaletteViewer viewer) { + super.configurePaletteViewer(viewer); + viewer.addDragSourceListener(new TemplateTransferDragSourceListener( + viewer)); + } + + protected void hookPaletteViewer(PaletteViewer viewer) { + super.hookPaletteViewer(viewer); + } + }; + } + + /** + * @see org.eclipse.ui.IEditorPart#isSaveAsAllowed() + **/ + public boolean isSaveAsAllowed() { + return true; + } + + /** + * Creates an appropriate output stream and writes the activity diagram out + * to this stream. + * + * @param os + * the base output stream + * @throws IOException + */ + protected void createOutputStream(OutputStream os) throws IOException { + OutputStreamWriter writer = new OutputStreamWriter(os, "UTF8"); + XStream xstream = new XStream(); + BMotionEditorPlugin.setAliases(xstream); + xstream.toXML(visualization, writer); + } + + /** + * @see org.eclipse.ui.IEditorPart#doSave(IProgressMonitor) + **/ + public void doSave(IProgressMonitor iMonitor) { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + saveProperties(); + createOutputStream(out); + IFile file = ((IFileEditorInput) getEditorInput()).getFile(); + file.setContents(new ByteArrayInputStream(out.toByteArray()), true, + false, iMonitor); + getCommandStack().markSaveLocation(); + } catch (CoreException ce) { + ce.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IWorkbenchPart#dispose() + */ + public void dispose() { + // remove CommandStackListener + getCommandStack().removeCommandStackListener(getCommandStackListener()); + + // remove PropertyChangeListener from graphical viewer + getGraphicalViewer().removePropertyChangeListener(viewerListener); + + // important: always call super implementation of dispose + super.dispose(); + } + + /** + * @see org.eclipse.ui.IEditorPart#doSaveAs() + **/ + public void doSaveAs() { + // Nothing to do here, this is never allowed + throw new IllegalAccessError("No way to enter this method."); + } + + @Override + public Object getAdapter(@SuppressWarnings("rawtypes") Class type) { + if (type == ZoomManager.class) + return ((ScalableRootEditPart) getGraphicalViewer() + .getRootEditPart()).getZoomManager(); + if (type == IContentOutlinePage.class) + return new BMotionOutlinePage(); + if (type == IPropertySheetPage.class) { + BMotionStudioPropertySheet page = new BMotionStudioPropertySheet(); + page.setRootEntry(new CustomSortPropertySheetEntry( + getCommandStack())); + return page; + } + return super.getAdapter(type); + } + + /** + * @see org.eclipse.ui.IEditorPart#gotoMarker(IMarker) + **/ + public void gotoMarker(IMarker iMarker) { + } + + /** + * Returns the KeyHandler with common bindings for both the Outline and + * Graphical Views. For example, delete is a common action. + */ + protected KeyHandler getCommonKeyHandler() { + if (sharedKeyHandler == null) { + sharedKeyHandler = new KeyHandler(); + sharedKeyHandler.put( + KeyStroke.getPressed(SWT.F2, 0), + getActionRegistry().getAction( + GEFActionConstants.DIRECT_EDIT)); + sharedKeyHandler + .put(KeyStroke.getPressed(SWT.DEL, 127, 0), + getActionRegistry().getAction( + ActionFactory.DELETE.getId())); + + sharedKeyHandler.put(KeyStroke.getPressed('+', SWT.KEYPAD_ADD, 0), + getActionRegistry().getAction(GEFActionConstants.ZOOM_IN)); + + sharedKeyHandler.put( + KeyStroke.getPressed('-', SWT.KEYPAD_SUBTRACT, 0), + getActionRegistry().getAction(GEFActionConstants.ZOOM_OUT)); + + sharedKeyHandler.put( + KeyStroke.getPressed(SWT.F2, 0), + getActionRegistry().getAction( + GEFActionConstants.DIRECT_EDIT)); + } + return sharedKeyHandler; + } + + public void setDirty(boolean dirty) { + if (isDirty() != dirty) { + isDirty = dirty; + firePropertyChange(IEditorPart.PROP_DIRTY); + } + } + + /* + * @see EditorPart#isDirty + */ + @Override + public boolean isDirty() { + return isDirty; + } + + @SuppressWarnings("unchecked") + public void createActions() { + + super.createActions(); + + ActionRegistry registry = getActionRegistry(); + + installCustomActions(); + + IAction action = new CopyAction(this); + registry.registerAction(action); + getSelectionActions().add(action.getId()); + + action = new PasteAction(this); + registry.registerAction(action); + getSelectionActions().add(action.getId()); + + installObserverActions(); + installSchedulerActions(); + + } + + @SuppressWarnings("unchecked") + private void installObserverActions() { + + IAction action; + ActionRegistry registry = getActionRegistry(); + + IExtensionRegistry reg = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = reg + .getExtensionPoint("de.bmotionstudio.gef.editor.observer"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("observer".equals(configurationElement.getName())) { + + String observerClassName = configurationElement + .getAttribute("class"); + + action = new OpenObserverAction(this); + action.setId("de.bmotionstudio.gef.editor.observerAction." + + observerClassName); + ((OpenObserverAction) action).setClassName(observerClassName); + registry.registerAction(action); + getSelectionActions().add( + "de.bmotionstudio.gef.editor.observerAction." + + observerClassName); + + } + + } + + } + + } + + @SuppressWarnings("unchecked") + private void installSchedulerActions() { + + IAction action; + ActionRegistry registry = getActionRegistry(); + + IExtensionRegistry reg = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = reg + .getExtensionPoint("de.bmotionstudio.gef.editor.schedulerEvent"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("schedulerEvent".equals(configurationElement.getName())) { + + String sClassName = configurationElement + .getAttribute("class"); + + action = new OpenSchedulerEventAction(this); + action.setId("de.bmotionstudio.gef.editor.SchedulerEventAction." + + sClassName); + ((OpenSchedulerEventAction) action).setClassName(sClassName); + registry.registerAction(action); + getSelectionActions().add( + "de.bmotionstudio.gef.editor.SchedulerEventAction." + + sClassName); + + } + + } + + } + + } + + @SuppressWarnings("unchecked") + private void installCustomActions() { + + ActionRegistry registry = getActionRegistry(); + + IExtensionRegistry reg = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = reg + .getExtensionPoint("de.bmotionstudio.gef.editor.installActions"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("action".equals(configurationElement.getName())) { + + try { + + IInstallActions installActionsClass = (IInstallActions) configurationElement + .createExecutableExtension("class"); + + installActionsClass.installActions(this); + HashMap<String, Action> actionMap = installActionsClass + .getActionMap(); + + for (Map.Entry<String, Action> entry : actionMap + .entrySet()) { + + registry.registerAction(entry.getValue()); + if (entry.getValue() instanceof SelectionAction) + getSelectionActions().add(entry.getKey()); + + } + + } catch (final CoreException e) { + e.printStackTrace(); + } + + } + + } + + } + + } + + protected Control getGraphicalControl() { + return rulerComp; + } + + protected void createGraphicalViewer(Composite parent) { + rulerComp = new RulerComposite(parent, SWT.NONE); + super.createGraphicalViewer(rulerComp); + rulerComp + .setGraphicalViewer((ScrollingGraphicalViewer) getGraphicalViewer()); + } + + /** + * @see org.eclipse.gef.ui.parts.GraphicalEditor#configureGraphicalViewer() + **/ + protected void configureGraphicalViewer() { + + double[] zoomLevels; + + super.configureGraphicalViewer(); + ScrollingGraphicalViewer viewer = (ScrollingGraphicalViewer) getGraphicalViewer(); + + viewer.setEditPartFactory(new AppEditPartFactory()); + + ScalableRootEditPart rootEditPart = new ScalableRootEditPart(); + GridLayer gridLayer = (GridLayer) rootEditPart + .getLayer(ScalableRootEditPart.GRID_LAYER); + gridLayer.setForegroundColor(gridColor); + viewer.setRootEditPart(rootEditPart); + + ZoomManager manager = rootEditPart.getZoomManager(); + getActionRegistry().registerAction(new ZoomInAction(manager)); + getActionRegistry().registerAction(new ZoomOutAction(manager)); + + zoomLevels = new double[] { 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 2.5, 3.0, + 4.0, 5.0, 10.0, 20.0 }; + manager.setZoomLevels(zoomLevels); + ArrayList<String> zoomContributions = new ArrayList<String>(); + zoomContributions.add(ZoomManager.FIT_ALL); + zoomContributions.add(ZoomManager.FIT_HEIGHT); + zoomContributions.add(ZoomManager.FIT_WIDTH); + manager.setZoomLevelContributions(zoomContributions); + + viewer.setProperty(MouseWheelHandler.KeyGenerator.getKey(SWT.NONE), + MouseWheelZoomHandler.SINGLETON); + + // viewer.setKeyHandler(keyHandler); + + viewer.setKeyHandler(new GraphicalViewerKeyHandler(viewer) + .setParent(getCommonKeyHandler())); + + loadProperties(); + + getActionRegistry().registerAction( + new ToggleRulerVisibilityAction(getGraphicalViewer())); + getActionRegistry().registerAction( + new ToggleSnapToGeometryAction(getGraphicalViewer())); + getActionRegistry().registerAction( + new ToggleGridAction(getGraphicalViewer())); + + ContextMenuProvider provider = new AppContextMenuProvider(viewer, + getActionRegistry()); + viewer.setContextMenu(provider); + + viewer.addPropertyChangeListener(viewerListener); + + } + + protected void loadProperties() { + + // Ruler properties + BMotionRuler ruler = getVisualization() + .getRuler(PositionConstants.WEST); + RulerProvider provider = null; + if (ruler != null) { + provider = new BMotionRulerProvider(ruler); + } + getGraphicalViewer().setProperty(RulerProvider.PROPERTY_VERTICAL_RULER, + provider); + ruler = getVisualization().getRuler(PositionConstants.NORTH); + provider = null; + if (ruler != null) { + provider = new BMotionRulerProvider(ruler); + } + getGraphicalViewer().setProperty( + RulerProvider.PROPERTY_HORIZONTAL_RULER, provider); + getGraphicalViewer().setProperty( + RulerProvider.PROPERTY_RULER_VISIBILITY, + getVisualization().getRulerVisibility()); + getGraphicalViewer().setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED, + getVisualization().isSnapToGeometryEnabled()); + getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_ENABLED, + getVisualization().isGridEnabled()); + getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE, + getVisualization().isGridEnabled()); + + getPalettePreferences().setPaletteState( + FlyoutPaletteComposite.STATE_PINNED_OPEN); + + } + + protected void saveProperties() { + getVisualization().setRulerVisibility( + ((Boolean) getGraphicalViewer().getProperty( + RulerProvider.PROPERTY_RULER_VISIBILITY)) + .booleanValue()); + getVisualization().setGridEnabled( + ((Boolean) getGraphicalViewer().getProperty( + SnapToGrid.PROPERTY_GRID_ENABLED)).booleanValue()); + getVisualization().setSnapToGeometry( + ((Boolean) getGraphicalViewer().getProperty( + SnapToGeometry.PROPERTY_SNAP_ENABLED)).booleanValue()); + } + + /** + * The <code>CommandStackListener</code> that listens for + * <code>CommandStack </code>changes. + */ + private CommandStackListener commandStackListener = new CommandStackListener() { + public void commandStackChanged(EventObject event) { + setDirty(getCommandStack().isDirty()); + } + }; + + /** + * Returns the <code>CommandStack</code> of this editor's + * <code>EditDomain</code>. + * + * @return the <code>CommandStack</code> + */ + @Override + public CommandStack getCommandStack() { + return getEditDomain().getCommandStack(); + } + + /** + * Returns the <code>CommandStackListener</code>. + * + * @return the <code>CommandStackListener</code> + */ + protected CommandStackListener getCommandStackListener() { + return commandStackListener; + } + + /** + * Returns the palette root. + */ + protected PaletteRoot getPaletteRoot() { + if (palette == null) { + palette = new EditorPaletteFactory().createPalette(visualization); + } + return palette; + } + + protected FigureCanvas getEditor() { + return (FigureCanvas) getGraphicalViewer().getControl(); + } + + @Override + public SelectionSynchronizer getSelectionSynchronizer() { + if (bmotionSelectionSynchronizer == null) + bmotionSelectionSynchronizer = new BMotionSelectionSynchronizer( + bmotionStudioEditor); + return bmotionSelectionSynchronizer; + } + + protected class BMotionOutlinePage extends ContentOutlinePage { + + private SashForm sash; + + private ScrollableThumbnail thumbnail; + private DisposeListener disposeListener; + + public BMotionOutlinePage() { + super(new TreeViewer()); + } + + public void init(IPageSite pageSite) { + super.init(pageSite); + IActionBars bars = pageSite.getActionBars(); + ActionRegistry ar = getActionRegistry(); + bars.setGlobalActionHandler(ActionFactory.UNDO.getId(), + ar.getAction(ActionFactory.UNDO.getId())); + bars.setGlobalActionHandler(ActionFactory.REDO.getId(), + ar.getAction(ActionFactory.REDO.getId())); + bars.setGlobalActionHandler(ActionFactory.DELETE.getId(), + ar.getAction(ActionFactory.DELETE.getId())); + bars.setGlobalActionHandler(ActionFactory.COPY.getId(), + ar.getAction(ActionFactory.COPY.getId())); + bars.setGlobalActionHandler(ActionFactory.PASTE.getId(), + ar.getAction(ActionFactory.PASTE.getId())); + buildCustomActions(bars, ar); + bars.updateActionBars(); + } + + protected void configureOutlineViewer() { + getViewer().setEditDomain(getEditDomain()); + getViewer().setEditPartFactory(new AppTreeEditPartFactory()); + ContextMenuProvider provider = new AppContextMenuProvider( + getViewer(), getActionRegistry()); + getViewer().setContextMenu(provider); + getViewer().setKeyHandler(getCommonKeyHandler()); + } + + protected void initializeOutlineViewer() { + setContents(getVisualization()); + } + + public void setContents(Object contents) { + getViewer().setContents(contents); + } + + protected void hookOutlineViewer() { + getSelectionSynchronizer().addViewer(getViewer()); + } + + protected void unhookOutlineViewer() { + getSelectionSynchronizer().removeViewer(getViewer()); + if (getGraphicalViewer().getControl() != null + && !getGraphicalViewer().getControl().isDisposed()) + getGraphicalViewer().getControl().removeDisposeListener( + disposeListener); + } + + @Override + public void createControl(Composite parent) { + initializeOverview(parent); + getGraphicalViewer().getControl().addDisposeListener( + disposeListener); + configureOutlineViewer(); + hookOutlineViewer(); + initializeOutlineViewer(); + createMenu(); + } + + /** + * + */ + private void createMenu() { + + Action expandAllAction = new Action("Expand All") { + + @Override + public void run() { + for (TreeItem item : ((Tree) getViewer().getControl()) + .getItems()) { + item.setExpanded(true); + } + } + + }; + + Action collapseAllAction = new Action("Collapse All") { + + @Override + public void run() { + for (TreeItem item : ((Tree) getViewer().getControl()) + .getItems()) { + item.setExpanded(false); + } + } + + }; + // collapseAllAction + // .setImageDescriptor(ImageDescriptor + // .createFromImage(PlatformUI + // .getWorkbench() + // .getSharedImages() + // .getImage( + // ISharedImages.IMG_ELCL_COLLAPSEALL))); + + getSite().getActionBars().getMenuManager().add(expandAllAction); + getSite().getActionBars().getMenuManager().add(collapseAllAction); + + } + + protected void initializeOverview(Composite parent) { + sash = new SashForm(parent, SWT.VERTICAL); + + getViewer().createControl(sash); + + Canvas canvas = new Canvas(sash, SWT.BORDER); + canvas.setBackground(Display.getDefault().getSystemColor( + SWT.COLOR_WHITE)); + LightweightSystem lws = new LightweightSystem(canvas); + + thumbnail = new ScrollableThumbnail( + (Viewport) ((ScalableRootEditPart) getGraphicalViewer() + .getRootEditPart()).getFigure()); + thumbnail.setSource(((ScalableRootEditPart) getGraphicalViewer() + .getRootEditPart()) + .getLayer(LayerConstants.PRINTABLE_LAYERS)); + + lws.setContents(thumbnail); + + disposeListener = new DisposeListener() { + public void widgetDisposed(DisposeEvent e) { + if (thumbnail != null) { + thumbnail.deactivate(); + thumbnail = null; + } + } + }; + } + + public Control getControl() { + return sash; + } + + public void dispose() { + unhookOutlineViewer(); + gridColor.dispose(); + super.dispose(); + } + + } + + private void buildCustomActions(IActionBars bars, ActionRegistry ar) { + + IExtensionRegistry reg = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = reg + .getExtensionPoint("de.bmotionstudio.gef.editor.installMenu"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("menu".equals(configurationElement.getName())) { + + try { + + IInstallMenu installMenuClass = (IInstallMenu) configurationElement + .createExecutableExtension("class"); + + installMenuClass.installBar(bars, getActionRegistry()); + + } catch (final CoreException e) { + e.printStackTrace(); + } + + } + + } + + } + + } + + public Visualization getVisualization() { + return visualization; + } + + public void setBMotionStudioEditor(BMotionStudioEditor bmotionStudioEditor) { + this.bmotionStudioEditor = bmotionStudioEditor; + } + + public BMotionStudioEditor getBMotionStudioEditor() { + return bmotionStudioEditor; + } + + public ScalableRootEditPart getRootEditPart() { + return (ScalableRootEditPart) getGraphicalViewer().getRootEditPart(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioImage.java index b3eaa999e181a45a3691bf94e1324dbf3d46834f..eabeb2389370646f2fdaf49da35fec14613e4c00 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BMotionStudioImage.java @@ -1,136 +1,136 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -public class BMotionStudioImage { - - private static ImageRegistry imageReg = new ImageRegistry(); - private static boolean isInit = false; - - public static final String IMG_LOGO_B = "logo_b"; - public static final String IMG_LOGO_BMOTION = "logo_bmotion"; - public static final String IMG_LOGO_BMOTION64 = "logo_bmotion64"; - - public static final String IMG_ICON_MOTION = "icon_motion"; - public static final String IMG_ICON_MOTION_WIZ = "icon_motion_wiz"; - - public static ImageDescriptor getImageDescriptor(final String path) { - return getImageDescriptor(BMotionEditorPlugin.PLUGIN_ID, path); - } - - public static ImageDescriptor getImageDescriptor(final String pluginID, - final String path) { - return AbstractUIPlugin.imageDescriptorFromPlugin(pluginID, path); - } - - public static void registerImage(final String key, final String path) { - ImageDescriptor desc = getImageDescriptor(path); - imageReg.put(key, desc); - } - - public static void registerImage(final String key, final String pluginID, - final String path) { - ImageDescriptor desc = getImageDescriptor(pluginID, path); - imageReg.put(key, desc); - } - - public static Image getImage(final String key) { - if (!isInit) - initializeImageRegistry(); - return imageReg.get(key); - } - - public static Image getBControlImage(final String bcontrolID) { - if (!isInit) - initializeImageRegistry(); - return getImage("icon_control_" + bcontrolID); - } - - private static void initializeImageRegistry() { - - registerImage(IMG_LOGO_B, "icons/logo_b.gif"); - registerImage(IMG_LOGO_BMOTION, "icons/logo_bmotion.png"); - registerImage(IMG_LOGO_BMOTION64, "icons/logo_bmotion_64.png"); - registerImage(IMG_ICON_MOTION, "icons/icon_motion.gif"); - registerImage(IMG_ICON_MOTION_WIZ, "icons/icon_motion_wiz.gif"); - - registerBControlImages(); - - final IExtensionRegistry reg = Platform.getExtensionRegistry(); - final IExtensionPoint extensionPoint = reg - .getExtensionPoint("de.bmotionstudio.gef.editor.registerImages"); - - for (final IExtension extension : extensionPoint.getExtensions()) { - for (final IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("registerImages".equals(configurationElement.getName())) { - - try { - - IBMotionStudioImageRegistry imageReg = (IBMotionStudioImageRegistry) configurationElement - .createExecutableExtension("class"); - - imageReg.registerImages(); - - } catch (CoreException e) { - e.printStackTrace(); - } - - } - - } - - } - - isInit = true; - - } - - private static void registerBControlImages() { - - final IExtensionRegistry registry = Platform.getExtensionRegistry(); - final IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.control"); - - for (final IExtension extension : extensionPoint.getExtensions()) { - - for (final IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("control".equals(configurationElement.getName())) { - - final String icon = configurationElement - .getAttribute("icon"); - final String ID = configurationElement.getAttribute("id"); - final String sourcePluginID = configurationElement - .getContributor().getName(); - - final String key = "icon_control_" + ID; - - registerImage(key, sourcePluginID, icon); - - } - - } - - } - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +public class BMotionStudioImage { + + private static ImageRegistry imageReg = new ImageRegistry(); + private static boolean isInit = false; + + public static final String IMG_LOGO_B = "logo_b"; + public static final String IMG_LOGO_BMOTION = "logo_bmotion"; + public static final String IMG_LOGO_BMOTION64 = "logo_bmotion64"; + + public static final String IMG_ICON_MOTION = "icon_motion"; + public static final String IMG_ICON_MOTION_WIZ = "icon_motion_wiz"; + + public static ImageDescriptor getImageDescriptor(final String path) { + return getImageDescriptor(BMotionEditorPlugin.PLUGIN_ID, path); + } + + public static ImageDescriptor getImageDescriptor(final String pluginID, + final String path) { + return AbstractUIPlugin.imageDescriptorFromPlugin(pluginID, path); + } + + public static void registerImage(final String key, final String path) { + ImageDescriptor desc = getImageDescriptor(path); + imageReg.put(key, desc); + } + + public static void registerImage(final String key, final String pluginID, + final String path) { + ImageDescriptor desc = getImageDescriptor(pluginID, path); + imageReg.put(key, desc); + } + + public static Image getImage(final String key) { + if (!isInit) + initializeImageRegistry(); + return imageReg.get(key); + } + + public static Image getBControlImage(final String bcontrolID) { + if (!isInit) + initializeImageRegistry(); + return getImage("icon_control_" + bcontrolID); + } + + private static void initializeImageRegistry() { + + registerImage(IMG_LOGO_B, "icons/logo_b.gif"); + registerImage(IMG_LOGO_BMOTION, "icons/logo_bmotion.png"); + registerImage(IMG_LOGO_BMOTION64, "icons/logo_bmotion_64.png"); + registerImage(IMG_ICON_MOTION, "icons/icon_motion.gif"); + registerImage(IMG_ICON_MOTION_WIZ, "icons/icon_motion_wiz.gif"); + + registerBControlImages(); + + final IExtensionRegistry reg = Platform.getExtensionRegistry(); + final IExtensionPoint extensionPoint = reg + .getExtensionPoint("de.bmotionstudio.gef.editor.registerImages"); + + for (final IExtension extension : extensionPoint.getExtensions()) { + for (final IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("registerImages".equals(configurationElement.getName())) { + + try { + + IBMotionStudioImageRegistry imageReg = (IBMotionStudioImageRegistry) configurationElement + .createExecutableExtension("class"); + + imageReg.registerImages(); + + } catch (CoreException e) { + e.printStackTrace(); + } + + } + + } + + } + + isInit = true; + + } + + private static void registerBControlImages() { + + final IExtensionRegistry registry = Platform.getExtensionRegistry(); + final IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.control"); + + for (final IExtension extension : extensionPoint.getExtensions()) { + + for (final IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("control".equals(configurationElement.getName())) { + + final String icon = configurationElement + .getAttribute("icon"); + final String ID = configurationElement.getAttribute("id"); + final String sourcePluginID = configurationElement + .getContributor().getName(); + + final String key = "icon_control_" + ID; + + registerImage(key, sourcePluginID, icon); + + } + + } + + } + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BindingObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BindingObject.java index e4338e73da0878fe9fdf154b6386acdae9b90f15..657ea9a4224ff6e4e347bed1d73acf3e8cca06f6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BindingObject.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/BindingObject.java @@ -1,64 +1,64 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; - -/** - * - * @author Lukas Ladenberger - * - */ -public abstract class BindingObject implements Cloneable { - - private transient PropertyChangeSupport propertyChangeSupport; - - public void addPropertyChangeListener(PropertyChangeListener listener) { - getPropertyChangeSupport().addPropertyChangeListener(listener); - } - - public void addPropertyChangeListener(String propertyName, - PropertyChangeListener listener) { - getPropertyChangeSupport().addPropertyChangeListener(propertyName, - listener); - } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - getPropertyChangeSupport().removePropertyChangeListener(listener); - } - - public void removePropertyChangeListener(String propertyName, - PropertyChangeListener listener) { - getPropertyChangeSupport().removePropertyChangeListener(propertyName, - listener); - } - - protected void firePropertyChange(String propertyName, Object oldValue, - Object newValue) { - getPropertyChangeSupport().firePropertyChange(propertyName, oldValue, - newValue); - } - - public void setPropertyChangeSupport( - PropertyChangeSupport propertyChangeSupport) { - this.propertyChangeSupport = propertyChangeSupport; - } - - public PropertyChangeSupport getPropertyChangeSupport() { - if (propertyChangeSupport == null) - propertyChangeSupport = new PropertyChangeSupport(this); - return propertyChangeSupport; - } - - public BindingObject clone() throws CloneNotSupportedException { - BindingObject clone = (BindingObject) super.clone(); - clone.setPropertyChangeSupport(null); - return clone; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; + +/** + * + * @author Lukas Ladenberger + * + */ +public abstract class BindingObject implements Cloneable { + + private transient PropertyChangeSupport propertyChangeSupport; + + public void addPropertyChangeListener(PropertyChangeListener listener) { + getPropertyChangeSupport().addPropertyChangeListener(listener); + } + + public void addPropertyChangeListener(String propertyName, + PropertyChangeListener listener) { + getPropertyChangeSupport().addPropertyChangeListener(propertyName, + listener); + } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + getPropertyChangeSupport().removePropertyChangeListener(listener); + } + + public void removePropertyChangeListener(String propertyName, + PropertyChangeListener listener) { + getPropertyChangeSupport().removePropertyChangeListener(propertyName, + listener); + } + + protected void firePropertyChange(String propertyName, Object oldValue, + Object newValue) { + getPropertyChangeSupport().firePropertyChange(propertyName, oldValue, + newValue); + } + + public void setPropertyChangeSupport( + PropertyChangeSupport propertyChangeSupport) { + this.propertyChangeSupport = propertyChangeSupport; + } + + public PropertyChangeSupport getPropertyChangeSupport() { + if (propertyChangeSupport == null) + propertyChangeSupport = new PropertyChangeSupport(this); + return propertyChangeSupport; + } + + public BindingObject clone() throws CloneNotSupportedException { + BindingObject clone = (BindingObject) super.clone(); + clone.setPropertyChangeSupport(null); + return clone; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorPaletteFactory.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorPaletteFactory.java index 64af86839a8e7ca1c79fb9e7e5392b91bfbec180..82f237b384f0dba47687681aab2ce2496da7d255 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorPaletteFactory.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/EditorPaletteFactory.java @@ -1,179 +1,179 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.Platform; -import org.eclipse.gef.palette.ConnectionCreationToolEntry; -import org.eclipse.gef.palette.MarqueeToolEntry; -import org.eclipse.gef.palette.PaletteContainer; -import org.eclipse.gef.palette.PaletteDrawer; -import org.eclipse.gef.palette.PaletteRoot; -import org.eclipse.gef.palette.PaletteToolbar; -import org.eclipse.gef.palette.PanningSelectionToolEntry; -import org.eclipse.gef.palette.ToolEntry; - -import de.bmotionstudio.gef.editor.model.BConnection; -import de.bmotionstudio.gef.editor.model.Visualization; - -public class EditorPaletteFactory { - - private HashMap<String, PaletteDrawer> groupMap = new HashMap<String, PaletteDrawer>(); - - /** - * Creates the PaletteRoot and adds all palette elements. Use this factory - * method to create a new palette for your graphical editor. - * - * @param visualization - * - * @param editor - * - * @return a new PaletteRoot - */ - public PaletteRoot createPalette(Visualization visualization) { - PaletteRoot palette = new PaletteRoot(); - palette.add(createToolsGroup(palette, visualization)); - createControls(palette, visualization); - createFromExtension(palette, visualization); - return palette; - } - - private void createFromExtension(PaletteRoot palette, - Visualization visualization) { - IExtensionRegistry registry = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.paletteEntry"); - // Iterate over controls - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - if ("entry".equals(configurationElement.getName())) { - try { - IInstallPaletteEntry entry = (IInstallPaletteEntry) configurationElement - .createExecutableExtension("class"); - entry.installPaletteEntry(palette, groupMap); - } catch (CoreException e) { - e.printStackTrace(); - } - } - } - } - } - - private void createControls(PaletteRoot palette, Visualization visualization) { - - IExtensionRegistry registry = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.control"); - - // Iterate over groups - for (IExtension extension : extensionPoint.getExtensions()) { - - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("group".equals(configurationElement.getName())) { - - String groupID = configurationElement.getAttribute("id"); - String groupName = configurationElement - .getAttribute("name"); - - PaletteDrawer componentsDrawer = new PaletteDrawer( - groupName); - if (!groupMap.containsKey(groupID)) - groupMap.put(groupID, componentsDrawer); - - } - - } - - } - - // Iterate over controls - for (IExtension extension : extensionPoint.getExtensions()) { - - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("control".equals(configurationElement.getName())) { - - String groupID = configurationElement - .getAttribute("groupid"); - PaletteDrawer groupDrawer = groupMap.get(groupID); - - if (groupDrawer != null) { - - // boolean createDefaultToolEntry = true; - - try { - IBControlService service = (IBControlService) configurationElement - .createExecutableExtension("service"); - if (service.showInPalette()) { - ToolEntry toolEntry = service.createToolEntry( - visualization, configurationElement); - if (toolEntry != null) { - groupDrawer.add(toolEntry); - } - } - } catch (CoreException e) { - // I think we can ignore the exception since - // we create a default tool entry which is - // independent from the configuration - // element - } - - // if (createDefaultToolEntry) - // groupDrawer.add(createDefaultToolEntry(type, - // visualization, configurationElement)); - - } - - } - - } - - } - - for (Map.Entry<String, PaletteDrawer> entry : groupMap.entrySet()) { - if (entry.getValue().getChildren().size() > 0) - palette.add(entry.getValue()); - } - - } - - /** - * Create the "Tools" group. - * - * @param visualization - */ - private PaletteContainer createToolsGroup(PaletteRoot palette, - Visualization visualization) { - PaletteToolbar toolbar = new PaletteToolbar("Tools"); - // Add a selection tool to the group - ToolEntry tool = new PanningSelectionToolEntry(); - toolbar.add(tool); - palette.setDefaultEntry(tool); - // Add a marquee tool to the group - toolbar.add(new MarqueeToolEntry()); - // Add connector tool to the group - toolbar.add(new ConnectionCreationToolEntry("Connection", - "Universal Connector", new BControlCreationFactory( - BConnection.TYPE, visualization), BMotionStudioImage - .getImageDescriptor("icons/icon_connection16.gif"), - BMotionStudioImage - .getImageDescriptor("icons/icon_connection24.gif"))); - return toolbar; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.Platform; +import org.eclipse.gef.palette.ConnectionCreationToolEntry; +import org.eclipse.gef.palette.MarqueeToolEntry; +import org.eclipse.gef.palette.PaletteContainer; +import org.eclipse.gef.palette.PaletteDrawer; +import org.eclipse.gef.palette.PaletteRoot; +import org.eclipse.gef.palette.PaletteToolbar; +import org.eclipse.gef.palette.PanningSelectionToolEntry; +import org.eclipse.gef.palette.ToolEntry; + +import de.bmotionstudio.gef.editor.model.BConnection; +import de.bmotionstudio.gef.editor.model.Visualization; + +public class EditorPaletteFactory { + + private HashMap<String, PaletteDrawer> groupMap = new HashMap<String, PaletteDrawer>(); + + /** + * Creates the PaletteRoot and adds all palette elements. Use this factory + * method to create a new palette for your graphical editor. + * + * @param visualization + * + * @param editor + * + * @return a new PaletteRoot + */ + public PaletteRoot createPalette(Visualization visualization) { + PaletteRoot palette = new PaletteRoot(); + palette.add(createToolsGroup(palette, visualization)); + createControls(palette, visualization); + createFromExtension(palette, visualization); + return palette; + } + + private void createFromExtension(PaletteRoot palette, + Visualization visualization) { + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.paletteEntry"); + // Iterate over controls + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + if ("entry".equals(configurationElement.getName())) { + try { + IInstallPaletteEntry entry = (IInstallPaletteEntry) configurationElement + .createExecutableExtension("class"); + entry.installPaletteEntry(palette, groupMap); + } catch (CoreException e) { + e.printStackTrace(); + } + } + } + } + } + + private void createControls(PaletteRoot palette, Visualization visualization) { + + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.control"); + + // Iterate over groups + for (IExtension extension : extensionPoint.getExtensions()) { + + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("group".equals(configurationElement.getName())) { + + String groupID = configurationElement.getAttribute("id"); + String groupName = configurationElement + .getAttribute("name"); + + PaletteDrawer componentsDrawer = new PaletteDrawer( + groupName); + if (!groupMap.containsKey(groupID)) + groupMap.put(groupID, componentsDrawer); + + } + + } + + } + + // Iterate over controls + for (IExtension extension : extensionPoint.getExtensions()) { + + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("control".equals(configurationElement.getName())) { + + String groupID = configurationElement + .getAttribute("groupid"); + PaletteDrawer groupDrawer = groupMap.get(groupID); + + if (groupDrawer != null) { + + // boolean createDefaultToolEntry = true; + + try { + IBControlService service = (IBControlService) configurationElement + .createExecutableExtension("service"); + if (service.showInPalette()) { + ToolEntry toolEntry = service.createToolEntry( + visualization, configurationElement); + if (toolEntry != null) { + groupDrawer.add(toolEntry); + } + } + } catch (CoreException e) { + // I think we can ignore the exception since + // we create a default tool entry which is + // independent from the configuration + // element + } + + // if (createDefaultToolEntry) + // groupDrawer.add(createDefaultToolEntry(type, + // visualization, configurationElement)); + + } + + } + + } + + } + + for (Map.Entry<String, PaletteDrawer> entry : groupMap.entrySet()) { + if (entry.getValue().getChildren().size() > 0) + palette.add(entry.getValue()); + } + + } + + /** + * Create the "Tools" group. + * + * @param visualization + */ + private PaletteContainer createToolsGroup(PaletteRoot palette, + Visualization visualization) { + PaletteToolbar toolbar = new PaletteToolbar("Tools"); + // Add a selection tool to the group + ToolEntry tool = new PanningSelectionToolEntry(); + toolbar.add(tool); + palette.setDefaultEntry(tool); + // Add a marquee tool to the group + toolbar.add(new MarqueeToolEntry()); + // Add connector tool to the group + toolbar.add(new ConnectionCreationToolEntry("Connection", + "Universal Connector", new BControlCreationFactory( + BConnection.TYPE, visualization), BMotionStudioImage + .getImageDescriptor("icons/icon_connection16.gif"), + BMotionStudioImage + .getImageDescriptor("icons/icon_connection24.gif"))); + return toolbar; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/InstallActions.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/InstallActions.java index feb252464e08a8aa477585bf5566ac775067d677..d2c7ada34e81b60a5df819d79fe2c4769c468179 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/InstallActions.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/InstallActions.java @@ -1,31 +1,31 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import org.eclipse.ui.part.WorkbenchPart; - -import de.bmotionstudio.gef.editor.action.BringToBottomAction; -import de.bmotionstudio.gef.editor.action.BringToBottomStepAction; -import de.bmotionstudio.gef.editor.action.BringToTopAction; -import de.bmotionstudio.gef.editor.action.BringToTopStepAction; -import de.bmotionstudio.gef.editor.action.FitImageAction; -import de.bmotionstudio.gef.editor.action.RenameAction; - -public class InstallActions extends AbstractInstallActions implements - IInstallActions { - - public void installActions(final WorkbenchPart part) { - installAction(RenameAction.ID, new RenameAction(part)); - installAction(FitImageAction.ID, new FitImageAction(part)); - installAction(BringToTopAction.ID, new BringToTopAction(part)); - installAction(BringToBottomAction.ID, new BringToBottomAction(part)); - installAction(BringToTopStepAction.ID, new BringToTopStepAction(part)); - installAction(BringToBottomStepAction.ID, new BringToBottomStepAction( - part)); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import org.eclipse.ui.part.WorkbenchPart; + +import de.bmotionstudio.gef.editor.action.BringToBottomAction; +import de.bmotionstudio.gef.editor.action.BringToBottomStepAction; +import de.bmotionstudio.gef.editor.action.BringToTopAction; +import de.bmotionstudio.gef.editor.action.BringToTopStepAction; +import de.bmotionstudio.gef.editor.action.FitImageAction; +import de.bmotionstudio.gef.editor.action.RenameAction; + +public class InstallActions extends AbstractInstallActions implements + IInstallActions { + + public void installActions(final WorkbenchPart part) { + installAction(RenameAction.ID, new RenameAction(part)); + installAction(FitImageAction.ID, new FitImageAction(part)); + installAction(BringToTopAction.ID, new BringToTopAction(part)); + installAction(BringToBottomAction.ID, new BringToBottomAction(part)); + installAction(BringToTopStepAction.ID, new BringToTopStepAction(part)); + installAction(BringToBottomStepAction.ID, new BringToBottomStepAction( + part)); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/InstallMenu.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/InstallMenu.java index b2c38c70835292ddb6582fb6a91301eac596504a..80e218fd68a77a67657c1fcbabd321d917b04de1 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/InstallMenu.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/InstallMenu.java @@ -1,56 +1,56 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor; - -import org.eclipse.gef.ui.actions.ActionRegistry; -import org.eclipse.gef.ui.actions.GEFActionConstants; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.ui.IActionBars; - -import de.bmotionstudio.gef.editor.action.BringToBottomAction; -import de.bmotionstudio.gef.editor.action.BringToBottomStepAction; -import de.bmotionstudio.gef.editor.action.BringToTopAction; -import de.bmotionstudio.gef.editor.action.BringToTopStepAction; -import de.bmotionstudio.gef.editor.action.FitImageAction; -import de.bmotionstudio.gef.editor.action.RenameAction; - -public class InstallMenu implements IInstallMenu { - - public void installMenu(IMenuManager menu, ActionRegistry regitry) { - - IAction action; - - action = regitry.getAction(FitImageAction.ID); - menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action); - action = regitry.getAction(RenameAction.ID); - menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action); - - // menu.appendToGroup(GEFActionConstants.GROUP_EDIT, new Separator( - // "de.bmotionstudio.gef.BringToGroup")); - - MenuManager adjustmentMenu = new MenuManager("Adjustment"); - menu.appendToGroup(GEFActionConstants.GROUP_EDIT, adjustmentMenu); - - action = regitry.getAction(BringToTopAction.ID); - adjustmentMenu.add(action); - action = regitry.getAction(BringToBottomAction.ID); - adjustmentMenu.add(action); - action = regitry.getAction(BringToTopStepAction.ID); - adjustmentMenu.add(action); - action = regitry.getAction(BringToBottomStepAction.ID); - adjustmentMenu.add(action); - - } - - public void installBar(IActionBars bars, ActionRegistry regitry) { - // bars.setGlobalActionHandler(ActionFactory.RENAME.getId(), regitry - // .getAction(ActionFactory.RENAME.getId())); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor; + +import org.eclipse.gef.ui.actions.ActionRegistry; +import org.eclipse.gef.ui.actions.GEFActionConstants; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.ui.IActionBars; + +import de.bmotionstudio.gef.editor.action.BringToBottomAction; +import de.bmotionstudio.gef.editor.action.BringToBottomStepAction; +import de.bmotionstudio.gef.editor.action.BringToTopAction; +import de.bmotionstudio.gef.editor.action.BringToTopStepAction; +import de.bmotionstudio.gef.editor.action.FitImageAction; +import de.bmotionstudio.gef.editor.action.RenameAction; + +public class InstallMenu implements IInstallMenu { + + public void installMenu(IMenuManager menu, ActionRegistry regitry) { + + IAction action; + + action = regitry.getAction(FitImageAction.ID); + menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action); + action = regitry.getAction(RenameAction.ID); + menu.appendToGroup(GEFActionConstants.GROUP_EDIT, action); + + // menu.appendToGroup(GEFActionConstants.GROUP_EDIT, new Separator( + // "de.bmotionstudio.gef.BringToGroup")); + + MenuManager adjustmentMenu = new MenuManager("Adjustment"); + menu.appendToGroup(GEFActionConstants.GROUP_EDIT, adjustmentMenu); + + action = regitry.getAction(BringToTopAction.ID); + adjustmentMenu.add(action); + action = regitry.getAction(BringToBottomAction.ID); + adjustmentMenu.add(action); + action = regitry.getAction(BringToTopStepAction.ID); + adjustmentMenu.add(action); + action = regitry.getAction(BringToBottomStepAction.ID); + adjustmentMenu.add(action); + + } + + public void installBar(IActionBars bars, ActionRegistry regitry) { + // bars.setGlobalActionHandler(ActionFactory.RENAME.getId(), regitry + // .getAction(ActionFactory.RENAME.getId())); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java similarity index 92% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizard.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java index 8286414959eceff4c0cd24db1347ba9cd6c5e9ef..d9a3d5c380584994b742f7faf36ad8d7b89d886a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionAbstractWizardDialog.java @@ -27,7 +27,7 @@ import org.eclipse.ui.IWorkbenchPart; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; -public abstract class BMotionAbstractWizard extends WizardDialog { +public abstract class BMotionAbstractWizardDialog extends WizardDialog { public static final int DELETE = 3; @@ -35,7 +35,7 @@ public abstract class BMotionAbstractWizard extends WizardDialog { private String deleteToolTip; - public BMotionAbstractWizard(IWorkbenchPart workbenchPart, IWizard newWizard) { + public BMotionAbstractWizardDialog(IWorkbenchPart workbenchPart, IWizard newWizard) { super(workbenchPart.getSite().getShell(), newWizard); this.workbenchPart = workbenchPart; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java similarity index 80% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizard.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java index 154c8f27cbc978d0249b1283cb28a9ff2e700d9e..46ff0b2aefbf331ebb500d982903448255c75270 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionObserverWizardDialog.java @@ -12,9 +12,9 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPart; -public class BMotionObserverWizard extends BMotionAbstractWizard { +public class BMotionObserverWizardDialog extends BMotionAbstractWizardDialog { - public BMotionObserverWizard(IWorkbenchPart workbenchPart, IWizard newWizard) { + public BMotionObserverWizardDialog(IWorkbenchPart workbenchPart, IWizard newWizard) { super(workbenchPart, newWizard); setShellStyle(SWT.CLOSE); setDeleteToolTip("Delete Observer"); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java similarity index 81% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizard.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java index 4f2b28f2412d0f2ce6e4f69bb8b3426735d452ce..f14aa16a5b28e12a8e7b0601ef55e65850ec328c 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionSchedulerEventWizardDialog.java @@ -8,16 +8,18 @@ package de.bmotionstudio.gef.editor.action; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.IWizard; +import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IWorkbenchPart; import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; -public class BMotionSchedulerEventWizard extends BMotionAbstractWizard { +public class BMotionSchedulerEventWizardDialog extends BMotionAbstractWizardDialog { - public BMotionSchedulerEventWizard(IWorkbenchPart workbenchPart, + public BMotionSchedulerEventWizardDialog(IWorkbenchPart workbenchPart, IWizard newWizard) { super(workbenchPart, newWizard); + setShellStyle(SWT.CLOSE); setDeleteToolTip("Delete Event"); } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverAddItemAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionWizardAddItemAction.java similarity index 84% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverAddItemAction.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionWizardAddItemAction.java index 3032d262182a434552c53ec56da03945ab2e0179..2f8b5d46dc22e42c7b94e193528b2ebfaabf22c4 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverAddItemAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionWizardAddItemAction.java @@ -4,7 +4,7 @@ * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) * */ -package de.bmotionstudio.gef.editor.observer.wizard; +package de.bmotionstudio.gef.editor.action; import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.jface.action.Action; @@ -13,12 +13,12 @@ import org.eclipse.jface.viewers.TableViewer; import de.bmotionstudio.gef.editor.BMotionStudioImage; -public class WizardObserverAddItemAction extends Action { +public class BMotionWizardAddItemAction extends Action { private TableViewer viewer; private Class<?> itemClass; - public WizardObserverAddItemAction(TableViewer viewer, Class<?> itemClass) { + public BMotionWizardAddItemAction(TableViewer viewer, Class<?> itemClass) { this.viewer = viewer; this.itemClass = itemClass; setText("Add new item"); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDeleteItemsAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionWizardDeleteItemsAction.java similarity index 84% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDeleteItemsAction.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionWizardDeleteItemsAction.java index f9b295f45726c41dff06010ba604f82177b3b836..1ad64e4046aec6232ca6f4a2c27fe400bc103345 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDeleteItemsAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BMotionWizardDeleteItemsAction.java @@ -4,7 +4,7 @@ * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) * */ -package de.bmotionstudio.gef.editor.observer.wizard; +package de.bmotionstudio.gef.editor.action; import java.util.Arrays; @@ -17,11 +17,11 @@ import org.eclipse.swt.widgets.Display; import de.bmotionstudio.gef.editor.BMotionStudioImage; -public class WizardObserverDeleteItemsAction extends Action { +public class BMotionWizardDeleteItemsAction extends Action { private TableViewer viewer; - public WizardObserverDeleteItemsAction(TableViewer viewer) { + public BMotionWizardDeleteItemsAction(TableViewer viewer) { this.viewer = viewer; setText("Delete selected items"); setImageDescriptor(BMotionStudioImage.getImageDescriptor( diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToBottomAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToBottomAction.java index a194b704361fe7ee5e5d63f1ad3de237c467e43d..0a599f4e003db6814fba319f412f22720939b1d6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToBottomAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToBottomAction.java @@ -1,79 +1,79 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.command.BringToBottomCommand; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; -import de.bmotionstudio.gef.editor.part.VisualizationPart; - -public class BringToBottomAction extends SelectionAction { - - public final static String ID = "de.bmotionstudio.gef.editor.action.bringToBottom"; - - public BringToBottomAction(final IWorkbenchPart part) { - super(part); - setLazyEnablementCalculation(false); - } - - protected void init() { - setText("Bring to bottom"); - setToolTipText("Bring to bottom"); - setId(ID); - ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_bringtobottom.gif"); - if (icon != null) { - setImageDescriptor(icon); - } - setEnabled(false); - } - - @Override - protected boolean calculateEnabled() { - List<?> selectedObjects = getSelectedObjects(); - if (selectedObjects.size() == 1) { - if (selectedObjects.get(0) instanceof VisualizationPart) { - return false; - } - } - return true; - } - - public BringToBottomCommand createBringToBottomCommand( - List<BControl> modelList) { - BringToBottomCommand command = new BringToBottomCommand(); - command.setControlList(modelList); - return command; - } - - public void run() { - - List<BControl> modelList = new ArrayList<BControl>(); - - List<?> selectedObjects = getSelectedObjects(); - - for (Object obj : selectedObjects) { - if (obj instanceof AppAbstractEditPart) { - modelList - .add((BControl) ((AppAbstractEditPart) obj).getModel()); - } - } - - execute(createBringToBottomCommand(modelList)); - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.action; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.command.BringToBottomCommand; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.VisualizationPart; + +public class BringToBottomAction extends SelectionAction { + + public final static String ID = "de.bmotionstudio.gef.editor.action.bringToBottom"; + + public BringToBottomAction(final IWorkbenchPart part) { + super(part); + setLazyEnablementCalculation(false); + } + + protected void init() { + setText("Bring to bottom"); + setToolTipText("Bring to bottom"); + setId(ID); + ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( + BMotionEditorPlugin.PLUGIN_ID, "icons/icon_bringtobottom.gif"); + if (icon != null) { + setImageDescriptor(icon); + } + setEnabled(false); + } + + @Override + protected boolean calculateEnabled() { + List<?> selectedObjects = getSelectedObjects(); + if (selectedObjects.size() == 1) { + if (selectedObjects.get(0) instanceof VisualizationPart) { + return false; + } + } + return true; + } + + public BringToBottomCommand createBringToBottomCommand( + List<BControl> modelList) { + BringToBottomCommand command = new BringToBottomCommand(); + command.setControlList(modelList); + return command; + } + + public void run() { + + List<BControl> modelList = new ArrayList<BControl>(); + + List<?> selectedObjects = getSelectedObjects(); + + for (Object obj : selectedObjects) { + if (obj instanceof AppAbstractEditPart) { + modelList + .add((BControl) ((AppAbstractEditPart) obj).getModel()); + } + } + + execute(createBringToBottomCommand(modelList)); + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToBottomStepAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToBottomStepAction.java index 07da88c2c8a32fbd45ad7273437fbbebbe4ca6ef..5ab0686daa9e7509083ae407650666b0fac39618 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToBottomStepAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToBottomStepAction.java @@ -1,80 +1,80 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.command.BringToBottomStepCommand; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; -import de.bmotionstudio.gef.editor.part.VisualizationPart; - -public class BringToBottomStepAction extends SelectionAction { - - public final static String ID = "de.bmotionstudio.gef.editor.action.bringToBottomStep"; - - public BringToBottomStepAction(final IWorkbenchPart part) { - super(part); - setLazyEnablementCalculation(false); - } - - protected void init() { - setText("Bring to bottom (Step)"); - setToolTipText("Bring to bottom (Step)"); - setId(ID); - ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( - BMotionEditorPlugin.PLUGIN_ID, - "icons/icon_bringtobottomstep.gif"); - if (icon != null) { - setImageDescriptor(icon); - } - setEnabled(false); - } - - @Override - protected boolean calculateEnabled() { - List<?> selectedObjects = getSelectedObjects(); - if (selectedObjects.size() == 1) { - if (selectedObjects.get(0) instanceof VisualizationPart) { - return false; - } - } - return true; - } - - public BringToBottomStepCommand createBringToBottomStepCommand( - List<BControl> modelList) { - BringToBottomStepCommand command = new BringToBottomStepCommand(); - command.setControlList(modelList); - return command; - } - - public void run() { - - List<BControl> modelList = new ArrayList<BControl>(); - - List<?> selectedObjects = getSelectedObjects(); - - for (Object obj : selectedObjects) { - if (obj instanceof AppAbstractEditPart) { - modelList - .add((BControl) ((AppAbstractEditPart) obj).getModel()); - } - } - - execute(createBringToBottomStepCommand(modelList)); - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.action; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.command.BringToBottomStepCommand; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.VisualizationPart; + +public class BringToBottomStepAction extends SelectionAction { + + public final static String ID = "de.bmotionstudio.gef.editor.action.bringToBottomStep"; + + public BringToBottomStepAction(final IWorkbenchPart part) { + super(part); + setLazyEnablementCalculation(false); + } + + protected void init() { + setText("Bring to bottom (Step)"); + setToolTipText("Bring to bottom (Step)"); + setId(ID); + ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( + BMotionEditorPlugin.PLUGIN_ID, + "icons/icon_bringtobottomstep.gif"); + if (icon != null) { + setImageDescriptor(icon); + } + setEnabled(false); + } + + @Override + protected boolean calculateEnabled() { + List<?> selectedObjects = getSelectedObjects(); + if (selectedObjects.size() == 1) { + if (selectedObjects.get(0) instanceof VisualizationPart) { + return false; + } + } + return true; + } + + public BringToBottomStepCommand createBringToBottomStepCommand( + List<BControl> modelList) { + BringToBottomStepCommand command = new BringToBottomStepCommand(); + command.setControlList(modelList); + return command; + } + + public void run() { + + List<BControl> modelList = new ArrayList<BControl>(); + + List<?> selectedObjects = getSelectedObjects(); + + for (Object obj : selectedObjects) { + if (obj instanceof AppAbstractEditPart) { + modelList + .add((BControl) ((AppAbstractEditPart) obj).getModel()); + } + } + + execute(createBringToBottomStepCommand(modelList)); + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToTopAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToTopAction.java index 002d611a260f932bc22897493a7170681bdcf7b3..0789ad7329d4d4d50343a28f13bff3c397fe243d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToTopAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToTopAction.java @@ -1,73 +1,73 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.command.BringToTopCommand; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; -import de.bmotionstudio.gef.editor.part.VisualizationPart; - -public class BringToTopAction extends SelectionAction { - - public final static String ID = "de.bmotionstudio.gef.editor.action.bringToTop"; - - public BringToTopAction(final IWorkbenchPart part) { - super(part); - setLazyEnablementCalculation(false); - } - - protected void init() { - setText("Bring to top"); - setToolTipText("Bring to top"); - setId(ID); - ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_bringtotop.gif"); - if (icon != null) { - setImageDescriptor(icon); - } - setEnabled(false); - } - - @Override - protected boolean calculateEnabled() { - List<?> selectedObjects = getSelectedObjects(); - if (selectedObjects.size() == 1) { - if (selectedObjects.get(0) instanceof VisualizationPart) { - return false; - } - } - return true; - } - - public BringToTopCommand createBringToTopCommand(List<BControl> controlList) { - BringToTopCommand command = new BringToTopCommand(); - command.setControlList(controlList); - return command; - } - - public void run() { - List<BControl> controlList = new ArrayList<BControl>(); - List<?> selectedObjects = getSelectedObjects(); - for (Object obj : selectedObjects) { - if (obj instanceof AppAbstractEditPart) { - controlList.add((BControl) ((AppAbstractEditPart) obj) - .getModel()); - } - } - execute(createBringToTopCommand(controlList)); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.action; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.command.BringToTopCommand; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.VisualizationPart; + +public class BringToTopAction extends SelectionAction { + + public final static String ID = "de.bmotionstudio.gef.editor.action.bringToTop"; + + public BringToTopAction(final IWorkbenchPart part) { + super(part); + setLazyEnablementCalculation(false); + } + + protected void init() { + setText("Bring to top"); + setToolTipText("Bring to top"); + setId(ID); + ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( + BMotionEditorPlugin.PLUGIN_ID, "icons/icon_bringtotop.gif"); + if (icon != null) { + setImageDescriptor(icon); + } + setEnabled(false); + } + + @Override + protected boolean calculateEnabled() { + List<?> selectedObjects = getSelectedObjects(); + if (selectedObjects.size() == 1) { + if (selectedObjects.get(0) instanceof VisualizationPart) { + return false; + } + } + return true; + } + + public BringToTopCommand createBringToTopCommand(List<BControl> controlList) { + BringToTopCommand command = new BringToTopCommand(); + command.setControlList(controlList); + return command; + } + + public void run() { + List<BControl> controlList = new ArrayList<BControl>(); + List<?> selectedObjects = getSelectedObjects(); + for (Object obj : selectedObjects) { + if (obj instanceof AppAbstractEditPart) { + controlList.add((BControl) ((AppAbstractEditPart) obj) + .getModel()); + } + } + execute(createBringToTopCommand(controlList)); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToTopStepAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToTopStepAction.java index 7b1c8e97c08c96a1abdec0970cbe27b5546adbfc..2e0e89c5d76013b7fc913b1ed8b280512cad01b8 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToTopStepAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/BringToTopStepAction.java @@ -1,79 +1,79 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.command.BringToTopStepCommand; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; -import de.bmotionstudio.gef.editor.part.VisualizationPart; - -public class BringToTopStepAction extends SelectionAction { - - public final static String ID = "de.bmotionstudio.gef.editor.action.bringToTopStep"; - - public BringToTopStepAction(final IWorkbenchPart part) { - super(part); - setLazyEnablementCalculation(false); - } - - protected void init() { - setText("Bring to top (Step)"); - setToolTipText("Bring to top (Step)"); - setId(ID); - ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_bringtotopstep.gif"); - if (icon != null) { - setImageDescriptor(icon); - } - setEnabled(false); - } - - @Override - protected boolean calculateEnabled() { - List<?> selectedObjects = getSelectedObjects(); - if (selectedObjects.size() == 1) { - if (selectedObjects.get(0) instanceof VisualizationPart) { - return false; - } - } - return true; - } - - public BringToTopStepCommand createBringToTopStepCommand( - List<BControl> modelList) { - BringToTopStepCommand command = new BringToTopStepCommand(); - command.setControlList(modelList); - return command; - } - - public void run() { - - List<BControl> modelList = new ArrayList<BControl>(); - - List<?> selectedObjects = getSelectedObjects(); - - for (Object obj : selectedObjects) { - if (obj instanceof AppAbstractEditPart) { - modelList - .add((BControl) ((AppAbstractEditPart) obj).getModel()); - } - } - - execute(createBringToTopStepCommand(modelList)); - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.action; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.command.BringToTopStepCommand; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.VisualizationPart; + +public class BringToTopStepAction extends SelectionAction { + + public final static String ID = "de.bmotionstudio.gef.editor.action.bringToTopStep"; + + public BringToTopStepAction(final IWorkbenchPart part) { + super(part); + setLazyEnablementCalculation(false); + } + + protected void init() { + setText("Bring to top (Step)"); + setToolTipText("Bring to top (Step)"); + setId(ID); + ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( + BMotionEditorPlugin.PLUGIN_ID, "icons/icon_bringtotopstep.gif"); + if (icon != null) { + setImageDescriptor(icon); + } + setEnabled(false); + } + + @Override + protected boolean calculateEnabled() { + List<?> selectedObjects = getSelectedObjects(); + if (selectedObjects.size() == 1) { + if (selectedObjects.get(0) instanceof VisualizationPart) { + return false; + } + } + return true; + } + + public BringToTopStepCommand createBringToTopStepCommand( + List<BControl> modelList) { + BringToTopStepCommand command = new BringToTopStepCommand(); + command.setControlList(modelList); + return command; + } + + public void run() { + + List<BControl> modelList = new ArrayList<BControl>(); + + List<?> selectedObjects = getSelectedObjects(); + + for (Object obj : selectedObjects) { + if (obj instanceof AppAbstractEditPart) { + modelList + .add((BControl) ((AppAbstractEditPart) obj).getModel()); + } + } + + execute(createBringToTopStepCommand(modelList)); + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/CopyAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/CopyAction.java index 0e0984a6654e422c6b5fadc8c42d80b1f6644799..7f59b18c7d63d10518003dbcc5c57c5301f3da5a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/CopyAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/CopyAction.java @@ -1,84 +1,84 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import java.util.Iterator; -import java.util.List; - -import org.eclipse.gef.EditPart; -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.ActionFactory; - -import de.bmotionstudio.gef.editor.command.CopyCommand; -import de.bmotionstudio.gef.editor.model.BControl; - -public class CopyAction extends SelectionAction { - - public CopyAction(IWorkbenchPart part) { - super(part); - // force calculateEnabled() to be called in every context - setLazyEnablementCalculation(true); - } - - @Override - protected void init() { - super.init(); - ISharedImages sharedImages = PlatformUI.getWorkbench() - .getSharedImages(); - setText("Copy"); - setId(ActionFactory.COPY.getId()); - setHoverImageDescriptor(sharedImages - .getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); - setImageDescriptor(sharedImages - .getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); - setDisabledImageDescriptor(sharedImages - .getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED)); - setEnabled(false); - } - - private Command createCopyCommand(List<Object> selectedObjects) { - if (selectedObjects == null || selectedObjects.isEmpty()) - return null; - CopyCommand cmd = new CopyCommand(); - Iterator<Object> it = selectedObjects.iterator(); - while (it.hasNext()) { - Object nextElement = it.next(); - if (nextElement instanceof EditPart) { - EditPart ep = (EditPart) nextElement; - BControl node = (BControl) ep.getModel(); - if (!cmd.isCopyableControl(node)) - return null; - cmd.addElement(node); - } - - } - return cmd; - } - - @SuppressWarnings("unchecked") - @Override - protected boolean calculateEnabled() { - Command cmd = createCopyCommand(getSelectedObjects()); - if (cmd == null) - return false; - return cmd.canExecute(); - } - - @SuppressWarnings("unchecked") - @Override - public void run() { - Command cmd = createCopyCommand(getSelectedObjects()); - if (cmd != null && cmd.canExecute()) { - cmd.execute(); - } - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.action; + +import java.util.Iterator; +import java.util.List; + +import org.eclipse.gef.EditPart; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.ActionFactory; + +import de.bmotionstudio.gef.editor.command.CopyCommand; +import de.bmotionstudio.gef.editor.model.BControl; + +public class CopyAction extends SelectionAction { + + public CopyAction(IWorkbenchPart part) { + super(part); + // force calculateEnabled() to be called in every context + setLazyEnablementCalculation(true); + } + + @Override + protected void init() { + super.init(); + ISharedImages sharedImages = PlatformUI.getWorkbench() + .getSharedImages(); + setText("Copy"); + setId(ActionFactory.COPY.getId()); + setHoverImageDescriptor(sharedImages + .getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); + setImageDescriptor(sharedImages + .getImageDescriptor(ISharedImages.IMG_TOOL_COPY)); + setDisabledImageDescriptor(sharedImages + .getImageDescriptor(ISharedImages.IMG_TOOL_COPY_DISABLED)); + setEnabled(false); + } + + private Command createCopyCommand(List<Object> selectedObjects) { + if (selectedObjects == null || selectedObjects.isEmpty()) + return null; + CopyCommand cmd = new CopyCommand(); + Iterator<Object> it = selectedObjects.iterator(); + while (it.hasNext()) { + Object nextElement = it.next(); + if (nextElement instanceof EditPart) { + EditPart ep = (EditPart) nextElement; + BControl node = (BControl) ep.getModel(); + if (!cmd.isCopyableControl(node)) + return null; + cmd.addElement(node); + } + + } + return cmd; + } + + @SuppressWarnings("unchecked") + @Override + protected boolean calculateEnabled() { + Command cmd = createCopyCommand(getSelectedObjects()); + if (cmd == null) + return false; + return cmd.canExecute(); + } + + @SuppressWarnings("unchecked") + @Override + public void run() { + Command cmd = createCopyCommand(getSelectedObjects()); + if (cmd != null && cmd.canExecute()) { + cmd.execute(); + } + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/FitImageAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/FitImageAction.java index ec7bd7f0c8cac4d6aa79b94fde6f690424e1b7f6..c8e06a550d8a87acc93298e9e087fed126fafb7f 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/FitImageAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/FitImageAction.java @@ -1,144 +1,144 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.resources.IFile; -import org.eclipse.gef.EditPart; -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.command.FitImageCommand; -import de.bmotionstudio.gef.editor.model.BControl; - -public class FitImageAction extends SelectionAction { - - public final static String ID = "de.bmotionstudio.gef.editor.action.fitImage"; - - public FitImageAction(final IWorkbenchPart part) { - super(part); - setLazyEnablementCalculation(false); - } - - protected void init() { - setText("Fit size to image"); - setToolTipText("Fit size to image"); - setId(ID); - ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_fitimage.png"); - if (icon != null) { - setImageDescriptor(icon); - } - setEnabled(false); - } - - @Override - protected boolean calculateEnabled() { - List<?> selectedObjects = getSelectedObjects(); - for (Object obj : selectedObjects) { - if (obj instanceof EditPart) { - EditPart part = (EditPart) obj; - BControl bcontrol = (BControl) part.getModel(); - if (bcontrol - .getAttributeValue(AttributeConstants.ATTRIBUTE_IMAGE) != null) { - return true; - } - } - } - return false; - } - - public FitImageCommand createFitImageCommand(List<BControl> modelList, - Map<BControl, org.eclipse.draw2d.geometry.Rectangle> newSizeMap) { - FitImageCommand command = new FitImageCommand(); - command.setModelList(modelList); - command.setNewSizeMap(newSizeMap); - return command; - } - - public void run() { - - List<BControl> modelList = new ArrayList<BControl>(); - Map<BControl, org.eclipse.draw2d.geometry.Rectangle> newSizeMap = new HashMap<BControl, org.eclipse.draw2d.geometry.Rectangle>(); - - List<?> selectedObjects = getSelectedObjects(); - - for (Object obj : selectedObjects) { - - if (obj instanceof EditPart) { - - EditPart part = (EditPart) obj; - BControl control = (BControl) part.getModel(); - - Object imgAttribute = control - .getAttributeValue(AttributeConstants.ATTRIBUTE_IMAGE); - - if (imgAttribute != null) { - - String imagePath = control.getAttributeValue( - AttributeConstants.ATTRIBUTE_IMAGE).toString(); - - Rectangle imageBounds = null; - Image img = null; - - IFile pFile = control.getVisualization().getProjectFile(); - - if (pFile != null) { - final String myPath = (pFile.getProject().getLocation() - + "/images/" + imagePath).replace("file:", ""); - if (new File(myPath).exists() && imagePath.length() > 0) { - img = new Image(Display.getCurrent(), myPath); - imageBounds = img.getBounds(); - } - } - - if (imageBounds != null) { - - modelList.add(control); - newSizeMap - .put(control, - new org.eclipse.draw2d.geometry.Rectangle( - Integer.valueOf(control - .getAttributeValue( - AttributeConstants.ATTRIBUTE_X) - .toString()), - Integer.valueOf(control - .getAttributeValue( - AttributeConstants.ATTRIBUTE_Y) - .toString()), - imageBounds.width, - imageBounds.height)); - - } - - if (img != null) { - img.dispose(); - } - - } - - } - - } - - execute(createFitImageCommand(modelList, newSizeMap)); - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.action; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.resources.IFile; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.command.FitImageCommand; +import de.bmotionstudio.gef.editor.model.BControl; + +public class FitImageAction extends SelectionAction { + + public final static String ID = "de.bmotionstudio.gef.editor.action.fitImage"; + + public FitImageAction(final IWorkbenchPart part) { + super(part); + setLazyEnablementCalculation(false); + } + + protected void init() { + setText("Fit size to image"); + setToolTipText("Fit size to image"); + setId(ID); + ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( + BMotionEditorPlugin.PLUGIN_ID, "icons/icon_fitimage.png"); + if (icon != null) { + setImageDescriptor(icon); + } + setEnabled(false); + } + + @Override + protected boolean calculateEnabled() { + List<?> selectedObjects = getSelectedObjects(); + for (Object obj : selectedObjects) { + if (obj instanceof EditPart) { + EditPart part = (EditPart) obj; + BControl bcontrol = (BControl) part.getModel(); + if (bcontrol + .getAttributeValue(AttributeConstants.ATTRIBUTE_IMAGE) != null) { + return true; + } + } + } + return false; + } + + public FitImageCommand createFitImageCommand(List<BControl> modelList, + Map<BControl, org.eclipse.draw2d.geometry.Rectangle> newSizeMap) { + FitImageCommand command = new FitImageCommand(); + command.setModelList(modelList); + command.setNewSizeMap(newSizeMap); + return command; + } + + public void run() { + + List<BControl> modelList = new ArrayList<BControl>(); + Map<BControl, org.eclipse.draw2d.geometry.Rectangle> newSizeMap = new HashMap<BControl, org.eclipse.draw2d.geometry.Rectangle>(); + + List<?> selectedObjects = getSelectedObjects(); + + for (Object obj : selectedObjects) { + + if (obj instanceof EditPart) { + + EditPart part = (EditPart) obj; + BControl control = (BControl) part.getModel(); + + Object imgAttribute = control + .getAttributeValue(AttributeConstants.ATTRIBUTE_IMAGE); + + if (imgAttribute != null) { + + String imagePath = control.getAttributeValue( + AttributeConstants.ATTRIBUTE_IMAGE).toString(); + + Rectangle imageBounds = null; + Image img = null; + + IFile pFile = control.getVisualization().getProjectFile(); + + if (pFile != null) { + final String myPath = (pFile.getProject().getLocation() + + "/images/" + imagePath).replace("file:", ""); + if (new File(myPath).exists() && imagePath.length() > 0) { + img = new Image(Display.getCurrent(), myPath); + imageBounds = img.getBounds(); + } + } + + if (imageBounds != null) { + + modelList.add(control); + newSizeMap + .put(control, + new org.eclipse.draw2d.geometry.Rectangle( + Integer.valueOf(control + .getAttributeValue( + AttributeConstants.ATTRIBUTE_X) + .toString()), + Integer.valueOf(control + .getAttributeValue( + AttributeConstants.ATTRIBUTE_Y) + .toString()), + imageBounds.width, + imageBounds.height)); + + } + + if (img != null) { + img.dispose(); + } + + } + + } + + } + + execute(createFitImageCommand(modelList, newSizeMap)); + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/ObserverAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java similarity index 90% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/ObserverAction.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java index 60d41ba1c327d655b01e28c2f6a92ed27d0a47d1..f63e35f8a0cc0a6d2ef637b27692362e2527d7f5 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/ObserverAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenObserverAction.java @@ -23,14 +23,14 @@ import de.bmotionstudio.gef.editor.observer.Observer; import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.prob.logging.Logger; -public class ObserverAction extends SelectionAction { +public class OpenObserverAction extends SelectionAction { private String className; private Observer clonedObserver; private Observer newObserver; private BControl actionControl; - public ObserverAction(IWorkbenchPart part) { + public OpenObserverAction(IWorkbenchPart part) { super(part); setLazyEnablementCalculation(true); } @@ -80,7 +80,7 @@ public class ObserverAction extends SelectionAction { if (wizard != null) { - BMotionObserverWizard dialog = new BMotionObserverWizard( + BMotionObserverWizardDialog dialog = new BMotionObserverWizardDialog( getWorkbenchPart(), wizard); dialog.create(); dialog.getShell().setSize(wizard.getSize()); @@ -121,7 +121,7 @@ public class ObserverAction extends SelectionAction { if (clonedObserver != null) actionControl.addObserver(clonedObserver); - } else if (status == BMotionObserverWizard.DELETE) { + } else if (status == BMotionObserverWizardDialog.DELETE) { RemoveObserverAction action = new RemoveObserverAction( getWorkbenchPart()); action.setControl(getControl()); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/SchedulerEventAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java similarity index 92% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/SchedulerEventAction.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java index eebbb8f3405ef42d1fa48bfbbcc62a4e6f9372ed..dff15928f5b8e190611a5eaba4c8f43eff2ef959 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/SchedulerEventAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/OpenSchedulerEventAction.java @@ -23,13 +23,13 @@ import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; import de.prob.logging.Logger; -public class SchedulerEventAction extends SelectionAction { +public class OpenSchedulerEventAction extends SelectionAction { private String className; private String eventID; private SchedulerEvent clonedSchedulerEvent; - public SchedulerEventAction(IWorkbenchPart part) { + public OpenSchedulerEventAction(IWorkbenchPart part) { super(part); setLazyEnablementCalculation(true); } @@ -79,7 +79,7 @@ public class SchedulerEventAction extends SelectionAction { if (wizard != null) { - BMotionSchedulerEventWizard dialog = new BMotionSchedulerEventWizard( + BMotionSchedulerEventWizardDialog dialog = new BMotionSchedulerEventWizardDialog( getWorkbenchPart(), wizard); dialog.create(); dialog.getShell().setSize(wizard.getSize()); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/PasteAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/PasteAction.java index bebe030a39054980809c4ab90abb7bfb07a45e3a..25cc581f3994b7b1facde5886068b8909095e454 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/PasteAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/PasteAction.java @@ -1,58 +1,81 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.ActionFactory; - -import de.bmotionstudio.gef.editor.command.PasteCommand; - -public class PasteAction extends SelectionAction { - - public PasteAction(IWorkbenchPart part) { - super(part); - // force calculateEnabled() to be called in every context - setLazyEnablementCalculation(true); - } - - protected void init() { - super.init(); - ISharedImages sharedImages = PlatformUI.getWorkbench() - .getSharedImages(); - setText("Paste"); - setId(ActionFactory.PASTE.getId()); - setHoverImageDescriptor(sharedImages - .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); - setImageDescriptor(sharedImages - .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); - setDisabledImageDescriptor(sharedImages - .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED)); - setEnabled(false); - } - - private PasteCommand createPasteCommand() { - return new PasteCommand(); - } - - @Override - protected boolean calculateEnabled() { - Command command = createPasteCommand(); - return command != null && command.canExecute(); - } - - @Override - public void run() { - PasteCommand command = createPasteCommand(); - if (command != null && command.canExecute()) - execute(command); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.action; + +import java.util.Iterator; +import java.util.List; + +import org.eclipse.gef.EditPart; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.ActionFactory; + +import de.bmotionstudio.gef.editor.command.PasteCommand; +import de.bmotionstudio.gef.editor.model.BControl; + +public class PasteAction extends SelectionAction { + + public PasteAction(IWorkbenchPart part) { + super(part); + // force calculateEnabled() to be called in every context + setLazyEnablementCalculation(true); + } + + protected void init() { + super.init(); + ISharedImages sharedImages = PlatformUI.getWorkbench() + .getSharedImages(); + setText("Paste"); + setId(ActionFactory.PASTE.getId()); + setHoverImageDescriptor(sharedImages + .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); + setImageDescriptor(sharedImages + .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE)); + setDisabledImageDescriptor(sharedImages + .getImageDescriptor(ISharedImages.IMG_TOOL_PASTE_DISABLED)); + setEnabled(false); + } + + private PasteCommand createPasteCommand(List<Object> selectedObjects) { + + PasteCommand cmd = new PasteCommand(); + + Iterator<Object> it = selectedObjects.iterator(); + while (it.hasNext()) { + Object nextElement = it.next(); + if (nextElement instanceof EditPart) { + EditPart ep = (EditPart) nextElement; + BControl node = (BControl) ep.getModel(); + if (!cmd.isContainer(node)) + return null; + cmd.addElement(node); + } + } + + return cmd; + + } + + @SuppressWarnings("unchecked") + @Override + protected boolean calculateEnabled() { + Command command = createPasteCommand(getSelectedObjects()); + return command != null && command.canExecute(); + } + + @SuppressWarnings("unchecked") + @Override + public void run() { + PasteCommand command = createPasteCommand(getSelectedObjects()); + if (command != null && command.canExecute()) + execute(command); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameAction.java index ab551e14c0e97659ed8bbcbcfcee88c2b44872e8..9e3529477541ca7c0ad0fa5a963d155c71d2ebc4 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/action/RenameAction.java @@ -1,103 +1,103 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.action; - -import java.util.HashMap; -import java.util.List; - -import org.eclipse.gef.EditPart; -import org.eclipse.gef.Request; -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.ui.actions.SelectionAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.actions.ActionFactory; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.internal.RenameWizard; -import de.bmotionstudio.gef.editor.model.BControl; - -public class RenameAction extends SelectionAction { - - public final static String ID = ActionFactory.RENAME.getId(); - - public RenameAction(final IWorkbenchPart part) { - super(part); - setLazyEnablementCalculation(false); - } - - protected void init() { - setText("Rename..."); - setToolTipText("Rename"); - setId(ID); - ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( - BMotionEditorPlugin.PLUGIN_ID, "icons/icon_rename.png"); - if (icon != null) { - setImageDescriptor(icon); - } - setEnabled(false); - } - - @Override - protected boolean calculateEnabled() { - Command cmd = createRenameCommand(""); - if (cmd == null) { - return false; - } - return true; - } - - public Command createRenameCommand(final String name) { - Request renameReq = new Request("rename"); - - HashMap<String, String> reqData = new HashMap<String, String>(); - reqData.put("newName", name); - renameReq.setExtendedData(reqData); - - if (getSelectedObjects().size() > 0) { - if (getSelectedObjects().get(0) instanceof EditPart) { - EditPart object = (EditPart) getSelectedObjects().get(0); - Command cmd = object.getCommand(renameReq); - return cmd; - } - } - - return null; - } - - public void run() { - BControl bcontrol = getSelectedBControl(); - RenameWizard wizard = new RenameWizard(bcontrol.getAttributeValue( - AttributeConstants.ATTRIBUTE_TEXT).toString()); - WizardDialog dialog = new WizardDialog(getWorkbenchPart().getSite() - .getShell(), wizard); - dialog.create(); - dialog.getShell().setSize(400, 315); - dialog.getShell().setText("BMotion Studio Rename Wizard"); - - if (dialog.open() == WizardDialog.OK) { - String name = wizard.getRenameValue(); - execute(createRenameCommand(name)); - } - } - - private BControl getSelectedBControl() { - List<?> objects = getSelectedObjects(); - if (objects.isEmpty()) { - return null; - } - if (!(objects.get(0) instanceof EditPart)) { - return null; - } - EditPart part = (EditPart) objects.get(0); - return (BControl) part.getModel(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.action; + +import java.util.HashMap; +import java.util.List; + +import org.eclipse.gef.EditPart; +import org.eclipse.gef.Request; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.ui.actions.SelectionAction; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.actions.ActionFactory; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.internal.RenameWizard; +import de.bmotionstudio.gef.editor.model.BControl; + +public class RenameAction extends SelectionAction { + + public final static String ID = ActionFactory.RENAME.getId(); + + public RenameAction(final IWorkbenchPart part) { + super(part); + setLazyEnablementCalculation(false); + } + + protected void init() { + setText("Rename..."); + setToolTipText("Rename"); + setId(ID); + ImageDescriptor icon = AbstractUIPlugin.imageDescriptorFromPlugin( + BMotionEditorPlugin.PLUGIN_ID, "icons/icon_rename.png"); + if (icon != null) { + setImageDescriptor(icon); + } + setEnabled(false); + } + + @Override + protected boolean calculateEnabled() { + Command cmd = createRenameCommand(""); + if (cmd == null) { + return false; + } + return true; + } + + public Command createRenameCommand(final String name) { + Request renameReq = new Request("rename"); + + HashMap<String, String> reqData = new HashMap<String, String>(); + reqData.put("newName", name); + renameReq.setExtendedData(reqData); + + if (getSelectedObjects().size() > 0) { + if (getSelectedObjects().get(0) instanceof EditPart) { + EditPart object = (EditPart) getSelectedObjects().get(0); + Command cmd = object.getCommand(renameReq); + return cmd; + } + } + + return null; + } + + public void run() { + BControl bcontrol = getSelectedBControl(); + RenameWizard wizard = new RenameWizard(bcontrol.getAttributeValue( + AttributeConstants.ATTRIBUTE_TEXT).toString()); + WizardDialog dialog = new WizardDialog(getWorkbenchPart().getSite() + .getShell(), wizard); + dialog.create(); + dialog.getShell().setSize(400, 315); + dialog.getShell().setText("BMotion Studio Rename Wizard"); + + if (dialog.open() == WizardDialog.OK) { + String name = wizard.getRenameValue(); + execute(createRenameCommand(name)); + } + } + + private BControl getSelectedBControl() { + List<?> objects = getSelectedObjects(); + if (objects.isEmpty()) { + return null; + } + if (!(objects.get(0) instanceof EditPart)) { + return null; + } + EditPart part = (EditPart) objects.get(0); + return (BControl) part.getModel(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/animation/StaticListenerRegistry.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/animation/StaticListenerRegistry.java index 1e2a30b7a9a74ef566ba838a5f13d32c1f66a4ec..8f7c73084ab2477a8d512b4671fb60de638edd53 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/animation/StaticListenerRegistry.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/animation/StaticListenerRegistry.java @@ -1,67 +1,67 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.animation; - -import java.util.HashSet; -import java.util.Set; - -import de.prob.core.IAnimationListener; -import de.prob.core.IComputationListener; -import de.prob.core.ILifecycleListener; -import de.prob.core.domainobjects.Operation; -import de.prob.core.domainobjects.State; - -public class StaticListenerRegistry implements ILifecycleListener, - IComputationListener, IAnimationListener { - - private static final Set<ILifecycleListener> lifeCycleListeners = new HashSet<ILifecycleListener>(); - private static final Set<IComputationListener> computationListeners = new HashSet<IComputationListener>(); - private static final Set<IAnimationListener> animationListeners = new HashSet<IAnimationListener>(); - - public static void registerListener(final ILifecycleListener listener) { - lifeCycleListeners.add(listener); - } - - public static void unregisterListener(final ILifecycleListener listener) { - lifeCycleListeners.remove(listener); - } - - public static void registerListener(final IComputationListener listener) { - computationListeners.add(listener); - } - - public static void unregisterListener(final IComputationListener listener) { - computationListeners.remove(listener); - } - - public static void registerListener(final IAnimationListener listener) { - animationListeners.add(listener); - } - - public static void unregisterListener(final IAnimationListener listener) { - animationListeners.remove(listener); - } - - public void reset() { - for (final ILifecycleListener listener : lifeCycleListeners) { - listener.reset(); - } - } - - public void computedState(final State state) { - for (final IComputationListener listener : computationListeners) { - listener.computedState(state); - } - } - - public void currentStateChanged(final State currentState, - final Operation operation) { - for (final IAnimationListener listener : animationListeners) { - listener.currentStateChanged(currentState, operation); - } - } +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.animation; + +import java.util.HashSet; +import java.util.Set; + +import de.prob.core.IAnimationListener; +import de.prob.core.IComputationListener; +import de.prob.core.ILifecycleListener; +import de.prob.core.domainobjects.Operation; +import de.prob.core.domainobjects.State; + +public class StaticListenerRegistry implements ILifecycleListener, + IComputationListener, IAnimationListener { + + private static final Set<ILifecycleListener> lifeCycleListeners = new HashSet<ILifecycleListener>(); + private static final Set<IComputationListener> computationListeners = new HashSet<IComputationListener>(); + private static final Set<IAnimationListener> animationListeners = new HashSet<IAnimationListener>(); + + public static void registerListener(final ILifecycleListener listener) { + lifeCycleListeners.add(listener); + } + + public static void unregisterListener(final ILifecycleListener listener) { + lifeCycleListeners.remove(listener); + } + + public static void registerListener(final IComputationListener listener) { + computationListeners.add(listener); + } + + public static void unregisterListener(final IComputationListener listener) { + computationListeners.remove(listener); + } + + public static void registerListener(final IAnimationListener listener) { + animationListeners.add(listener); + } + + public static void unregisterListener(final IAnimationListener listener) { + animationListeners.remove(listener); + } + + public void reset() { + for (final ILifecycleListener listener : lifeCycleListeners) { + listener.reset(); + } + } + + public void computedState(final State state) { + for (final IComputationListener listener : computationListeners) { + listener.computedState(state); + } + } + + public void currentStateChanged(final State currentState, + final Operation operation) { + for (final IAnimationListener listener : animationListeners) { + listener.currentStateChanged(currentState, operation); + } + } } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java index 952e2adb8c611e94217b02f9d0921cfa6542d26c..0de1ef287ce66ad14499141c51fe22e03cea03e6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/AbstractAttribute.java @@ -1,199 +1,205 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import java.util.ArrayList; -import java.util.HashMap; - -import org.eclipse.jface.viewers.ICellEditorValidator; -import org.eclipse.ui.views.properties.IPropertyDescriptor; -import org.eclipse.ui.views.properties.IPropertySource; -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; - -/** - * - * Represents an attribute of a {@link BControl}. - * - * @author Lukas Ladenberger - * - */ -public abstract class AbstractAttribute implements IPropertySource, Cloneable { - - public static final String ROOT = "de.bmotionstudio.gef.editor.attribute.BAttributeRoot"; - - private transient HashMap<String, AbstractAttribute> children; - private transient BControl control; - private String group; - private boolean editable; - private boolean show; - private Object value; - - private transient PropertyDescriptor propertyDescriptor; - private transient Object initValue; - - public AbstractAttribute(Object value) { - this.value = value; - this.initValue = value; - this.editable = true; - this.show = true; - } - - private Object readResolve() { - this.initValue = this.value; - return this; - } - - public void addChild(AbstractAttribute atr) { - if (!getChildren().containsKey(atr.getID())) { - getChildren().put(atr.getID(), atr); - } - } - - public Boolean hasChildren() { - return !getChildren().isEmpty(); - } - - public PropertyDescriptor getPropertyDescriptor() { - propertyDescriptor = new PropertyDescriptor(getID(), getName()); - if (editable) { - propertyDescriptor = preparePropertyDescriptor(); - if (propertyDescriptor != null) { - propertyDescriptor.setValidator(new ICellEditorValidator() { - public String isValid(Object value) { - return validateValue(value, control); - } - }); - } - } - return propertyDescriptor; - } - - protected abstract PropertyDescriptor preparePropertyDescriptor(); - - public Object unmarshal(String s) { - return s; - } - - public String getID() { - return getClass().getName(); - } - - public abstract String getName(); - - public void setGroup(AbstractAttribute group) { - setGroup(group.getClass().getName()); - } - - public void setGroup(String group) { - this.group = group; - } - - public String getGroup() { - return group; - } - - public Object getEditableValue() { - return this; - } - - public IPropertyDescriptor[] getPropertyDescriptors() { - ArrayList<IPropertyDescriptor> descriptor = new ArrayList<IPropertyDescriptor>(); - for (AbstractAttribute atr : getChildren().values()) { - descriptor.add(atr.getPropertyDescriptor()); - } - return descriptor.toArray(new IPropertyDescriptor[0]); - } - - public Object getPropertyValue(Object attrID) { - AbstractAttribute atr = getChildren().get(attrID); - if (atr.hasChildren()) { - return atr; - } else { - return atr.getValue(); - } - } - - public boolean isPropertySet(Object id) { - return false; - } - - public void resetPropertyValue(Object id) { - } - - public void setPropertyValue(Object id, Object value) { - AbstractAttribute atr = children.get(id); - atr.setValue(value); - } - - public void setValue(Object value) { - setValue(value, true); - } - - public void setValue(Object value, Boolean firePropertyChange) { - Object oldVal = this.value; - this.value = value; - if (firePropertyChange && control != null) - control.getListeners().firePropertyChange(getID(), oldVal, value); - } - - public void restoreValue() { - Object oldVal = this.value; - this.value = this.initValue; - if (control != null) - control.getListeners().firePropertyChange(getID(), oldVal, value); - } - - public Object getValue() { - return this.value; - } - - public Object getInitValue() { - return initValue; - } - - public HashMap<String, AbstractAttribute> getChildren() { - if (children == null) - children = new HashMap<String, AbstractAttribute>(); - return children; - } - - @Override - public AbstractAttribute clone() throws CloneNotSupportedException { - return (AbstractAttribute) super.clone(); - } - - public void setEditable(boolean editable) { - this.editable = editable; - } - - public boolean isEditable() { - return editable; - } - - public String validateValue(Object value, BControl control) { - return null; - } - - public void setShow(boolean show) { - this.show = show; - } - - public boolean show() { - return show; - } - - public BControl getControl() { - return control; - } - - public void setControl(BControl control) { - this.control = control; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.eclipse.jface.viewers.ICellEditorValidator; +import org.eclipse.ui.views.properties.IPropertyDescriptor; +import org.eclipse.ui.views.properties.IPropertySource; +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; + +/** + * + * Represents an attribute of a {@link BControl}. + * + * @author Lukas Ladenberger + * + */ +public abstract class AbstractAttribute implements IPropertySource, Cloneable { + + public static final String ROOT = "de.bmotionstudio.gef.editor.attribute.BAttributeRoot"; + + private transient HashMap<String, AbstractAttribute> children; + private transient BControl control; + private transient PropertyDescriptor propertyDescriptor; + private transient Object initValue; + private transient boolean editable; + private transient boolean show; + private transient String group; + + private Object value; + + public AbstractAttribute(Object value) { + this(value, true, true); + } + + public AbstractAttribute(Object value, boolean isEditable, + boolean showInPropertiesView) { + this.value = value; + this.initValue = value; + this.editable = isEditable; + this.show = showInPropertiesView; + } + + private Object readResolve() { + this.initValue = this.value; + return this; + } + + public void addChild(AbstractAttribute atr) { + getChildren().put(atr.getID(), atr); + } + + public Boolean hasChildren() { + return !getChildren().isEmpty(); + } + + public PropertyDescriptor getPropertyDescriptor() { + propertyDescriptor = new PropertyDescriptor(getID(), getName()); + if (editable) { + propertyDescriptor = preparePropertyDescriptor(); + if (propertyDescriptor != null) { + propertyDescriptor.setValidator(new ICellEditorValidator() { + public String isValid(Object value) { + return validateValue(value, control); + } + }); + } + } + return propertyDescriptor; + } + + protected abstract PropertyDescriptor preparePropertyDescriptor(); + + public Object unmarshal(String s) { + return s; + } + + public String getID() { + return getClass().getName(); + } + + public abstract String getName(); + + public void setGroup(AbstractAttribute group) { + setGroup(group.getClass().getName()); + } + + public void setGroup(String group) { + this.group = group; + } + + public String getGroup() { + return group; + } + + public Object getEditableValue() { + return this; + } + + public IPropertyDescriptor[] getPropertyDescriptors() { + ArrayList<IPropertyDescriptor> descriptor = new ArrayList<IPropertyDescriptor>(); + for (AbstractAttribute atr : getChildren().values()) { + descriptor.add(atr.getPropertyDescriptor()); + } + return descriptor.toArray(new IPropertyDescriptor[0]); + } + + public Object getPropertyValue(Object attrID) { + AbstractAttribute atr = getChildren().get(attrID); + if (atr.hasChildren()) { + return atr; + } else { + return atr.getValue(); + } + } + + public boolean isPropertySet(Object id) { + return false; + } + + public void resetPropertyValue(Object id) { + } + + public void setPropertyValue(Object id, Object value) { + AbstractAttribute atr = children.get(id); + atr.setValue(value); + } + + public void setValue(Object value) { + setValue(value, true, true); + } + + public void setValue(Object value, Boolean firePropertyChange, + Boolean setInitVal) { + Object oldVal = this.value; + this.value = value; + if (setInitVal) + this.initValue = value; + if (firePropertyChange && control != null) + control.getListeners().firePropertyChange(getID(), oldVal, value); + } + + public void restoreValue() { + Object oldVal = this.value; + this.value = this.initValue; + if (control != null) + control.getListeners().firePropertyChange(getID(), oldVal, value); + } + + public Object getValue() { + return this.value; + } + + public Object getInitValue() { + return initValue; + } + + public HashMap<String, AbstractAttribute> getChildren() { + if (children == null) + children = new HashMap<String, AbstractAttribute>(); + return children; + } + + @Override + public AbstractAttribute clone() throws CloneNotSupportedException { + return (AbstractAttribute) super.clone(); + } + + public void setEditable(boolean editable) { + this.editable = editable; + } + + public boolean isEditable() { + return editable; + } + + public String validateValue(Object value, BControl control) { + return null; + } + + public void setShow(boolean show) { + this.show = show; + } + + public boolean show() { + return show; + } + + public BControl getControl() { + return control; + } + + public void setControl(BControl control) { + this.control = control; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeAlpha.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeAlpha.java index ced44636ecd9f445c0418cb1e6064b28bcff8ac2..fe192157564608b16cc527627ed8ff49cd13ec62 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeAlpha.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeAlpha.java @@ -1,49 +1,49 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.SliderPropertyDescriptor; - -public class BAttributeAlpha extends AbstractAttribute { - - public BAttributeAlpha(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - SliderPropertyDescriptor descriptor = new SliderPropertyDescriptor( - getID(), getName()); - return descriptor; - } - - @Override - public String validateValue(Object value, BControl control) { - if (!(String.valueOf(value)).trim().matches("\\d*")) { - return "Value must be a number"; - } - - if ((String.valueOf(value)).trim().length() == 0) { - return "Value must not be empty string"; - } - - if (Integer.valueOf(value.toString()) > 255 - || Integer.valueOf(value.toString()) < 0) { - return "Only a range from 0 to 255 is allowed"; - } - - return null; - } - - @Override - public String getName() { - return "Alpha"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.SliderPropertyDescriptor; + +public class BAttributeAlpha extends AbstractAttribute { + + public BAttributeAlpha(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + SliderPropertyDescriptor descriptor = new SliderPropertyDescriptor( + getID(), getName()); + return descriptor; + } + + @Override + public String validateValue(Object value, BControl control) { + if (!(String.valueOf(value)).trim().matches("\\d*")) { + return "Value must be a number"; + } + + if ((String.valueOf(value)).trim().length() == 0) { + return "Value must not be empty string"; + } + + if (Integer.valueOf(value.toString()) > 255 + || Integer.valueOf(value.toString()) < 0) { + return "Only a range from 0 to 255 is allowed"; + } + + return null; + } + + @Override + public String getName() { + return "Alpha"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundColor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundColor.java index 72d0ad68e8060f0add59abcfb971d8d1fe4461c3..0023246f77f3519457e9c64abf7ba27698fff49f 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundColor.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundColor.java @@ -1,55 +1,55 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.swt.graphics.RGB; -import org.eclipse.ui.views.properties.ColorPropertyDescriptor; -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class BAttributeBackgroundColor extends AbstractAttribute { - - public BAttributeBackgroundColor(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new ColorPropertyDescriptor(getID(), getName()); - } - - @Override - public String validateValue(Object value, BControl control) { - // TODO: Implement me! - return null; - } - - @Override - public String getName() { - return "Background-Color"; - } - - @Override - public Object unmarshal(String s) { - - String colorStr = s.toLowerCase().replace(" ", ""); - colorStr = colorStr.replace("rgb", ""); - colorStr = colorStr.replace("}", ""); - colorStr = colorStr.replace("{", ""); - String[] str = String.valueOf(colorStr).split("\\,"); - if (str.length == 3) { - int red = Integer.valueOf(str[0]); - int green = Integer.valueOf(str[1]); - int blue = Integer.valueOf(str[2]); - return new RGB(red, green, blue); - } else { - return new RGB(192, 192, 192); - } - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.swt.graphics.RGB; +import org.eclipse.ui.views.properties.ColorPropertyDescriptor; +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class BAttributeBackgroundColor extends AbstractAttribute { + + public BAttributeBackgroundColor(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + return new ColorPropertyDescriptor(getID(), getName()); + } + + @Override + public String validateValue(Object value, BControl control) { + // TODO: Implement me! + return null; + } + + @Override + public String getName() { + return "Background-Color"; + } + + @Override + public Object unmarshal(String s) { + + String colorStr = s.toLowerCase().replace(" ", ""); + colorStr = colorStr.replace("rgb", ""); + colorStr = colorStr.replace("}", ""); + colorStr = colorStr.replace("{", ""); + String[] str = String.valueOf(colorStr).split("\\,"); + if (str.length == 3) { + int red = Integer.valueOf(str[0]); + int green = Integer.valueOf(str[1]); + int blue = Integer.valueOf(str[2]); + return new RGB(red, green, blue); + } else { + return new RGB(192, 192, 192); + } + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundVisible.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundVisible.java index 2fe7e5f98645f83461e615a4987962f3ab205895..05c468b63454bd7836f67c8c319cb7660f76de34 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundVisible.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeBackgroundVisible.java @@ -1,44 +1,44 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor; - -public class BAttributeBackgroundVisible extends AbstractAttribute { - - public BAttributeBackgroundVisible(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new CheckboxPropertyDescriptor(getID(), getName()); - } - - @Override - public String validateValue(Object value, BControl control) { - if ((String.valueOf(value)).trim().equalsIgnoreCase("true") - || (String.valueOf(value)).trim().equalsIgnoreCase("false")) { - return null; - } else { - return "Value must be a Boolean value (\"true\" or \"false\")"; - } - } - - @Override - public String getName() { - return "Visible"; - } - - @Override - public Object unmarshal(String s) { - return Boolean.valueOf(s); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor; + +public class BAttributeBackgroundVisible extends AbstractAttribute { + + public BAttributeBackgroundVisible(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + return new CheckboxPropertyDescriptor(getID(), getName()); + } + + @Override + public String validateValue(Object value, BControl control) { + if ((String.valueOf(value)).trim().equalsIgnoreCase("true") + || (String.valueOf(value)).trim().equalsIgnoreCase("false")) { + return null; + } else { + return "Value must be a Boolean value (\"true\" or \"false\")"; + } + } + + @Override + public String getName() { + return "Visible"; + } + + @Override + public Object unmarshal(String s) { + return Boolean.valueOf(s); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeShowMeasure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeColumns.java similarity index 50% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeShowMeasure.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeColumns.java index e5aa9cb4ea0402e7081b9747059b567822dabc2f..12a636d196f8838fb2daf5c2561d8c3aa829aae2 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeShowMeasure.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeColumns.java @@ -1,44 +1,42 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor; - -public class BAttributeShowMeasure extends AbstractAttribute { - - public BAttributeShowMeasure(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new CheckboxPropertyDescriptor(getID(), getName()); - } - - @Override - public String validateValue(Object value, BControl control) { - if ((String.valueOf(value)).trim().equalsIgnoreCase("true") - || (String.valueOf(value)).trim().equalsIgnoreCase("false")) { - return null; - } else { - return "Value must be a Boolean value (\"true\" or \"false\")"; - } - } - - @Override - public String getName() { - return "Show-Measure"; - } - - @Override - public Object unmarshal(String s) { - return Boolean.valueOf(s); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; + +public class BAttributeColumns extends AbstractAttribute { + + public BAttributeColumns(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( + getID(), getName()); + return descriptor; + } + + @Override + public String validateValue(Object value, BControl control) { + if (!(String.valueOf(value)).trim().matches("\\d*")) { + return "Value must be a number"; + } + if ((String.valueOf(value)).trim().length() == 0) { + return "Value must not be empty string"; + } + return null; + } + + @Override + public String getName() { + return "Columns"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCoordinates.java index e251e8320a94782e62777ac6740322abe0c12d3e..2aeb359d027bd32783119b814a50786e7f8c476b 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeCoordinates.java @@ -27,9 +27,12 @@ public class BAttributeCoordinates extends AbstractAttribute { Point point = (Point) element; StringBuffer buf = new StringBuffer(); buf.append("["); - buf.append(point.x); - buf.append(", "); - buf.append(point.y); + if (point.x >= 0) + buf.append(point.x); + if (point.y >= 0) { + buf.append(", "); + buf.append(point.y); + } buf.append("]"); return buf.toString(); } @@ -39,11 +42,22 @@ public class BAttributeCoordinates extends AbstractAttribute { @Override public Object getEditableValue() { - int x = Integer.valueOf(getChildren() - .get(AttributeConstants.ATTRIBUTE_X).getValue().toString()); - int y = Integer.valueOf(getChildren() - .get(AttributeConstants.ATTRIBUTE_Y).getValue().toString()); + + AbstractAttribute atrX = getChildren().get( + AttributeConstants.ATTRIBUTE_X); + AbstractAttribute atrY = getChildren().get( + AttributeConstants.ATTRIBUTE_Y); + + int x = -1; + int y = -1; + + if (atrX != null) + x = Integer.valueOf(atrX.getValue().toString()); + if (atrY != null) + y = Integer.valueOf(atrY.getValue().toString()); + return new Point(x, y); + } @Override diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeEnabled.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeEnabled.java index 90e17ef0f039ba5e219e2213aafc74a6b01b88df..170e1dfde4ec606c0932fe2fcb03fd8eb0ec7b0e 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeEnabled.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeEnabled.java @@ -1,44 +1,44 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor; - -public class BAttributeEnabled extends AbstractAttribute { - - public BAttributeEnabled(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new CheckboxPropertyDescriptor(getID(), getName()); - } - - @Override - public String validateValue(final Object value, BControl control) { - if ((String.valueOf(value)).trim().equalsIgnoreCase("true") - || (String.valueOf(value)).trim().equalsIgnoreCase("false")) { - return null; - } else { - return "Value must be a Boolean value (\"true\" or \"false\")"; - } - } - - @Override - public String getName() { - return "Enabled"; - } - - @Override - public Object unmarshal(String s) { - return Boolean.valueOf(s); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor; + +public class BAttributeEnabled extends AbstractAttribute { + + public BAttributeEnabled(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + return new CheckboxPropertyDescriptor(getID(), getName()); + } + + @Override + public String validateValue(final Object value, BControl control) { + if ((String.valueOf(value)).trim().equalsIgnoreCase("true") + || (String.valueOf(value)).trim().equalsIgnoreCase("false")) { + return null; + } else { + return "Value must be a Boolean value (\"true\" or \"false\")"; + } + } + + @Override + public String getName() { + return "Enabled"; + } + + @Override + public Object unmarshal(String s) { + return Boolean.valueOf(s); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillColor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillColor.java deleted file mode 100644 index f9ad86fc83d0eed452a95766ce6b7dad9730bcf0..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillColor.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.swt.graphics.RGB; -import org.eclipse.ui.views.properties.ColorPropertyDescriptor; -import org.eclipse.ui.views.properties.PropertyDescriptor; - -public class BAttributeFillColor extends AbstractAttribute { - - public BAttributeFillColor(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new ColorPropertyDescriptor(getID(), getName()); - } - - @Override - public String getName() { - return "Fill-Color"; - } - - @Override - public Object unmarshal(String s) { - - String colorStr = s.toLowerCase().replace(" ", ""); - colorStr = colorStr.replace("rgb", ""); - colorStr = colorStr.replace("}", ""); - colorStr = colorStr.replace("{", ""); - String[] str = String.valueOf(colorStr).split("\\,"); - if (str.length == 3) { - int red = Integer.valueOf(str[0]); - int green = Integer.valueOf(str[1]); - int blue = Integer.valueOf(str[2]); - return new RGB(red, green, blue); - } else { - return new RGB(192, 192, 192); - } - - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillHeight.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillHeight.java deleted file mode 100644 index 30e0b429641a6912797422e6e31d5cfea752b016..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFillHeight.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; -import org.eclipse.ui.views.properties.TextPropertyDescriptor; - -public class BAttributeFillHeight extends AbstractAttribute { - - public BAttributeFillHeight(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new TextPropertyDescriptor(getID(), getName()); - } - - @Override - public String getName() { - return "Fill-Height"; - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFont.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFont.java index 9f8c3d87d53b33eeacc2cc82402a5a971d55a400..85986759f8aed85204a780a1d4f54082296b91f0 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFont.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeFont.java @@ -1,28 +1,28 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.property.FontPropertyDescriptor; - -public class BAttributeFont extends AbstractAttribute { - - public BAttributeFont(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new FontPropertyDescriptor(getID(), getName()); - } - - @Override - public String getName() { - return "Font"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.property.FontPropertyDescriptor; + +public class BAttributeFont extends AbstractAttribute { + + public BAttributeFont(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + return new FontPropertyDescriptor(getID(), getName()); + } + + @Override + public String getName() { + return "Font"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeHeight.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeHeight.java index a4eec8e565146d2ea80384a8f9878286e95a3deb..5947e5cd808c696ae11196e1b7eddc77c2b98fb7 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeHeight.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeHeight.java @@ -1,42 +1,42 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; - -public class BAttributeHeight extends AbstractAttribute { - - public BAttributeHeight(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( - getID(), getName()); - return descriptor; - } - - @Override - public String validateValue(Object value, BControl control) { - if (!(String.valueOf(value)).trim().matches("\\d*")) { - return "Value must be a number"; - } - if ((String.valueOf(value)).trim().length() == 0) { - return "Value must not be empty string"; - } - return null; - } - - @Override - public String getName() { - return "Height"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; + +public class BAttributeHeight extends AbstractAttribute { + + public BAttributeHeight(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( + getID(), getName()); + return descriptor; + } + + @Override + public String validateValue(Object value, BControl control) { + if (!(String.valueOf(value)).trim().matches("\\d*")) { + return "Value must be a number"; + } + if ((String.valueOf(value)).trim().length() == 0) { + return "Value must not be empty string"; + } + return null; + } + + @Override + public String getName() { + return "Height"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeID.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeID.java index 21ce6046376c7d88e8275147f5984fe8ec02ac4b..b181122cdbd830bab5682d75b05d494f0fb8e00d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeID.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeID.java @@ -1,45 +1,45 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; -import org.eclipse.ui.views.properties.TextPropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class BAttributeID extends AbstractAttribute { - - public BAttributeID(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - TextPropertyDescriptor descriptor = new TextPropertyDescriptor(getID(), - getName()); - return descriptor; - } - - @Override - public String validateValue(Object value, BControl control) { - if (((String) value).trim().length() == 0) { - return "Value must not be empty string"; - } - if (!(String.valueOf(value)).trim().matches("^[a-zA-Z_0-9]*")) { - return "Special characters are not allowed."; - } - if (control.getVisualization().checkIfIdExists((String) value)) { - return "ID already exists"; - } - return null; - } - - @Override - public String getName() { - return "a1:ID"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; +import org.eclipse.ui.views.properties.TextPropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class BAttributeID extends AbstractAttribute { + + public BAttributeID(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + TextPropertyDescriptor descriptor = new TextPropertyDescriptor(getID(), + getName()); + return descriptor; + } + + @Override + public String validateValue(Object value, BControl control) { + if (((String) value).trim().length() == 0) { + return "Value must not be empty string"; + } + if (!(String.valueOf(value)).trim().matches("^[a-zA-Z_0-9]*")) { + return "Special characters are not allowed."; + } + if (control.getVisualization().checkIfIdExists((String) value)) { + return "ID already exists"; + } + return null; + } + + @Override + public String getName() { + return "a1:ID"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeImage.java index d17d58ffc6b6362ec480380b5f2d126026a800d6..86f1d299bf2ef2cf3811c6eee0916e062ae9605f 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeImage.java @@ -1,45 +1,45 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import java.io.File; - -import org.eclipse.core.resources.IFile; -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.ImagePropertyDescriptor; - -public class BAttributeImage extends AbstractAttribute { - - public BAttributeImage(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new ImagePropertyDescriptor(getID(), getName()); - } - - public String validateValue(Object value, BControl control) { - if (value != null) { - String fImage = value.toString(); - IFile pFile = control.getVisualization().getProjectFile(); - String myPath = (pFile.getProject().getLocation() + "/images/" + fImage) - .replace("file:", ""); - if (!new File(myPath).exists()) { - return "No such image in your library: " + fImage; - } - } - return null; - } - - @Override - public String getName() { - return "Image"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import java.io.File; + +import org.eclipse.core.resources.IFile; +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.ImagePropertyDescriptor; + +public class BAttributeImage extends AbstractAttribute { + + public BAttributeImage(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + return new ImagePropertyDescriptor(getID(), getName()); + } + + public String validateValue(Object value, BControl control) { + if (value != null) { + String fImage = value.toString(); + IFile pFile = control.getVisualization().getProjectFile(); + String myPath = (pFile.getProject().getLocation() + "/images/" + fImage) + .replace("file:", ""); + if (!new File(myPath).exists()) { + return "No such image in your library: " + fImage; + } + } + return null; + } + + @Override + public String getName() { + return "Image"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMeasureInterval.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMeasureInterval.java deleted file mode 100644 index d9892f8a1ec20736b6078974084a56626faf9f6f..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMeasureInterval.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; -import org.eclipse.ui.views.properties.TextPropertyDescriptor; - -public class BAttributeMeasureInterval extends AbstractAttribute { - - public BAttributeMeasureInterval(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new TextPropertyDescriptor(getID(), getName()); - } - - @Override - public String getName() { - return "Measure-Interval"; - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMeasureMaxPos.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMeasureMaxPos.java deleted file mode 100644 index dbe52aadb25e6504823b03951e61d9f771aac772..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeMeasureMaxPos.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; -import org.eclipse.ui.views.properties.TextPropertyDescriptor; - -public class BAttributeMeasureMaxPos extends AbstractAttribute { - - public BAttributeMeasureMaxPos(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new TextPropertyDescriptor(getID(), getName()); - } - - @Override - public String getName() { - return "Measure-Max-Pos"; - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOutlineAlpha.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOutlineAlpha.java index dd3ce6d151ad5b70e2e2f2af0578049f3136ab73..f583a8f03f37c48592c2358a6217a1f2b347b7b3 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOutlineAlpha.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeOutlineAlpha.java @@ -1,50 +1,50 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.SliderPropertyDescriptor; - -public class BAttributeOutlineAlpha extends AbstractAttribute { - - public BAttributeOutlineAlpha(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - SliderPropertyDescriptor descriptor = new SliderPropertyDescriptor( - getID(), getName()); - return descriptor; - } - - public String validateValue(Object value, BControl control) { - - if (!(String.valueOf(value)).trim().matches("\\d*")) { - return "Value must be a number"; - } - - if ((String.valueOf(value)).trim().length() == 0) { - return "Value must not be empty string"; - } - - if (Integer.valueOf(value.toString()) > 255 - || Integer.valueOf(value.toString()) < 0) { - return "Only a range from 0 to 255 is allowed"; - } - - return null; - - } - - @Override - public String getName() { - return "Outline-Alpha"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.SliderPropertyDescriptor; + +public class BAttributeOutlineAlpha extends AbstractAttribute { + + public BAttributeOutlineAlpha(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + SliderPropertyDescriptor descriptor = new SliderPropertyDescriptor( + getID(), getName()); + return descriptor; + } + + public String validateValue(Object value, BControl control) { + + if (!(String.valueOf(value)).trim().matches("\\d*")) { + return "Value must be a number"; + } + + if ((String.valueOf(value)).trim().length() == 0) { + return "Value must not be empty string"; + } + + if (Integer.valueOf(value.toString()) > 255 + || Integer.valueOf(value.toString()) < 0) { + return "Only a range from 0 to 255 is allowed"; + } + + return null; + + } + + @Override + public String getName() { + return "Outline-Alpha"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeRows.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeRows.java new file mode 100644 index 0000000000000000000000000000000000000000..b3df0f422b0fab661a49ac893d785b2c3cda0a00 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeRows.java @@ -0,0 +1,42 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; + +public class BAttributeRows extends AbstractAttribute { + + public BAttributeRows(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( + getID(), getName()); + return descriptor; + } + + @Override + public String validateValue(Object value, BControl control) { + if (!(String.valueOf(value)).trim().matches("\\d*")) { + return "Value must be a number"; + } + if ((String.valueOf(value)).trim().length() == 0) { + return "Value must not be empty string"; + } + return null; + } + + @Override + public String getName() { + return "Rows"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeSize.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeSize.java index 5024a0e35ed468e15de2807dc4867e7b634c1d27..1920190f623c1673e57861794d8c816dc21a6796 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeSize.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeSize.java @@ -27,9 +27,12 @@ public class BAttributeSize extends AbstractAttribute { Point point = (Point) element; StringBuffer buf = new StringBuffer(); buf.append("["); - buf.append(point.x); - buf.append(", "); - buf.append(point.y); + if (point.x >= 0) + buf.append(point.x); + if (point.y >= 0) { + buf.append(", "); + buf.append(point.y); + } buf.append("]"); return buf.toString(); } @@ -39,12 +42,22 @@ public class BAttributeSize extends AbstractAttribute { @Override public Object getEditableValue() { - int width = Integer.valueOf(getChildren() - .get(AttributeConstants.ATTRIBUTE_WIDTH).getValue().toString()); - int height = Integer - .valueOf(getChildren().get(AttributeConstants.ATTRIBUTE_HEIGHT) - .getValue().toString()); + + AbstractAttribute atrWidth = getChildren().get( + AttributeConstants.ATTRIBUTE_WIDTH); + AbstractAttribute atrHeight = getChildren().get( + AttributeConstants.ATTRIBUTE_HEIGHT); + + int width = -1; + int height = -1; + + if (atrWidth != null) + width = Integer.valueOf(atrWidth.getValue().toString()); + if (atrHeight != null) + height = Integer.valueOf(atrHeight.getValue().toString()); + return new Point(width, height); + } @Override diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeText.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeText.java index d9d0ab66bd3b789452376e3505bca4542a911033..97d071630c2c0df0fdc1159ecb2d74de2f47fd23 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeText.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeText.java @@ -1,27 +1,27 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; -import org.eclipse.ui.views.properties.TextPropertyDescriptor; - -public class BAttributeText extends AbstractAttribute { - - public BAttributeText(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new TextPropertyDescriptor(getID(), getName()); - } - - @Override - public String getName() { - return "Text"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; +import org.eclipse.ui.views.properties.TextPropertyDescriptor; + +public class BAttributeText extends AbstractAttribute { + + public BAttributeText(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + return new TextPropertyDescriptor(getID(), getName()); + } + + @Override + public String getName() { + return "Text"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTextColor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTextColor.java index 4e2da94ca5f29e91e6425ae3d25b9f36acfcfa69..dbba315d244d7655012a87b6072cc0db9ca37eda 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTextColor.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeTextColor.java @@ -1,55 +1,55 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.swt.graphics.RGB; -import org.eclipse.ui.views.properties.ColorPropertyDescriptor; -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class BAttributeTextColor extends AbstractAttribute { - - public BAttributeTextColor(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new ColorPropertyDescriptor(getID(), getName()); - } - - @Override - public String validateValue(Object value, BControl control) { - // TODO: Implement me! - return null; - } - - @Override - public String getName() { - return "Text-Color"; - } - - @Override - public Object unmarshal(String s) { - - String colorStr = s.toLowerCase().replace(" ", ""); - colorStr = colorStr.replace("rgb", ""); - colorStr = colorStr.replace("}", ""); - colorStr = colorStr.replace("{", ""); - String[] str = String.valueOf(colorStr).split("\\,"); - if (str.length == 3) { - int red = Integer.valueOf(str[0]); - int green = Integer.valueOf(str[1]); - int blue = Integer.valueOf(str[2]); - return new RGB(red, green, blue); - } else { - return new RGB(192, 192, 192); - } - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.swt.graphics.RGB; +import org.eclipse.ui.views.properties.ColorPropertyDescriptor; +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class BAttributeTextColor extends AbstractAttribute { + + public BAttributeTextColor(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + return new ColorPropertyDescriptor(getID(), getName()); + } + + @Override + public String validateValue(Object value, BControl control) { + // TODO: Implement me! + return null; + } + + @Override + public String getName() { + return "Text-Color"; + } + + @Override + public Object unmarshal(String s) { + + String colorStr = s.toLowerCase().replace(" ", ""); + colorStr = colorStr.replace("rgb", ""); + colorStr = colorStr.replace("}", ""); + colorStr = colorStr.replace("{", ""); + String[] str = String.valueOf(colorStr).split("\\,"); + if (str.length == 3) { + int red = Integer.valueOf(str[0]); + int green = Integer.valueOf(str[1]); + int blue = Integer.valueOf(str[2]); + return new RGB(red, green, blue); + } else { + return new RGB(192, 192, 192); + } + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeVisible.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeVisible.java index 96961a53dab4e56bb39a99a59c2d84b93aea36fe..bbf89608770e925157c6fcf401e58fcd3338d59b 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeVisible.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeVisible.java @@ -1,44 +1,44 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor; - -public class BAttributeVisible extends AbstractAttribute { - - public BAttributeVisible(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - return new CheckboxPropertyDescriptor(getID(), getName()); - } - - @Override - public String validateValue(Object value, BControl control) { - if ((String.valueOf(value)).trim().equalsIgnoreCase("true") - || (String.valueOf(value)).trim().equalsIgnoreCase("false")) { - return null; - } else { - return "Value must be a Boolean value (\"true\" or \"false\")"; - } - } - - @Override - public String getName() { - return "a3:Visible"; - } - - @Override - public Object unmarshal(String s) { - return Boolean.valueOf(s); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.CheckboxPropertyDescriptor; + +public class BAttributeVisible extends AbstractAttribute { + + public BAttributeVisible(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + return new CheckboxPropertyDescriptor(getID(), getName()); + } + + @Override + public String validateValue(Object value, BControl control) { + if ((String.valueOf(value)).trim().equalsIgnoreCase("true") + || (String.valueOf(value)).trim().equalsIgnoreCase("false")) { + return null; + } else { + return "Value must be a Boolean value (\"true\" or \"false\")"; + } + } + + @Override + public String getName() { + return "a3:Visible"; + } + + @Override + public Object unmarshal(String s) { + return Boolean.valueOf(s); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeWidth.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeWidth.java index bcb310e77a51b6c9f68576b6de16f70a6c2dd351..34844653d9226fbca2ab5020f527fb7d43718cc0 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeWidth.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeWidth.java @@ -1,42 +1,42 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; - -public class BAttributeWidth extends AbstractAttribute { - - public BAttributeWidth(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( - getID(), getName()); - return descriptor; - } - - @Override - public String validateValue(Object value, BControl control) { - if (!(String.valueOf(value)).trim().matches("\\d*")) { - return "Value must be a number"; - } - if ((String.valueOf(value)).trim().length() == 0) { - return "Value must not be empty string"; - } - return null; - } - - @Override - public String getName() { - return "Width"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; + +public class BAttributeWidth extends AbstractAttribute { + + public BAttributeWidth(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( + getID(), getName()); + return descriptor; + } + + @Override + public String validateValue(Object value, BControl control) { + if (!(String.valueOf(value)).trim().matches("\\d*")) { + return "Value must be a number"; + } + if ((String.valueOf(value)).trim().length() == 0) { + return "Value must not be empty string"; + } + return null; + } + + @Override + public String getName() { + return "Width"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeX.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeX.java index 2ff72c75024892ef73ef0c1edcde72af764a319a..e3f911398536a6f4a871fdd8b037608462a064a0 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeX.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeX.java @@ -1,42 +1,42 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; - -public class BAttributeX extends AbstractAttribute { - - public BAttributeX(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( - getID(), getName()); - return descriptor; - } - - @Override - public String validateValue(Object value, BControl control) { - if (!(String.valueOf(value)).trim().matches("\\d*")) { - return "Value must be a number"; - } - if ((String.valueOf(value)).trim().length() == 0) { - return "Value must not be empty string"; - } - return null; - } - - @Override - public String getName() { - return "X"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; + +public class BAttributeX extends AbstractAttribute { + + public BAttributeX(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( + getID(), getName()); + return descriptor; + } + + @Override + public String validateValue(Object value, BControl control) { + if (!(String.valueOf(value)).trim().matches("\\d*")) { + return "Value must be a number"; + } + if ((String.valueOf(value)).trim().length() == 0) { + return "Value must not be empty string"; + } + return null; + } + + @Override + public String getName() { + return "X"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeY.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeY.java index a48a0e28ef74a9324e999255f6c93cf1f8a85385..45c5959a7837d01f33fe22d722db436167b3d7fa 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeY.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/attribute/BAttributeY.java @@ -1,42 +1,42 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.attribute; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; - -public class BAttributeY extends AbstractAttribute { - - public BAttributeY(Object value) { - super(value); - } - - public PropertyDescriptor preparePropertyDescriptor() { - IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( - getID(), getName()); - return descriptor; - } - - @Override - public String validateValue(Object value, BControl control) { - if (!(String.valueOf(value)).trim().matches("\\d*")) { - return "Value must be a number"; - } - if ((String.valueOf(value)).trim().length() == 0) { - return "Value must not be empty string"; - } - return null; - } - - @Override - public String getName() { - return "Y"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.attribute; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.IntegerPropertyDescriptor; + +public class BAttributeY extends AbstractAttribute { + + public BAttributeY(Object value) { + super(value); + } + + public PropertyDescriptor preparePropertyDescriptor() { + IntegerPropertyDescriptor descriptor = new IntegerPropertyDescriptor( + getID(), getName()); + return descriptor; + } + + @Override + public String validateValue(Object value, BControl control) { + if (!(String.valueOf(value)).trim().matches("\\d*")) { + return "Value must be a number"; + } + if ((String.valueOf(value)).trim().length() == 0) { + return "Value must not be empty string"; + } + return null; + } + + @Override + public String getName() { + return "Y"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/AddCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/AddCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..8310dc4371d939c53c076d428159a487841401b4 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/AddCommand.java @@ -0,0 +1,55 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class AddCommand extends org.eclipse.gef.commands.Command { + + private BControl child; + private BControl parent; + private int index = -1; + + public AddCommand() { + super("Add Control"); + } + + public void execute() { + if (index < 0) + parent.addChild(child); + else + parent.addChild(child, index); + } + + public BControl getParent() { + return parent; + } + + public void redo() { + if (index < 0) + parent.addChild(child); + else + parent.addChild(child, index); + } + + public void setChild(BControl subpart) { + child = subpart; + } + + public void setIndex(int i) { + index = i; + } + + public void setParent(BControl newParent) { + parent = newParent; + } + + public void undo() { + parent.removeChild(child); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BControlChangeLayoutCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BControlChangeLayoutCommand.java index 0362ff942c735c321c4302bd39ce36c6ecf03621..96effb5f2ec96106463679be4b9335ac54b4856c 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BControlChangeLayoutCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BControlChangeLayoutCommand.java @@ -1,37 +1,37 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import org.eclipse.draw2d.geometry.Rectangle; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class BControlChangeLayoutCommand extends AbstractLayoutCommand { - - private BControl control; - private Rectangle newLayout; - private Rectangle oldLayout; - - public void execute() { - control.setLayout(newLayout); - } - - public void setConstraint(Rectangle rect) { - newLayout = rect; - } - - public void setModel(Object model) { - control = (BControl) model; - oldLayout = control.getLayout(); - } - - @Override - public void undo() { - control.setLayout(oldLayout); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import org.eclipse.draw2d.geometry.Rectangle; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class BControlChangeLayoutCommand extends AbstractLayoutCommand { + + private BControl control; + private Rectangle newLayout; + private Rectangle oldLayout; + + public void execute() { + control.setLayout(newLayout); + } + + public void setConstraint(Rectangle rect) { + newLayout = rect; + } + + public void setModel(Object model) { + control = (BControl) model; + oldLayout = control.getLayout(); + } + + @Override + public void undo() { + control.setLayout(oldLayout); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java index 124b9b8f3aae619fc782a0835d6c2eec20da22b5..601e6bb35cf0c5c8e4a043a8544c2552dc27509b 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomCommand.java @@ -1,36 +1,36 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class BringToBottomCommand extends AbstractBringToCommand { - - public void execute() { - for (BControl control : getControlList()) { - BControl parent = control.getParent(); - Integer oldIndex = parent.getChildrenArray().indexOf(control); - getOldIndexMap().put(control, oldIndex); - parent.getChildrenArray().remove(control); - parent.getChildrenArray().add(0, control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); - } - } - - public void undo() { - for (BControl control : getControlList()) { - BControl parent = control.getParent(); - parent.getChildrenArray().remove(control); - parent.getChildrenArray().add(getOldIndexMap().get(control), - control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); - } - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class BringToBottomCommand extends AbstractBringToCommand { + + public void execute() { + for (BControl control : getControlList()) { + BControl parent = control.getParent(); + Integer oldIndex = parent.getChildrenArray().indexOf(control); + getOldIndexMap().put(control, oldIndex); + parent.getChildrenArray().remove(control); + parent.getChildrenArray().add(0, control); + parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, + null, null); + } + } + + public void undo() { + for (BControl control : getControlList()) { + BControl parent = control.getParent(); + parent.getChildrenArray().remove(control); + parent.getChildrenArray().add(getOldIndexMap().get(control), + control); + parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, + null, null); + } + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java index 45368b844f6c1880871fc8667b7c29016601753b..7e5dff77861ab06ba45e5d306d4155c6bd0b54cf 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToBottomStepCommand.java @@ -1,38 +1,38 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class BringToBottomStepCommand extends AbstractBringToCommand { - - public void execute() { - for (BControl control : getControlList()) { - BControl parent = control.getParent(); - Integer oldIndex = parent.getChildrenArray().indexOf(control); - getOldIndexMap().put(control, oldIndex); - if (oldIndex > 0) { - parent.getChildrenArray().remove(control); - parent.getChildrenArray().add(oldIndex - 1, control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); - } - } - } - - public void undo() { - for (BControl control : getControlList()) { - BControl parent = control.getParent(); - parent.getChildrenArray().remove(control); - parent.getChildrenArray().add(getOldIndexMap().get(control), - control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); - } - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class BringToBottomStepCommand extends AbstractBringToCommand { + + public void execute() { + for (BControl control : getControlList()) { + BControl parent = control.getParent(); + Integer oldIndex = parent.getChildrenArray().indexOf(control); + getOldIndexMap().put(control, oldIndex); + if (oldIndex > 0) { + parent.getChildrenArray().remove(control); + parent.getChildrenArray().add(oldIndex - 1, control); + parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, + null, null); + } + } + } + + public void undo() { + for (BControl control : getControlList()) { + BControl parent = control.getParent(); + parent.getChildrenArray().remove(control); + parent.getChildrenArray().add(getOldIndexMap().get(control), + control); + parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, + null, null); + } + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java index 38c7631409f6d1db88c653fcde2bdf0ec93995f0..716c1454a766ebf1e24f7d4ede5fa3dd79acccd9 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopCommand.java @@ -1,37 +1,37 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class BringToTopCommand extends AbstractBringToCommand { - - public void execute() { - for (BControl control : getControlList()) { - BControl parent = control.getParent(); - Integer oldIndex = parent.getChildrenArray().indexOf(control); - getOldIndexMap().put(control, oldIndex); - parent.getChildrenArray().remove(control); - parent.getChildrenArray().add(parent.getChildrenArray().size(), - control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); - } - } - - public void undo() { - for (BControl control : getControlList()) { - BControl parent = control.getParent(); - parent.getChildrenArray().remove(control); - parent.getChildrenArray().add(getOldIndexMap().get(control), - control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); - } - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class BringToTopCommand extends AbstractBringToCommand { + + public void execute() { + for (BControl control : getControlList()) { + BControl parent = control.getParent(); + Integer oldIndex = parent.getChildrenArray().indexOf(control); + getOldIndexMap().put(control, oldIndex); + parent.getChildrenArray().remove(control); + parent.getChildrenArray().add(parent.getChildrenArray().size(), + control); + parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, + null, null); + } + } + + public void undo() { + for (BControl control : getControlList()) { + BControl parent = control.getParent(); + parent.getChildrenArray().remove(control); + parent.getChildrenArray().add(getOldIndexMap().get(control), + control); + parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, + null, null); + } + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java index 5e82ce35d56b96bb6a1fa30ea1741c9bcb93979e..3560448e1c245684e4a599ef4f14f421f55a8069 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/BringToTopStepCommand.java @@ -1,38 +1,38 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class BringToTopStepCommand extends AbstractBringToCommand { - - public void execute() { - for (BControl control : getControlList()) { - BControl parent = control.getParent(); - Integer oldIndex = parent.getChildrenArray().indexOf(control); - getOldIndexMap().put(control, oldIndex); - if (oldIndex < parent.getChildrenArray().size() - 1) { - parent.getChildrenArray().remove(control); - parent.getChildrenArray().add(oldIndex + 1, control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); - } - } - } - - public void undo() { - for (BControl control : getControlList()) { - BControl parent = control.getParent(); - parent.getChildrenArray().remove(control); - parent.getChildrenArray().add(getOldIndexMap().get(control), - control); - parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, - null, null); - } - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class BringToTopStepCommand extends AbstractBringToCommand { + + public void execute() { + for (BControl control : getControlList()) { + BControl parent = control.getParent(); + Integer oldIndex = parent.getChildrenArray().indexOf(control); + getOldIndexMap().put(control, oldIndex); + if (oldIndex < parent.getChildrenArray().size() - 1) { + parent.getChildrenArray().remove(control); + parent.getChildrenArray().add(oldIndex + 1, control); + parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, + null, null); + } + } + } + + public void undo() { + for (BControl control : getControlList()) { + BControl parent = control.getParent(); + parent.getChildrenArray().remove(control); + parent.getChildrenArray().add(getOldIndexMap().get(control), + control); + parent.getListeners().firePropertyChange(BControl.PROPERTY_ADD, + null, null); + } + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/CopyCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/CopyCommand.java index a61c0006d13c1ca8eab443da6a991f83019ab537..2fa07577284289e76f55eff2de0b69345de5ae8a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/CopyCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/CopyCommand.java @@ -1,59 +1,59 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import java.util.ArrayList; -import java.util.Iterator; - -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.ui.actions.Clipboard; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.Visualization; - -public class CopyCommand extends Command { - - private ArrayList<BControl> list = new ArrayList<BControl>(); - - public boolean addElement(BControl control) { - if (!list.contains(control)) { - return list.add(control); - } - return false; - } - - @Override - public boolean canExecute() { - if (list == null || list.isEmpty()) - return false; - Iterator<BControl> it = list.iterator(); - while (it.hasNext()) { - if (!isCopyableControl(it.next())) - return false; - } - return true; - } - - @Override - public void execute() { - if (canExecute()) { - Clipboard.getDefault().setContents(new CopyPasteHelper(list, 10)); - } - } - - @Override - public boolean canUndo() { - return false; - } - - public boolean isCopyableControl(BControl control) { - if (!(control instanceof Visualization)) - return true; - return false; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import java.util.ArrayList; +import java.util.Iterator; + +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.ui.actions.Clipboard; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.Visualization; + +public class CopyCommand extends Command { + + private ArrayList<BControl> list = new ArrayList<BControl>(); + + public boolean addElement(BControl control) { + if (!list.contains(control)) { + return list.add(control); + } + return false; + } + + @Override + public boolean canExecute() { + if (list == null || list.isEmpty()) + return false; + Iterator<BControl> it = list.iterator(); + while (it.hasNext()) { + if (!isCopyableControl(it.next())) + return false; + } + return true; + } + + @Override + public void execute() { + if (canExecute()) { + Clipboard.getDefault().setContents(new CopyPasteHelper(list, 10)); + } + } + + @Override + public boolean canUndo() { + return false; + } + + public boolean isCopyableControl(BControl control) { + if (!(control instanceof Visualization)) + return true; + return false; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/CreateCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/CreateCommand.java index e895d1f98ce6b77b92c103372c27b08cfdd641e9..f2461937099b0b4077a63a7f0f1b2ce3f7ce1a16 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/CreateCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/CreateCommand.java @@ -1,60 +1,60 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.gef.commands.Command; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class CreateCommand extends Command { - - private BControl parent; - private BControl child; - private int index = -1; - - public CreateCommand(BControl child, BControl parent) { - super(); - this.parent = parent; - this.child = child; - } - - public void setLayout(Rectangle r) { - if (child == null) - return; - child.setLayout(r); - } - - @Override - public boolean canExecute() { - if (parent == null || child == null) - return false; - return true; - } - - @Override - public void execute() { - parent.addChild(child, index); - } - - @Override - public boolean canUndo() { - if (parent == null || child == null) - return false; - return parent.contains(child); - } - - @Override - public void undo() { - parent.removeChild(child); - } - - public void setIndex(int index) { - this.index = index; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.gef.commands.Command; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class CreateCommand extends Command { + + private BControl parent; + private BControl child; + private int index = -1; + + public CreateCommand(BControl child, BControl parent) { + super(); + this.parent = parent; + this.child = child; + } + + public void setLayout(Rectangle r) { + if (child == null) + return; + child.setLayout(r); + } + + @Override + public boolean canExecute() { + if (parent == null || child == null) + return false; + return true; + } + + @Override + public void execute() { + parent.addChild(child, index); + } + + @Override + public boolean canUndo() { + if (parent == null || child == null) + return false; + return parent.contains(child); + } + + @Override + public void undo() { + parent.removeChild(child); + } + + public void setIndex(int index) { + this.index = index; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/DeleteCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/DeleteCommand.java index a4db8f4ea11f5f0032076c8abb7f1aabd29bd547..c6abca10c2aa75b03af902e081231c0bb5586b12 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/DeleteCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/DeleteCommand.java @@ -1,47 +1,47 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import org.eclipse.gef.commands.Command; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class DeleteCommand extends Command { - - private BControl control; - private BControl parent; - - public DeleteCommand(BControl control, BControl parent) { - this.control = control; - this.parent = parent; - } - - @Override - public boolean canExecute() { - if (parent == null || control == null || !parent.contains(control)) - return false; - return true; - } - - @Override - public boolean canUndo() { - if (parent == null || control == null) - return false; - return !parent.contains(control); - } - - @Override - public void execute() { - this.parent.removeChild(control); - } - - @Override - public void undo() { - this.parent.addChild(control); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import org.eclipse.gef.commands.Command; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class DeleteCommand extends Command { + + private BControl control; + private BControl parent; + + public DeleteCommand(BControl control, BControl parent) { + this.control = control; + this.parent = parent; + } + + @Override + public boolean canExecute() { + if (parent == null || control == null || !parent.contains(control)) + return false; + return true; + } + + @Override + public boolean canUndo() { + if (parent == null || control == null) + return false; + return !parent.contains(control); + } + + @Override + public void execute() { + this.parent.removeChild(control); + } + + @Override + public void undo() { + this.parent.addChild(control); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/FitImageCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/FitImageCommand.java index 7f2b875d316e7426f97e2c3dc7cbdda17e3adb62..d82996c071f62f53831bb4115eee52b96861d574 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/FitImageCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/FitImageCommand.java @@ -1,71 +1,71 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.gef.commands.Command; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.model.BControl; - -public class FitImageCommand extends Command { - - private List<BControl> modelList = new ArrayList<BControl>(); - private Map<BControl, Rectangle> oldSizeMap = new HashMap<BControl, Rectangle>(); - private Map<BControl, Rectangle> newSizeMap = new HashMap<BControl, Rectangle>(); - - @Override - public boolean canExecute() { - return check(); - } - - @Override - public void execute() { - for (BControl control : modelList) { - oldSizeMap.put(control, control.getLayout()); - control.setLayout(newSizeMap.get(control)); - } - } - - @Override - public boolean canUndo() { - if (oldSizeMap.isEmpty()) - return false; - return check(); - } - - @Override - public void undo() { - for (BControl control : this.modelList) { - control.setLayout(oldSizeMap.get(control)); - } - } - - public void setModelList(List<BControl> modelList) { - this.modelList = modelList; - } - - public void setNewSizeMap(Map<BControl, Rectangle> newSizeMap) { - this.newSizeMap = newSizeMap; - } - - private boolean check() { - if (modelList.isEmpty() || newSizeMap.isEmpty()) - return false; - for (BControl control : modelList) { - if (!control.hasAttribute(AttributeConstants.ATTRIBUTE_IMAGE)) - return false; - } - return true; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.gef.commands.Command; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; + +public class FitImageCommand extends Command { + + private List<BControl> modelList = new ArrayList<BControl>(); + private Map<BControl, Rectangle> oldSizeMap = new HashMap<BControl, Rectangle>(); + private Map<BControl, Rectangle> newSizeMap = new HashMap<BControl, Rectangle>(); + + @Override + public boolean canExecute() { + return check(); + } + + @Override + public void execute() { + for (BControl control : modelList) { + oldSizeMap.put(control, control.getLayout()); + control.setLayout(newSizeMap.get(control)); + } + } + + @Override + public boolean canUndo() { + if (oldSizeMap.isEmpty()) + return false; + return check(); + } + + @Override + public void undo() { + for (BControl control : this.modelList) { + control.setLayout(oldSizeMap.get(control)); + } + } + + public void setModelList(List<BControl> modelList) { + this.modelList = modelList; + } + + public void setNewSizeMap(Map<BControl, Rectangle> newSizeMap) { + this.newSizeMap = newSizeMap; + } + + private boolean check() { + if (modelList.isEmpty() || newSizeMap.isEmpty()) + return false; + for (BControl control : modelList) { + if (!control.hasAttribute(AttributeConstants.ATTRIBUTE_IMAGE)) + return false; + } + return true; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/PasteCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/PasteCommand.java index 6e3b670111ebf3432feb6661ddde0f22e7f9feb2..1136ff70658f845e0ba18e58ce42383d78b7483a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/PasteCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/PasteCommand.java @@ -1,109 +1,132 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; - -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.ui.actions.Clipboard; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.Visualization; - -public class PasteCommand extends Command { - - private CopyPasteHelper cHelper; - - private HashMap<BControl, BControl> list = new HashMap<BControl, BControl>(); - - @Override - public boolean canExecute() { - cHelper = (CopyPasteHelper) Clipboard.getDefault().getContents(); - if (cHelper == null) - return false; - ArrayList<BControl> myList = cHelper.getList(); - if (myList.isEmpty()) - return false; - Iterator<?> it = myList.iterator(); - while (it.hasNext()) { - BControl node = (BControl) it.next(); - if (isPastableNode(node)) { - list.put(node, null); - } - } - return true; - } - - @Override - public void execute() { - if (!canExecute()) - return; - Iterator<BControl> it = list.keySet().iterator(); - while (it.hasNext()) { - BControl control = (BControl) it.next(); - try { - BControl clone = (BControl) control.clone(); - int x = Integer.valueOf(Integer.valueOf(clone - .getAttributeValue(AttributeConstants.ATTRIBUTE_X) - .toString())); - int y = Integer.valueOf(Integer.valueOf(clone - .getAttributeValue(AttributeConstants.ATTRIBUTE_Y) - .toString())); - clone.setAttributeValue(AttributeConstants.ATTRIBUTE_X, x - + cHelper.getDistance()); - clone.setAttributeValue(AttributeConstants.ATTRIBUTE_Y, y - + cHelper.getDistance()); - list.put(control, clone); - cHelper.setDistance(cHelper.getDistance() + 10); - } catch (CloneNotSupportedException e) { - e.printStackTrace(); - } - } - redo(); - } - - @Override - public void redo() { - Iterator<BControl> it = list.values().iterator(); - while (it.hasNext()) { - BControl control = it.next(); - if (isPastableNode(control)) { - control.getParent().addChild(control); - } - } - } - - @Override - public boolean canUndo() { - return !(list.isEmpty()); - } - - @Override - public void undo() { - Iterator<BControl> it = list.values().iterator(); - while (it.hasNext()) { - BControl bcontrol = it.next(); - if (isPastableNode(bcontrol)) { - bcontrol.getParent().removeChild(bcontrol); - } - } - } - - public boolean isPastableNode(BControl control) { - if (control instanceof Visualization) - return false; - return true; - } - - public HashMap<BControl, BControl> getList() { - return this.list; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.ui.actions.Clipboard; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.Visualization; + +public class PasteCommand extends Command { + + private CopyPasteHelper cHelper; + + private HashMap<BControl, BControl> list = new HashMap<BControl, BControl>(); + + private List<BControl> parentControls = new ArrayList<BControl>(); + + @Override + public boolean canExecute() { + cHelper = (CopyPasteHelper) Clipboard.getDefault().getContents(); + if (cHelper == null) + return false; + ArrayList<BControl> myList = cHelper.getList(); + if (myList.isEmpty()) + return false; + Iterator<?> it = myList.iterator(); + while (it.hasNext()) { + BControl node = (BControl) it.next(); + if (isPastableControl(node)) { + list.put(node, null); + } + } + return true; + } + + public boolean addElement(BControl control) { + if (!parentControls.contains(control)) { + return parentControls.add(control); + } + return false; + } + + public boolean isContainer(BControl control) { + return control.canHaveChildren(); + } + + @Override + public void execute() { + + if (!canExecute()) + return; + + for (BControl parent : parentControls) { + + Iterator<BControl> it = list.keySet().iterator(); + while (it.hasNext()) { + BControl control = (BControl) it.next(); + control.setParent(parent); + try { + BControl clone = (BControl) control.clone(); + clone.setParent(parent); + int x = Integer.valueOf(Integer.valueOf(clone + .getAttributeValue(AttributeConstants.ATTRIBUTE_X) + .toString())); + int y = Integer.valueOf(Integer.valueOf(clone + .getAttributeValue(AttributeConstants.ATTRIBUTE_Y) + .toString())); + clone.setAttributeValue(AttributeConstants.ATTRIBUTE_X, x + + cHelper.getDistance()); + clone.setAttributeValue(AttributeConstants.ATTRIBUTE_Y, y + + cHelper.getDistance()); + list.put(control, clone); + cHelper.setDistance(cHelper.getDistance() + 10); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + } + redo(); + + } + + } + + @Override + public void redo() { + Iterator<BControl> it = list.values().iterator(); + while (it.hasNext()) { + BControl control = it.next(); + if (isPastableControl(control)) { + control.getParent().addChild(control); + } + } + } + + @Override + public boolean canUndo() { + return !(list.isEmpty()); + } + + @Override + public void undo() { + Iterator<BControl> it = list.values().iterator(); + while (it.hasNext()) { + BControl bcontrol = it.next(); + if (isPastableControl(bcontrol)) { + bcontrol.getParent().removeChild(bcontrol); + } + } + } + + public boolean isPastableControl(BControl control) { + if (control instanceof Visualization) + return false; + return true; + } + + public HashMap<BControl, BControl> getList() { + return this.list; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/RenameCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/RenameCommand.java index 0f0ffbc055eabc3596b19b2f64f38e9ba6af52f4..717444d85ff9e468907e51d45eee00dc3ef97838 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/RenameCommand.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/RenameCommand.java @@ -1,61 +1,61 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.command; - -import org.eclipse.gef.commands.Command; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.model.BControl; - -public class RenameCommand extends Command { - - private BControl control; - private String oldString; - private String newString; - - public void setControl(BControl control) { - this.control = control; - } - - public void setNewString(String newString) { - this.newString = newString; - } - - @Override - public boolean canExecute() { - return checkControl(); - } - - @Override - public boolean canUndo() { - if (oldString == null) - return false; - return checkControl(); - } - - private boolean checkControl() { - if (control == null || newString == null - || !control.hasAttribute(AttributeConstants.ATTRIBUTE_TEXT)) - return false; - return true; - } - - @Override - public void execute() { - this.oldString = control.getAttributeValue( - AttributeConstants.ATTRIBUTE_TEXT).toString(); - this.control.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT, - newString); - } - - @Override - public void undo() { - this.control.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT, - oldString); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.command; + +import org.eclipse.gef.commands.Command; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; + +public class RenameCommand extends Command { + + private BControl control; + private String oldString; + private String newString; + + public void setControl(BControl control) { + this.control = control; + } + + public void setNewString(String newString) { + this.newString = newString; + } + + @Override + public boolean canExecute() { + return checkControl(); + } + + @Override + public boolean canUndo() { + if (oldString == null) + return false; + return checkControl(); + } + + private boolean checkControl() { + if (control == null || newString == null + || !control.hasAttribute(AttributeConstants.ATTRIBUTE_TEXT)) + return false; + return true; + } + + @Override + public void execute() { + this.oldString = control.getAttributeValue( + AttributeConstants.ATTRIBUTE_TEXT).toString(); + this.control.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT, + newString); + } + + @Override + public void undo() { + this.control.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT, + oldString); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/ReorderPartCommand.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/ReorderPartCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..4303b61d04b346d1cca0f5183310ab92c34f5eb8 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/command/ReorderPartCommand.java @@ -0,0 +1,36 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ +package de.bmotionstudio.gef.editor.command; + +import org.eclipse.gef.commands.Command; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class ReorderPartCommand extends Command { + + private int oldIndex, newIndex; + private BControl child; + private BControl parent; + + public ReorderPartCommand(BControl child, BControl parent, int newIndex) { + super("Reorder Control"); + this.child = child; + this.parent = parent; + this.newIndex = newIndex; + } + + public void execute() { + oldIndex = parent.getChildrenArray().indexOf(child); + parent.removeChild(child); + parent.addChild(child, newIndex); + } + + public void undo() { + parent.removeChild(child); + parent.addChild(child, oldIndex); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/AttributeExpressionEdittingSupport.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/AttributeExpressionEdittingSupport.java index 0aa643cd04cd30b162e569103f997dfdbcfd658b..eac88df0edaa01f81b2a9fc5ac5ab1396e38e546 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/AttributeExpressionEdittingSupport.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/AttributeExpressionEdittingSupport.java @@ -16,7 +16,7 @@ import org.eclipse.ui.views.properties.PropertyDescriptor; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.observer.ObserverEvalObject; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class AttributeExpressionEdittingSupport extends EditingSupport { @@ -40,7 +40,7 @@ public class AttributeExpressionEdittingSupport extends EditingSupport { @Override protected boolean canEdit(Object element) { - return WizardObserverUtil.isEditElement(getViewer()); + return BMotionWizardUtil.isEditElement(getViewer()); } @Override diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/IPopupListener.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/IPopupListener.java index b52aeba1b30c996e86ff3714963a81b661bbd015..b7464ec82ed4df967dd6aeb47ec4d0773012323b 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/IPopupListener.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/IPopupListener.java @@ -1,15 +1,15 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.edit; - -public interface IPopupListener { - - public void popupOpened(); - - public void popupClosed(); - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.edit; + +public interface IPopupListener { + + public void popupOpened(); + + public void popupClosed(); + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/OperationValueEditingSupport.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/OperationValueEditingSupport.java index 816acdb09ceda5a99113a6c220a003ffed912504..a33391f9387d655ea9271aea61af1a210891c694 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/OperationValueEditingSupport.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/OperationValueEditingSupport.java @@ -23,7 +23,7 @@ import de.bmotionstudio.gef.editor.eventb.MachineContentObject; import de.bmotionstudio.gef.editor.eventb.MachineOperation; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.scheduler.PredicateOperation; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class OperationValueEditingSupport extends EditingSupport { @@ -38,7 +38,7 @@ public class OperationValueEditingSupport extends EditingSupport { @Override protected boolean canEdit(Object element) { - return WizardObserverUtil.isEditElement(getViewer()); + return BMotionWizardUtil.isEditElement(getViewer()); } @Override diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/PredicateEditingSupport.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/PredicateEditingSupport.java index 3b53eb32de944912d6ddb1126ce5a5c58564b26f..44958fce0ab5c94416c419b216363591e59dbcfc 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/PredicateEditingSupport.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/PredicateEditingSupport.java @@ -19,7 +19,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; import de.bmotionstudio.gef.editor.model.Visualization; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; /** * @author Lukas Ladenberger @@ -57,7 +57,7 @@ public class PredicateEditingSupport extends ObservableValueEditingSupport { @Override protected boolean canEdit(Object element) { - return WizardObserverUtil.isEditElement(getViewer()); + return BMotionWizardUtil.isEditElement(getViewer()); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextCellEditorLocator.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextCellEditorLocator.java index ff822972b3615762b319ee29b5eb33d936c10de9..db6448097bb0a2baf40351c365fef23f462b889d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextCellEditorLocator.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextCellEditorLocator.java @@ -1,42 +1,42 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.edit; - -import org.eclipse.draw2d.IFigure; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.gef.tools.CellEditorLocator; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.swt.widgets.Text; - -public class TextCellEditorLocator implements CellEditorLocator { - - private IFigure textField; - - public TextCellEditorLocator(IFigure textField) { - setTextField(textField); - } - - public void relocate(CellEditor celleditor) { - Text text = (Text) celleditor.getControl(); - Rectangle rect = textField.getClientArea(); - textField.translateToAbsolute(rect); - org.eclipse.swt.graphics.Rectangle trim = text.computeTrim(0, 0, 0, 0); - rect.translate(trim.x, trim.y); - rect.width += trim.width; - rect.height += trim.height; - text.setBounds(rect.x, rect.y, rect.width, rect.height); - } - - protected IFigure getTextField() { - return textField; - } - - protected void setTextField(IFigure textField) { - this.textField = textField; - } - +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.edit; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.gef.tools.CellEditorLocator; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.swt.widgets.Text; + +public class TextCellEditorLocator implements CellEditorLocator { + + private IFigure textField; + + public TextCellEditorLocator(IFigure textField) { + setTextField(textField); + } + + public void relocate(CellEditor celleditor) { + Text text = (Text) celleditor.getControl(); + Rectangle rect = textField.getClientArea(); + textField.translateToAbsolute(rect); + org.eclipse.swt.graphics.Rectangle trim = text.computeTrim(0, 0, 0, 0); + rect.translate(trim.x, trim.y); + rect.width += trim.width; + rect.height += trim.height; + text.setBounds(rect.x, rect.y, rect.width, rect.height); + } + + protected IFigure getTextField() { + return textField; + } + + protected void setTextField(IFigure textField) { + this.textField = textField; + } + } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditManager.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditManager.java index 0cf46e1173cd1ad8eea0498f3cc4a728ca1efdc8..82065ecd1d75b43fcbabbcef511437de882d9256 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditManager.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditManager.java @@ -1,156 +1,156 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.edit; - -import org.eclipse.draw2d.IFigure; -import org.eclipse.gef.editparts.ZoomListener; -import org.eclipse.gef.editparts.ZoomManager; -import org.eclipse.gef.tools.CellEditorLocator; -import org.eclipse.gef.tools.DirectEditManager; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.TextCellEditor; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IActionBars; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.ActionFactory; -import org.eclipse.ui.part.CellEditorActionHandler; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; - -public class TextEditManager extends DirectEditManager { - - private IActionBars actionBars; - private CellEditorActionHandler actionHandler; - private IAction copy, cut, paste, undo, redo, find, selectAll, delete; - private double cachedZoom = -1.0; - private Font scaledFont; - private ZoomListener zoomListener = new ZoomListener() { - public void zoomChanged(double newZoom) { - updateScaledFont(newZoom); - } - }; - - public TextEditManager(AppAbstractEditPart source, CellEditorLocator locator) { - super(source, null, locator); - } - - /** - * @see org.eclipse.gef.tools.DirectEditManager#bringDown() - */ - protected void bringDown() { - ZoomManager zoomMgr = (ZoomManager) getEditPart().getViewer() - .getProperty(ZoomManager.class.toString()); - if (zoomMgr != null) - zoomMgr.removeZoomListener(zoomListener); - - if (actionHandler != null) { - actionHandler.dispose(); - actionHandler = null; - } - if (actionBars != null) { - restoreSavedActions(actionBars); - actionBars.updateActionBars(); - actionBars = null; - } - - super.bringDown(); - // dispose any scaled fonts that might have been created - disposeScaledFont(); - } - - protected CellEditor createCellEditorOn(Composite composite) { - return new TextCellEditor(composite, SWT.NONE); - } - - private void disposeScaledFont() { - if (scaledFont != null) { - scaledFont.dispose(); - scaledFont = null; - } - } - - protected void initCellEditor() { - // update text - IFigure figure = (IFigure) getEditPart().getFigure(); - getCellEditor().setValue( - ((BControl) getEditPart().getModel()) - .getAttributeValue(AttributeConstants.ATTRIBUTE_TEXT)); - // update font - ZoomManager zoomMgr = (ZoomManager) getEditPart().getViewer() - .getProperty(ZoomManager.class.toString()); - if (zoomMgr != null) { - // this will force the font to be set - cachedZoom = -1.0; - updateScaledFont(zoomMgr.getZoom()); - zoomMgr.addZoomListener(zoomListener); - } else { - getCellEditor().getControl().setFont(figure.getFont()); - } - - // Hook the cell editor's copy/paste actions to the actionBars so that - // they can - // be invoked via keyboard shortcuts. - actionBars = PlatformUI.getWorkbench().getActiveWorkbenchWindow() - .getActivePage().getActiveEditor().getEditorSite() - .getActionBars(); - saveCurrentActions(actionBars); - actionHandler = new CellEditorActionHandler(actionBars); - actionHandler.addCellEditor(getCellEditor()); - actionBars.updateActionBars(); - } - - private void restoreSavedActions(IActionBars actionBars) { - actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), copy); - actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), paste); - actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), delete); - actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), - selectAll); - actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), cut); - actionBars.setGlobalActionHandler(ActionFactory.FIND.getId(), find); - actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), undo); - actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), redo); - } - - private void saveCurrentActions(IActionBars actionBars) { - copy = actionBars.getGlobalActionHandler(ActionFactory.COPY.getId()); - paste = actionBars.getGlobalActionHandler(ActionFactory.PASTE.getId()); - delete = actionBars - .getGlobalActionHandler(ActionFactory.DELETE.getId()); - selectAll = actionBars.getGlobalActionHandler(ActionFactory.SELECT_ALL - .getId()); - cut = actionBars.getGlobalActionHandler(ActionFactory.CUT.getId()); - find = actionBars.getGlobalActionHandler(ActionFactory.FIND.getId()); - undo = actionBars.getGlobalActionHandler(ActionFactory.UNDO.getId()); - redo = actionBars.getGlobalActionHandler(ActionFactory.REDO.getId()); - } - - private void updateScaledFont(double zoom) { - if (cachedZoom == zoom) - return; - - Text text = (Text) getCellEditor().getControl(); - Font font = getEditPart().getFigure().getFont(); - - disposeScaledFont(); - cachedZoom = zoom; - if (zoom == 1.0) - text.setFont(font); - else { - FontData fd = font.getFontData()[0]; - fd.setHeight((int) (fd.getHeight() * zoom)); - text.setFont(scaledFont = new Font(null, fd)); - } - } - +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.edit; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.gef.editparts.ZoomListener; +import org.eclipse.gef.editparts.ZoomManager; +import org.eclipse.gef.tools.CellEditorLocator; +import org.eclipse.gef.tools.DirectEditManager; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.TextCellEditor; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.ActionFactory; +import org.eclipse.ui.part.CellEditorActionHandler; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; + +public class TextEditManager extends DirectEditManager { + + private IActionBars actionBars; + private CellEditorActionHandler actionHandler; + private IAction copy, cut, paste, undo, redo, find, selectAll, delete; + private double cachedZoom = -1.0; + private Font scaledFont; + private ZoomListener zoomListener = new ZoomListener() { + public void zoomChanged(double newZoom) { + updateScaledFont(newZoom); + } + }; + + public TextEditManager(AppAbstractEditPart source, CellEditorLocator locator) { + super(source, null, locator); + } + + /** + * @see org.eclipse.gef.tools.DirectEditManager#bringDown() + */ + protected void bringDown() { + ZoomManager zoomMgr = (ZoomManager) getEditPart().getViewer() + .getProperty(ZoomManager.class.toString()); + if (zoomMgr != null) + zoomMgr.removeZoomListener(zoomListener); + + if (actionHandler != null) { + actionHandler.dispose(); + actionHandler = null; + } + if (actionBars != null) { + restoreSavedActions(actionBars); + actionBars.updateActionBars(); + actionBars = null; + } + + super.bringDown(); + // dispose any scaled fonts that might have been created + disposeScaledFont(); + } + + protected CellEditor createCellEditorOn(Composite composite) { + return new TextCellEditor(composite, SWT.NONE); + } + + private void disposeScaledFont() { + if (scaledFont != null) { + scaledFont.dispose(); + scaledFont = null; + } + } + + protected void initCellEditor() { + // update text + IFigure figure = (IFigure) getEditPart().getFigure(); + getCellEditor().setValue( + ((BControl) getEditPart().getModel()) + .getAttributeValue(AttributeConstants.ATTRIBUTE_TEXT)); + // update font + ZoomManager zoomMgr = (ZoomManager) getEditPart().getViewer() + .getProperty(ZoomManager.class.toString()); + if (zoomMgr != null) { + // this will force the font to be set + cachedZoom = -1.0; + updateScaledFont(zoomMgr.getZoom()); + zoomMgr.addZoomListener(zoomListener); + } else { + getCellEditor().getControl().setFont(figure.getFont()); + } + + // Hook the cell editor's copy/paste actions to the actionBars so that + // they can + // be invoked via keyboard shortcuts. + actionBars = PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .getActivePage().getActiveEditor().getEditorSite() + .getActionBars(); + saveCurrentActions(actionBars); + actionHandler = new CellEditorActionHandler(actionBars); + actionHandler.addCellEditor(getCellEditor()); + actionBars.updateActionBars(); + } + + private void restoreSavedActions(IActionBars actionBars) { + actionBars.setGlobalActionHandler(ActionFactory.COPY.getId(), copy); + actionBars.setGlobalActionHandler(ActionFactory.PASTE.getId(), paste); + actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), delete); + actionBars.setGlobalActionHandler(ActionFactory.SELECT_ALL.getId(), + selectAll); + actionBars.setGlobalActionHandler(ActionFactory.CUT.getId(), cut); + actionBars.setGlobalActionHandler(ActionFactory.FIND.getId(), find); + actionBars.setGlobalActionHandler(ActionFactory.UNDO.getId(), undo); + actionBars.setGlobalActionHandler(ActionFactory.REDO.getId(), redo); + } + + private void saveCurrentActions(IActionBars actionBars) { + copy = actionBars.getGlobalActionHandler(ActionFactory.COPY.getId()); + paste = actionBars.getGlobalActionHandler(ActionFactory.PASTE.getId()); + delete = actionBars + .getGlobalActionHandler(ActionFactory.DELETE.getId()); + selectAll = actionBars.getGlobalActionHandler(ActionFactory.SELECT_ALL + .getId()); + cut = actionBars.getGlobalActionHandler(ActionFactory.CUT.getId()); + find = actionBars.getGlobalActionHandler(ActionFactory.FIND.getId()); + undo = actionBars.getGlobalActionHandler(ActionFactory.UNDO.getId()); + redo = actionBars.getGlobalActionHandler(ActionFactory.REDO.getId()); + } + + private void updateScaledFont(double zoom) { + if (cachedZoom == zoom) + return; + + Text text = (Text) getCellEditor().getControl(); + Font font = getEditPart().getFigure().getFont(); + + disposeScaledFont(); + cachedZoom = zoom; + if (zoom == 1.0) + text.setFont(font); + else { + FontData fd = font.getFontData()[0]; + fd.setHeight((int) (fd.getHeight() * zoom)); + text.setFont(scaledFont = new Font(null, fd)); + } + } + } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditingSupport.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditingSupport.java index 95e727432e153ed36112c58c3709b84e2d57f98d..bc01452ea8c5b2d1006d62fa7398b0ad02b67445 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditingSupport.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/edit/TextEditingSupport.java @@ -18,7 +18,7 @@ import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class TextEditingSupport extends ObservableValueEditingSupport { @@ -54,7 +54,7 @@ public class TextEditingSupport extends ObservableValueEditingSupport { @Override protected boolean canEdit(Object element) { - return WizardObserverUtil.isEditElement(getViewer()); + return BMotionWizardUtil.isEditElement(getViewer()); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/AppDeletePolicy.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/AppDeletePolicy.java index 05cdf766042d0c2428057ed1b90aacc4fbfdd74d..e6e18db463743f48589a4b97253412a7328a0084 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/AppDeletePolicy.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/AppDeletePolicy.java @@ -1,24 +1,24 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.editpolicy; - -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.editpolicies.ComponentEditPolicy; -import org.eclipse.gef.requests.GroupRequest; - -import de.bmotionstudio.gef.editor.command.DeleteCommand; -import de.bmotionstudio.gef.editor.model.BControl; - -public class AppDeletePolicy extends ComponentEditPolicy { - - protected Command createDeleteCommand(GroupRequest deleteRequest) { - DeleteCommand command = new DeleteCommand((BControl) getHost() - .getModel(), (BControl) getHost().getParent().getModel()); - return command; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.editpolicy; + +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editpolicies.ComponentEditPolicy; +import org.eclipse.gef.requests.GroupRequest; + +import de.bmotionstudio.gef.editor.command.DeleteCommand; +import de.bmotionstudio.gef.editor.model.BControl; + +public class AppDeletePolicy extends ComponentEditPolicy { + + protected Command createDeleteCommand(GroupRequest deleteRequest) { + DeleteCommand command = new DeleteCommand((BControl) getHost() + .getModel(), (BControl) getHost().getParent().getModel()); + return command; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/AppEditLayoutPolicy.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/AppEditLayoutPolicy.java index 6d8080f8a487911ec7ae0e5888adccb572e17898..5fcc1fe24c6c002c48b4e7b7dd3dae3ccf268a1e 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/AppEditLayoutPolicy.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/AppEditLayoutPolicy.java @@ -1,233 +1,233 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.editpolicy; - -import org.eclipse.draw2d.PositionConstants; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.gef.EditPart; -import org.eclipse.gef.EditPolicy; -import org.eclipse.gef.Request; -import org.eclipse.gef.SnapToGuides; -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.editpolicies.ResizableEditPolicy; -import org.eclipse.gef.editpolicies.XYLayoutEditPolicy; -import org.eclipse.gef.requests.ChangeBoundsRequest; -import org.eclipse.gef.requests.CreateRequest; -import org.eclipse.gef.rulers.RulerProvider; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.attribute.BAttributeHeight; -import de.bmotionstudio.gef.editor.attribute.BAttributeWidth; -import de.bmotionstudio.gef.editor.command.BControlChangeLayoutCommand; -import de.bmotionstudio.gef.editor.command.CreateCommand; -import de.bmotionstudio.gef.editor.command.ChangeGuideCommand; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.BMotionGuide; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; - -public class AppEditLayoutPolicy extends XYLayoutEditPolicy { - - @Override - protected Command createChangeConstraintCommand(EditPart child, - Object constraint) { - return null; - } - - @Override - protected Command createChangeConstraintCommand( - ChangeBoundsRequest request, EditPart child, Object constraint) { - - BControlChangeLayoutCommand cmd = new BControlChangeLayoutCommand(); - BControl part = (BControl) child.getModel(); - cmd.setModel(child.getModel()); - cmd.setConstraint((Rectangle) constraint); - Command result = cmd; - - if ((request.getResizeDirection() & PositionConstants.NORTH_SOUTH) != 0) { - Integer guidePos = (Integer) request.getExtendedData().get( - SnapToGuides.KEY_HORIZONTAL_GUIDE); - if (guidePos != null) { - result = chainGuideAttachmentCommand(request, part, result, - true); - } else if (part.getHorizontalGuide() != null) { - // SnapToGuides didn't provide a horizontal guide, but this part - // is attached - // to a horizontal guide. Now we check to see if the part is - // attached to - // the guide along the edge being resized. If that is the case, - // we need to - // detach the part from the guide; otherwise, we leave it alone. - int alignment = part.getHorizontalGuide().getAlignment(part); - int edgeBeingResized = 0; - if ((request.getResizeDirection() & PositionConstants.NORTH) != 0) - edgeBeingResized = -1; - else - edgeBeingResized = 1; - if (alignment == edgeBeingResized) - result = result.chain(new ChangeGuideCommand(part, true)); - } - } - - if ((request.getResizeDirection() & PositionConstants.EAST_WEST) != 0) { - Integer guidePos = (Integer) request.getExtendedData().get( - SnapToGuides.KEY_VERTICAL_GUIDE); - if (guidePos != null) { - result = chainGuideAttachmentCommand(request, part, result, - false); - } else if (part.getVerticalGuide() != null) { - int alignment = part.getVerticalGuide().getAlignment(part); - int edgeBeingResized = 0; - if ((request.getResizeDirection() & PositionConstants.WEST) != 0) - edgeBeingResized = -1; - else - edgeBeingResized = 1; - if (alignment == edgeBeingResized) - result = result.chain(new ChangeGuideCommand(part, false)); - } - } - - if (request.getType().equals(REQ_MOVE_CHILDREN) - || request.getType().equals(REQ_ALIGN_CHILDREN)) { - result = chainGuideAttachmentCommand(request, part, result, true); - result = chainGuideAttachmentCommand(request, part, result, false); - result = chainGuideDetachmentCommand(request, part, result, true); - result = chainGuideDetachmentCommand(request, part, result, false); - } - - return result; - } - - @Override - protected EditPolicy createChildEditPolicy(EditPart child) { - - BControl control = (BControl) child.getModel(); - - ResizableEditPolicy policy = new ResizableEditPolicy(); - - BAttributeWidth atrWidth = (BAttributeWidth) control.getAttributes() - .get(AttributeConstants.ATTRIBUTE_WIDTH); - BAttributeHeight atrHeight = (BAttributeHeight) control.getAttributes() - .get(AttributeConstants.ATTRIBUTE_HEIGHT); - - if (atrWidth.isEditable() && atrHeight.isEditable()) - return policy; - - if (atrWidth.isEditable()) { - policy.setResizeDirections(PositionConstants.EAST_WEST); - return policy; - } - - if (atrHeight.isEditable()) { - policy.setResizeDirections(PositionConstants.NORTH_SOUTH); - return policy; - } - - policy.setResizeDirections(0); - - return policy; - - } - - @Override - protected Command getCreateCommand(CreateRequest request) { - - if (request.getType() == REQ_CREATE - && getHost() instanceof AppAbstractEditPart) { - - if (((BControl) ((AppAbstractEditPart) getHost()).getModel()) - .canHaveChildren()) { - - BControl newObj = (BControl) request.getNewObject(); - - CreateCommand createCmd = new CreateCommand( - newObj, (BControl) getHost().getModel()); - - Rectangle constraint = (Rectangle) getConstraintFor(request); - constraint.x = (constraint.x < 0) ? 0 : constraint.x; - constraint.y = (constraint.y < 0) ? 0 : constraint.y; - - BAttributeWidth atrWidth = (BAttributeWidth) newObj - .getAttributes() - .get(AttributeConstants.ATTRIBUTE_WIDTH); - BAttributeHeight atrHeight = (BAttributeHeight) newObj - .getAttributes().get( - AttributeConstants.ATTRIBUTE_HEIGHT); - - if (atrWidth != null) { - constraint.width = Integer.valueOf(atrWidth.getValue() - .toString()); - } else { - constraint.width = (constraint.width <= 0) ? 100 - : constraint.width; - } - - if (atrHeight != null) { - constraint.height = Integer.valueOf(atrHeight.getValue() - .toString()); - } else { - constraint.height = (constraint.height <= 0) ? 100 - : constraint.height; - } - - createCmd.setLayout(constraint); - - Command cmd = chainGuideAttachmentCommand(request, newObj, - createCmd, true); - return chainGuideAttachmentCommand(request, newObj, cmd, false); - - } - - } - - return null; - - } - - protected Command chainGuideAttachmentCommand(Request request, - BControl part, Command cmd, boolean horizontal) { - Command result = cmd; - - // Attach to guide, if one is given - Integer guidePos = (Integer) request.getExtendedData().get( - horizontal ? SnapToGuides.KEY_HORIZONTAL_GUIDE - : SnapToGuides.KEY_VERTICAL_GUIDE); - if (guidePos != null) { - int alignment = ((Integer) request.getExtendedData().get( - horizontal ? SnapToGuides.KEY_HORIZONTAL_ANCHOR - : SnapToGuides.KEY_VERTICAL_ANCHOR)).intValue(); - ChangeGuideCommand cgm = new ChangeGuideCommand(part, horizontal); - cgm.setNewGuide(findGuideAt(guidePos.intValue(), horizontal), - alignment); - result = result.chain(cgm); - } - - return result; - } - - protected Command chainGuideDetachmentCommand(Request request, - BControl part, Command cmd, boolean horizontal) { - Command result = cmd; - - // Detach from guide, if none is given - Integer guidePos = (Integer) request.getExtendedData().get( - horizontal ? SnapToGuides.KEY_HORIZONTAL_GUIDE - : SnapToGuides.KEY_VERTICAL_GUIDE); - if (guidePos == null) - result = result.chain(new ChangeGuideCommand(part, horizontal)); - - return result; - } - - protected BMotionGuide findGuideAt(int pos, boolean horizontal) { - RulerProvider provider = ((RulerProvider) getHost().getViewer() - .getProperty( - horizontal ? RulerProvider.PROPERTY_VERTICAL_RULER - : RulerProvider.PROPERTY_HORIZONTAL_RULER)); - return (BMotionGuide) provider.getGuideAt(pos); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.editpolicy; + +import org.eclipse.draw2d.PositionConstants; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.SnapToGuides; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editpolicies.ResizableEditPolicy; +import org.eclipse.gef.editpolicies.XYLayoutEditPolicy; +import org.eclipse.gef.requests.ChangeBoundsRequest; +import org.eclipse.gef.requests.CreateRequest; +import org.eclipse.gef.rulers.RulerProvider; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.attribute.BAttributeHeight; +import de.bmotionstudio.gef.editor.attribute.BAttributeWidth; +import de.bmotionstudio.gef.editor.command.BControlChangeLayoutCommand; +import de.bmotionstudio.gef.editor.command.ChangeGuideCommand; +import de.bmotionstudio.gef.editor.command.CreateCommand; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BMotionGuide; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; + +public class AppEditLayoutPolicy extends XYLayoutEditPolicy { + + @Override + protected Command createChangeConstraintCommand(EditPart child, + Object constraint) { + return null; + } + + @Override + protected Command createChangeConstraintCommand( + ChangeBoundsRequest request, EditPart child, Object constraint) { + + BControlChangeLayoutCommand cmd = new BControlChangeLayoutCommand(); + BControl part = (BControl) child.getModel(); + cmd.setModel(child.getModel()); + cmd.setConstraint((Rectangle) constraint); + Command result = cmd; + + if ((request.getResizeDirection() & PositionConstants.NORTH_SOUTH) != 0) { + Integer guidePos = (Integer) request.getExtendedData().get( + SnapToGuides.KEY_HORIZONTAL_GUIDE); + if (guidePos != null) { + result = chainGuideAttachmentCommand(request, part, result, + true); + } else if (part.getHorizontalGuide() != null) { + // SnapToGuides didn't provide a horizontal guide, but this part + // is attached + // to a horizontal guide. Now we check to see if the part is + // attached to + // the guide along the edge being resized. If that is the case, + // we need to + // detach the part from the guide; otherwise, we leave it alone. + int alignment = part.getHorizontalGuide().getAlignment(part); + int edgeBeingResized = 0; + if ((request.getResizeDirection() & PositionConstants.NORTH) != 0) + edgeBeingResized = -1; + else + edgeBeingResized = 1; + if (alignment == edgeBeingResized) + result = result.chain(new ChangeGuideCommand(part, true)); + } + } + + if ((request.getResizeDirection() & PositionConstants.EAST_WEST) != 0) { + Integer guidePos = (Integer) request.getExtendedData().get( + SnapToGuides.KEY_VERTICAL_GUIDE); + if (guidePos != null) { + result = chainGuideAttachmentCommand(request, part, result, + false); + } else if (part.getVerticalGuide() != null) { + int alignment = part.getVerticalGuide().getAlignment(part); + int edgeBeingResized = 0; + if ((request.getResizeDirection() & PositionConstants.WEST) != 0) + edgeBeingResized = -1; + else + edgeBeingResized = 1; + if (alignment == edgeBeingResized) + result = result.chain(new ChangeGuideCommand(part, false)); + } + } + + if (request.getType().equals(REQ_MOVE_CHILDREN) + || request.getType().equals(REQ_ALIGN_CHILDREN)) { + result = chainGuideAttachmentCommand(request, part, result, true); + result = chainGuideAttachmentCommand(request, part, result, false); + result = chainGuideDetachmentCommand(request, part, result, true); + result = chainGuideDetachmentCommand(request, part, result, false); + } + + return result; + } + + @Override + protected EditPolicy createChildEditPolicy(EditPart child) { + + BControl control = (BControl) child.getModel(); + + ResizableEditPolicy policy = new ResizableEditPolicy(); + + BAttributeWidth atrWidth = (BAttributeWidth) control.getAttributes() + .get(AttributeConstants.ATTRIBUTE_WIDTH); + BAttributeHeight atrHeight = (BAttributeHeight) control.getAttributes() + .get(AttributeConstants.ATTRIBUTE_HEIGHT); + + if (atrWidth.isEditable() && atrHeight.isEditable()) + return policy; + + if (atrWidth.isEditable()) { + policy.setResizeDirections(PositionConstants.EAST_WEST); + return policy; + } + + if (atrHeight.isEditable()) { + policy.setResizeDirections(PositionConstants.NORTH_SOUTH); + return policy; + } + + policy.setResizeDirections(0); + + return policy; + + } + + @Override + protected Command getCreateCommand(CreateRequest request) { + + if (request.getType() == REQ_CREATE + && getHost() instanceof AppAbstractEditPart) { + + if (((BControl) ((AppAbstractEditPart) getHost()).getModel()) + .canHaveChildren()) { + + BControl newObj = (BControl) request.getNewObject(); + + CreateCommand createCmd = new CreateCommand( + newObj, (BControl) getHost().getModel()); + + Rectangle constraint = (Rectangle) getConstraintFor(request); + constraint.x = (constraint.x < 0) ? 0 : constraint.x; + constraint.y = (constraint.y < 0) ? 0 : constraint.y; + + BAttributeWidth atrWidth = (BAttributeWidth) newObj + .getAttributes() + .get(AttributeConstants.ATTRIBUTE_WIDTH); + BAttributeHeight atrHeight = (BAttributeHeight) newObj + .getAttributes().get( + AttributeConstants.ATTRIBUTE_HEIGHT); + + if (atrWidth != null) { + constraint.width = Integer.valueOf(atrWidth.getValue() + .toString()); + } else { + constraint.width = (constraint.width <= 0) ? 100 + : constraint.width; + } + + if (atrHeight != null) { + constraint.height = Integer.valueOf(atrHeight.getValue() + .toString()); + } else { + constraint.height = (constraint.height <= 0) ? 100 + : constraint.height; + } + + createCmd.setLayout(constraint); + + Command cmd = chainGuideAttachmentCommand(request, newObj, + createCmd, true); + return chainGuideAttachmentCommand(request, newObj, cmd, false); + + } + + } + + return null; + + } + + protected Command chainGuideAttachmentCommand(Request request, + BControl part, Command cmd, boolean horizontal) { + Command result = cmd; + + // Attach to guide, if one is given + Integer guidePos = (Integer) request.getExtendedData().get( + horizontal ? SnapToGuides.KEY_HORIZONTAL_GUIDE + : SnapToGuides.KEY_VERTICAL_GUIDE); + if (guidePos != null) { + int alignment = ((Integer) request.getExtendedData().get( + horizontal ? SnapToGuides.KEY_HORIZONTAL_ANCHOR + : SnapToGuides.KEY_VERTICAL_ANCHOR)).intValue(); + ChangeGuideCommand cgm = new ChangeGuideCommand(part, horizontal); + cgm.setNewGuide(findGuideAt(guidePos.intValue(), horizontal), + alignment); + result = result.chain(cgm); + } + + return result; + } + + protected Command chainGuideDetachmentCommand(Request request, + BControl part, Command cmd, boolean horizontal) { + Command result = cmd; + + // Detach from guide, if none is given + Integer guidePos = (Integer) request.getExtendedData().get( + horizontal ? SnapToGuides.KEY_HORIZONTAL_GUIDE + : SnapToGuides.KEY_VERTICAL_GUIDE); + if (guidePos == null) + result = result.chain(new ChangeGuideCommand(part, horizontal)); + + return result; + } + + protected BMotionGuide findGuideAt(int pos, boolean horizontal) { + RulerProvider provider = ((RulerProvider) getHost().getViewer() + .getProperty( + horizontal ? RulerProvider.PROPERTY_VERTICAL_RULER + : RulerProvider.PROPERTY_HORIZONTAL_RULER)); + return (BMotionGuide) provider.getGuideAt(pos); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionNodeEditPolicy.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionNodeEditPolicy.java index eceaa531a7c6b1803f0af7d91b8359121dba944c..71e68f16775c4bd77a02435070de5179d75e7607 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionNodeEditPolicy.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionNodeEditPolicy.java @@ -1,85 +1,85 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.editpolicy; - -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy; -import org.eclipse.gef.requests.CreateConnectionRequest; -import org.eclipse.gef.requests.ReconnectRequest; - -import de.bmotionstudio.gef.editor.command.ConnectionCreateCommand; -import de.bmotionstudio.gef.editor.command.ConnectionReconnectCommand; -import de.bmotionstudio.gef.editor.model.BConnection; -import de.bmotionstudio.gef.editor.model.BControl; - -public class BMotionNodeEditPolicy extends GraphicalNodeEditPolicy { - - /* - * (non-Javadoc) - * - * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy# - * getConnectionCompleteCommand - * (org.eclipse.gef.requests.CreateConnectionRequest) - */ - protected Command getConnectionCompleteCommand( - CreateConnectionRequest request) { - ConnectionCreateCommand cmd = (ConnectionCreateCommand) request - .getStartCommand(); - cmd.setTarget((BControl) getHost().getModel()); - return cmd; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy# - * getConnectionCreateCommand - * (org.eclipse.gef.requests.CreateConnectionRequest) - */ - protected Command getConnectionCreateCommand(CreateConnectionRequest request) { - BControl source = (BControl) getHost().getModel(); - ConnectionCreateCommand cmd = new ConnectionCreateCommand(source); - BConnection con = (BConnection) request.getNewObject(); - con.setVisualization(source.getVisualization()); - cmd.setConnection(con); - request.setStartCommand(cmd); - return cmd; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy# - * getReconnectSourceCommand (org.eclipse.gef.requests.ReconnectRequest) - */ - protected Command getReconnectSourceCommand(ReconnectRequest request) { - BConnection conn = (BConnection) request.getConnectionEditPart() - .getModel(); - BControl newSource = (BControl) getHost().getModel(); - ConnectionReconnectCommand cmd = new ConnectionReconnectCommand(); - cmd.setNewSource(newSource); - cmd.setConnection(conn); - return cmd; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy# - * getReconnectTargetCommand (org.eclipse.gef.requests.ReconnectRequest) - */ - protected Command getReconnectTargetCommand(ReconnectRequest request) { - BConnection conn = (BConnection) request.getConnectionEditPart() - .getModel(); - BControl newTarget = (BControl) getHost().getModel(); - ConnectionReconnectCommand cmd = new ConnectionReconnectCommand(); - cmd.setNewTarget(newTarget); - cmd.setConnection(conn); - return cmd; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.editpolicy; + +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy; +import org.eclipse.gef.requests.CreateConnectionRequest; +import org.eclipse.gef.requests.ReconnectRequest; + +import de.bmotionstudio.gef.editor.command.ConnectionCreateCommand; +import de.bmotionstudio.gef.editor.command.ConnectionReconnectCommand; +import de.bmotionstudio.gef.editor.model.BConnection; +import de.bmotionstudio.gef.editor.model.BControl; + +public class BMotionNodeEditPolicy extends GraphicalNodeEditPolicy { + + /* + * (non-Javadoc) + * + * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy# + * getConnectionCompleteCommand + * (org.eclipse.gef.requests.CreateConnectionRequest) + */ + protected Command getConnectionCompleteCommand( + CreateConnectionRequest request) { + ConnectionCreateCommand cmd = (ConnectionCreateCommand) request + .getStartCommand(); + cmd.setTarget((BControl) getHost().getModel()); + return cmd; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy# + * getConnectionCreateCommand + * (org.eclipse.gef.requests.CreateConnectionRequest) + */ + protected Command getConnectionCreateCommand(CreateConnectionRequest request) { + BControl source = (BControl) getHost().getModel(); + ConnectionCreateCommand cmd = new ConnectionCreateCommand(source); + BConnection con = (BConnection) request.getNewObject(); + con.setVisualization(source.getVisualization()); + cmd.setConnection(con); + request.setStartCommand(cmd); + return cmd; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy# + * getReconnectSourceCommand (org.eclipse.gef.requests.ReconnectRequest) + */ + protected Command getReconnectSourceCommand(ReconnectRequest request) { + BConnection conn = (BConnection) request.getConnectionEditPart() + .getModel(); + BControl newSource = (BControl) getHost().getModel(); + ConnectionReconnectCommand cmd = new ConnectionReconnectCommand(); + cmd.setNewSource(newSource); + cmd.setConnection(conn); + return cmd; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy# + * getReconnectTargetCommand (org.eclipse.gef.requests.ReconnectRequest) + */ + protected Command getReconnectTargetCommand(ReconnectRequest request) { + BConnection conn = (BConnection) request.getConnectionEditPart() + .getModel(); + BControl newTarget = (BControl) getHost().getModel(); + ConnectionReconnectCommand cmd = new ConnectionReconnectCommand(); + cmd.setNewTarget(newTarget); + cmd.setConnection(conn); + return cmd; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionStudioFlowEditPolicy.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionStudioFlowEditPolicy.java new file mode 100644 index 0000000000000000000000000000000000000000..956819493c3a5554155a51cf5f936bd59fd19356 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionStudioFlowEditPolicy.java @@ -0,0 +1,113 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ +package de.bmotionstudio.gef.editor.editpolicy; + +import org.eclipse.draw2d.FlowLayout; +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.PositionConstants; +import org.eclipse.draw2d.ToolbarLayout; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editpolicies.FlowLayoutEditPolicy; +import org.eclipse.gef.requests.CreateRequest; + +import de.bmotionstudio.gef.editor.command.AddCommand; +import de.bmotionstudio.gef.editor.command.ReorderPartCommand; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BTable; +import de.bmotionstudio.gef.editor.model.BTableCell; +import de.bmotionstudio.gef.editor.model.BTableColumn; + +public class BMotionStudioFlowEditPolicy extends FlowLayoutEditPolicy { + + @Override + protected Command createAddCommand(EditPart child, EditPart after) { + + BControl childModel = (BControl) child.getModel(); + BControl parentModel = (BControl) getHost().getModel(); + if ((childModel instanceof BTableColumn && parentModel instanceof BTable) + || (childModel instanceof BTableCell + && parentModel instanceof BTableColumn && childModel + .getParent().equals(parentModel))) { + AddCommand command = new AddCommand(); + command.setChild(childModel); + command.setParent(parentModel); + int index = getHost().getChildren().indexOf(after); + command.setIndex(index); + return command; + } + return null; + } + + /** + * @see org.eclipse.gef.editpolicies.LayoutEditPolicy#createChildEditPolicy(org.eclipse.gef.EditPart) + */ + protected EditPolicy createChildEditPolicy(EditPart child) { + BMotionStudioResizableEditPolicy policy = new BMotionStudioResizableEditPolicy(); + policy.setResizeDirections(PositionConstants.EAST + | PositionConstants.WEST); + return policy; + } + + @Override + protected Command createMoveChildCommand(EditPart child, EditPart after) { + + + BControl childModel = (BControl) child.getModel(); + BControl parentModel = (BControl) getHost().getModel(); + + if ((childModel instanceof BTableColumn && parentModel instanceof BTable) + || (childModel instanceof BTableCell && parentModel instanceof BTableColumn)) { + int oldIndex = getHost().getChildren().indexOf(child); + int newIndex = getHost().getChildren().indexOf(after); + if (newIndex > oldIndex) + newIndex--; + ReorderPartCommand command = new ReorderPartCommand(childModel, + parentModel, newIndex); + return command; + } + + return null; + + } + + @Override + protected Command getCreateCommand(CreateRequest request) { + // CreateCommand command = new CreateCommand( + // (BControl) request.getNewObject(), (BControl) getHost() + // .getModel()); + // EditPart after = getInsertionReference(request); + // command.setLayout(new Rectangle(0, 0, 100, 25)); + // int index = getHost().getChildren().indexOf(after); + // command.setIndex(index); + // return command; + return null; + } + + @Override + protected boolean isHorizontal() { + IFigure figure = getLayoutContainer(); + if (figure.getLayoutManager() instanceof ToolbarLayout) { + return ((ToolbarLayout) figure.getLayoutManager()).isHorizontal(); + } else if (figure.getLayoutManager() instanceof FlowLayout) { + return ((FlowLayout) figure.getLayoutManager()).isHorizontal(); + } + return false; + } + + @Override + public void showLayoutTargetFeedback(Request request) { + if (request instanceof CreateRequest) { + Object newObject = ((CreateRequest) request).getNewObject(); + if (!(newObject instanceof BTableColumn || newObject instanceof BTableCell)) + return; + } + super.showLayoutTargetFeedback(request); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionStudioResizableEditPolicy.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionStudioResizableEditPolicy.java new file mode 100644 index 0000000000000000000000000000000000000000..cbe96daaf417a66b0d166d8d4fa292a28c853097 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/BMotionStudioResizableEditPolicy.java @@ -0,0 +1,83 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ +package de.bmotionstudio.gef.editor.editpolicy; + +import java.util.Iterator; + +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.RectangleFigure; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.gef.GraphicalEditPart; +import org.eclipse.gef.LayerConstants; +import org.eclipse.gef.editpolicies.ResizableEditPolicy; + +public class BMotionStudioResizableEditPolicy extends ResizableEditPolicy { + + /** + * Creates the figure used for feedback. + * + * @return the new feedback figure + */ + protected IFigure createDragSourceFeedbackFigure() { + IFigure figure = createFigure((GraphicalEditPart) getHost(), null); + figure.setBounds(getInitialFeedbackBounds()); + addFeedback(figure); + return figure; + } + + protected IFigure createFigure(GraphicalEditPart part, IFigure parent) { + IFigure child = getCustomFeedbackFigure(part.getModel()); + + if (parent != null) + parent.add(child); + + Rectangle childBounds = part.getFigure().getBounds().getCopy(); + + IFigure walker = part.getFigure().getParent(); + + while (walker != ((GraphicalEditPart) part.getParent()).getFigure()) { + walker.translateToParent(childBounds); + walker = walker.getParent(); + } + + child.setBounds(childBounds); + + Iterator<?> i = part.getChildren().iterator(); + + while (i.hasNext()) + createFigure((GraphicalEditPart) i.next(), child); + + return child; + } + + protected IFigure getCustomFeedbackFigure(Object modelPart) { + IFigure figure; + figure = new RectangleFigure(); + ((RectangleFigure) figure).setXOR(true); + ((RectangleFigure) figure).setFill(true); + figure.setBackgroundColor(ColorConstants.blue); + figure.setForegroundColor(ColorConstants.white); + return figure; + } + + /** + * Returns the layer used for displaying feedback. + * + * @return the feedback layer + */ + protected IFigure getFeedbackLayer() { + return getLayer(LayerConstants.SCALED_FEEDBACK_LAYER); + } + + /** + * @see org.eclipse.gef.editpolicies.NonResizableEditPolicy#getInitialFeedbackBounds() + */ + protected Rectangle getInitialFeedbackBounds() { + return getHostFigure().getBounds(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/CustomDirectEditPolicy.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/CustomDirectEditPolicy.java index c653ae10b5395880bc01730652e9933ef04765eb..0676c50ab47bd98a5fd9a44c929bf0e7de2dc97c 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/CustomDirectEditPolicy.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/CustomDirectEditPolicy.java @@ -1,39 +1,39 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.editpolicy; - -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.editpolicies.DirectEditPolicy; -import org.eclipse.gef.requests.DirectEditRequest; - -import de.bmotionstudio.gef.editor.command.RenameCommand; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; - -public class CustomDirectEditPolicy extends DirectEditPolicy { - - /** - * @see CustomDirectEditPolicy#getDirectEditCommand(DirectEditRequest) - */ - protected Command getDirectEditCommand(DirectEditRequest edit) { - String labelText = (String) edit.getCellEditor().getValue(); - AppAbstractEditPart label = (AppAbstractEditPart) getHost(); - RenameCommand command = new RenameCommand(); - command.setControl((BControl) label.getModel()); - command.setNewString(labelText); - return command; - } - - /** - * @see CustomDirectEditPolicy#showCurrentEditValue(DirectEditRequest) - */ - protected void showCurrentEditValue(DirectEditRequest request) { - // String value = (String) request.getCellEditor().getValue(); - getHostFigure().getUpdateManager().performUpdate(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.editpolicy; + +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editpolicies.DirectEditPolicy; +import org.eclipse.gef.requests.DirectEditRequest; + +import de.bmotionstudio.gef.editor.command.RenameCommand; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; + +public class CustomDirectEditPolicy extends DirectEditPolicy { + + /** + * @see CustomDirectEditPolicy#getDirectEditCommand(DirectEditRequest) + */ + protected Command getDirectEditCommand(DirectEditRequest edit) { + String labelText = (String) edit.getCellEditor().getValue(); + AppAbstractEditPart label = (AppAbstractEditPart) getHost(); + RenameCommand command = new RenameCommand(); + command.setControl((BControl) label.getModel()); + command.setNewString(labelText); + return command; + } + + /** + * @see CustomDirectEditPolicy#showCurrentEditValue(DirectEditRequest) + */ + protected void showCurrentEditValue(DirectEditRequest request) { + // String value = (String) request.getCellEditor().getValue(); + getHostFigure().getUpdateManager().performUpdate(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/RenamePolicy.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/RenamePolicy.java index 3d555a6708d99ab15db3c1ab83d02026af54cd34..831e24d56d4a10548c69bdcfd4d44202a68c0753 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/RenamePolicy.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/editpolicy/RenamePolicy.java @@ -1,33 +1,33 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.editpolicy; - -import org.eclipse.gef.Request; -import org.eclipse.gef.commands.Command; -import org.eclipse.gef.editpolicies.AbstractEditPolicy; - -import de.bmotionstudio.gef.editor.command.RenameCommand; -import de.bmotionstudio.gef.editor.model.BControl; - -public class RenamePolicy extends AbstractEditPolicy { - - @Override - public Command getCommand(Request request) { - if (request.getType().equals("rename")) - return createRenameCommand(request); - return null; - } - - protected Command createRenameCommand(Request renameRequest) { - RenameCommand command = new RenameCommand(); - command.setControl(((BControl) getHost().getModel())); - command.setNewString(((String) renameRequest.getExtendedData().get( - "newName"))); - return command; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.editpolicy; + +import org.eclipse.gef.Request; +import org.eclipse.gef.commands.Command; +import org.eclipse.gef.editpolicies.AbstractEditPolicy; + +import de.bmotionstudio.gef.editor.command.RenameCommand; +import de.bmotionstudio.gef.editor.model.BControl; + +public class RenamePolicy extends AbstractEditPolicy { + + @Override + public Command getCommand(Request request) { + if (request.getType().equals("rename")) + return createRenameCommand(request); + return null; + } + + protected Command createRenameCommand(Request renameRequest) { + RenameCommand command = new RenameCommand(); + command.setControl(((BControl) getHost().getModel())); + command.setNewString(((String) renameRequest.getExtendedData().get( + "newName"))); + return command; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/eventb/MachineOperation.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/eventb/MachineOperation.java index 60dfda23926c777d1b50371ae9d01371eb0c7a82..ae42a58e5040685ace6296e11fea66679775eb70 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/eventb/MachineOperation.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/eventb/MachineOperation.java @@ -1,44 +1,44 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.eventb; - -import java.util.ArrayList; -import java.util.List; - -public class MachineOperation extends MachineContentObject { - - private List<String> parameters; - private List<String> guards; - - public MachineOperation(String label, List<String> parameters, - List<String> guards) { - super(label); - this.parameters = parameters; - this.guards = guards; - } - - public MachineOperation(String label) { - super(label); - } - - public List<String> getParameters() { - return this.parameters; - } - - public List<String> getGuards() { - return guards; - } - - public void setParameters(ArrayList<String> parameters) { - this.parameters = parameters; - } - - public void setGuards(ArrayList<String> guards) { - this.guards = guards; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.eventb; + +import java.util.ArrayList; +import java.util.List; + +public class MachineOperation extends MachineContentObject { + + private List<String> parameters; + private List<String> guards; + + public MachineOperation(String label, List<String> parameters, + List<String> guards) { + super(label); + this.parameters = parameters; + this.guards = guards; + } + + public MachineOperation(String label) { + super(label); + } + + public List<String> getParameters() { + return this.parameters; + } + + public List<String> getGuards() { + return guards; + } + + public void setParameters(ArrayList<String> parameters) { + this.parameters = parameters; + } + + public void setGuards(ArrayList<String> guards) { + this.guards = guards; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/AbstractTableFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/AbstractTableFigure.java new file mode 100644 index 0000000000000000000000000000000000000000..2a3cad0bf8089fb5e23c2399bdc25dfcd6cc4d67 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/AbstractTableFigure.java @@ -0,0 +1,29 @@ +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +public class AbstractTableFigure extends AbstractBMotionFigure { + + private Color foregroundColor; + + @Override + public Color getForegroundColor() { + return foregroundColor; + } + + public void setForegroundColor(RGB rgb) { + if (foregroundColor != null) + foregroundColor.dispose(); + this.foregroundColor = new Color(Display.getDefault(), rgb); + repaint(); + } + + @Override + public void deactivateFigure() { + if (foregroundColor != null) + foregroundColor.dispose(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ButtonFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ButtonFigure.java index 1f7602a791c16a1e62669406ef4f58d82b98615d..bc93d479ed950ae32c85284325fbcf6a33af51bf 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ButtonFigure.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ButtonFigure.java @@ -1,89 +1,89 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.figure; - -import org.eclipse.draw2d.ButtonBorder; -import org.eclipse.draw2d.ColorConstants; -import org.eclipse.draw2d.Graphics; -import org.eclipse.draw2d.Label; -import org.eclipse.draw2d.StackLayout; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - -public class ButtonFigure extends AbstractBMotionFigure { - - private Label txtLabel; - private Color backgroundColor; - private Color foregroundColor; - - public ButtonFigure() { - setLayoutManager(new StackLayout()); - txtLabel = new Label("Click"); - add(txtLabel); - setOpaque(true); - setBorder(new ButtonBorder()); - } - - public void setText(String text) { - txtLabel.setText(text); - } - - public void setBackgroundColor(RGB rgb) { - if (backgroundColor != null) - backgroundColor.dispose(); - backgroundColor = new Color(Display.getDefault(), rgb); - setBackgroundColor(backgroundColor); - } - - public void setTextColor(RGB rgb) { - if (foregroundColor != null) - foregroundColor.dispose(); - foregroundColor = new Color(Display.getDefault(), rgb); - setForegroundColor(foregroundColor); - } - - public void setBtEnabled(Boolean bool) { - txtLabel.setEnabled(bool); - repaint(); - } - - /* - * (non-Javadoc) - * - * @see de.bmotionstudio.gef.editor.figure.IBMotionFigure#deactivateFigure() - */ - @Override - public void deactivateFigure() { - if (backgroundColor != null) - backgroundColor.dispose(); - if (foregroundColor != null) - foregroundColor.dispose(); - } - - @Override - protected void paintBorder(Graphics graphics) { - super.paintBorder(graphics); - if (hasFocus()) { - graphics.setForegroundColor(ColorConstants.black); - graphics.setBackgroundColor(ColorConstants.white); - Rectangle area = getClientArea(); - graphics.drawFocus(area.x, area.y, area.width, area.height); - } - } - - @Override - protected void paintClientArea(Graphics graphics) { - graphics.translate(1, 1); - graphics.pushState(); - super.paintClientArea(graphics); - graphics.popState(); - graphics.translate(-1, -1); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.draw2d.ButtonBorder; +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.Label; +import org.eclipse.draw2d.StackLayout; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +public class ButtonFigure extends AbstractBMotionFigure { + + private Label txtLabel; + private Color backgroundColor; + private Color foregroundColor; + + public ButtonFigure() { + setLayoutManager(new StackLayout()); + txtLabel = new Label("Click"); + add(txtLabel); + setOpaque(true); + setBorder(new ButtonBorder()); + } + + public void setText(String text) { + txtLabel.setText(text); + } + + public void setBackgroundColor(RGB rgb) { + if (backgroundColor != null) + backgroundColor.dispose(); + backgroundColor = new Color(Display.getDefault(), rgb); + setBackgroundColor(backgroundColor); + } + + public void setTextColor(RGB rgb) { + if (foregroundColor != null) + foregroundColor.dispose(); + foregroundColor = new Color(Display.getDefault(), rgb); + setForegroundColor(foregroundColor); + } + + public void setBtEnabled(Boolean bool) { + txtLabel.setEnabled(bool); + repaint(); + } + + /* + * (non-Javadoc) + * + * @see de.bmotionstudio.gef.editor.figure.IBMotionFigure#deactivateFigure() + */ + @Override + public void deactivateFigure() { + if (backgroundColor != null) + backgroundColor.dispose(); + if (foregroundColor != null) + foregroundColor.dispose(); + } + + @Override + protected void paintBorder(Graphics graphics) { + super.paintBorder(graphics); + if (hasFocus()) { + graphics.setForegroundColor(ColorConstants.black); + graphics.setBackgroundColor(ColorConstants.white); + Rectangle area = getClientArea(); + graphics.drawFocus(area.x, area.y, area.width, area.height); + } + } + + @Override + protected void paintClientArea(Graphics graphics) { + graphics.translate(1, 1); + graphics.pushState(); + super.paintClientArea(graphics); + graphics.popState(); + graphics.translate(-1, -1); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/CanisterFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/CanisterFigure.java deleted file mode 100644 index 248ff6825d76105b27f27a8bd1a7f5d0a1fc5819..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/CanisterFigure.java +++ /dev/null @@ -1,190 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.figure; - -import org.eclipse.draw2d.BorderLayout; -import org.eclipse.draw2d.ColorConstants; -import org.eclipse.draw2d.Figure; -import org.eclipse.draw2d.Graphics; -import org.eclipse.draw2d.Label; -import org.eclipse.draw2d.PositionConstants; -import org.eclipse.draw2d.RectangleFigure; -import org.eclipse.draw2d.XYLayout; -import org.eclipse.draw2d.geometry.Point; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.PaletteData; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - -public class CanisterFigure extends AbstractBMotionFigure { - - private RectangleFigure axisRect; - private Figure axisFigure; - private RectangleFigure fillRect; - private Figure fillFigure; - - private Image layerImage; - private ImageData imageData; - - private int fill_height; - private double positions; - private int show_pos; - - private Boolean showMeasure; - - public CanisterFigure() { - - XYLayout layout = new XYLayout(); - setLayoutManager(layout); - - PaletteData palette = new PaletteData( - new RGB[] { ColorConstants.white.getRGB() }); - imageData = new ImageData(1, 1, 8, palette); - imageData.alpha = 255; - imageData.setPixel(0, 0, 0); - layerImage = new Image(null, imageData); - - axisFigure = new Figure(); - axisFigure.setLocation(new Point(0, 0)); - axisFigure.setLayoutManager(new XYLayout()); - add(axisFigure); - - fillFigure = new Figure(); - fillFigure.setLayoutManager(new BorderLayout()); - add(fillFigure); - - fillRect = new RectangleFigure(); - fillRect.setOutline(false); - fillFigure.add(fillRect); - fillFigure.setConstraint(fillRect, BorderLayout.BOTTOM); - - setOpaque(true); - - } - - public void setLayout(Rectangle rect) { - - getParent().setConstraint(this, rect); - - // Set the right size and position of the y-axis - axisFigure.removeAll(); - - int fillPos = 0; - - double one_pos = Double.valueOf(rect.height) / positions; - - if (showMeasure) { - - axisFigure.setSize(100, rect.height); - - axisRect = new RectangleFigure(); - axisFigure.add(axisRect); - axisRect.setBackgroundColor(ColorConstants.black); - axisFigure.setConstraint(axisRect, new Rectangle(14, 0, 1, - rect.height)); - - RectangleFigure line; - Label lb; - - for (int i = 0; i <= positions; i = i + show_pos) { - - lb = new Label(); - axisFigure.add(lb); - lb.setText(String.valueOf((int) (positions - i))); - lb.setBackgroundColor(ColorConstants.red); - lb.setTextAlignment(PositionConstants.LEFT); - - if (i == 0) { - axisFigure.setConstraint(lb, new Rectangle(18, - (int) (i * one_pos), 30, 10)); - } else if (i == positions) { - axisFigure.setConstraint(lb, new Rectangle(18, - (int) (i * one_pos) - 10, 30, 10)); - } else { - axisFigure.setConstraint(lb, new Rectangle(18, - (int) (i * one_pos) - 5, 30, 10)); - } - - line = new RectangleFigure(); - line.setBackgroundColor(ColorConstants.black); - line.setOutline(false); - axisFigure.add(line); - - if (i == positions) { - axisFigure.setConstraint(line, new Rectangle(10, - (int) (i * one_pos) - 1, 10, 1)); - } else { - axisFigure.setConstraint(line, new Rectangle(10, - (int) (i * one_pos), 10, 1)); - } - - } - - fillPos = 60; - - } - - // Set right size of the fill figure - setConstraint(fillFigure, new Rectangle(fillPos, 0, rect.width - - fillPos, rect.height)); - - double tmp = one_pos * (positions - Double.valueOf(fill_height)); - int f_fill_height = (int) tmp; - fillRect.setSize(rect.width - fillPos, rect.height - f_fill_height); - fillFigure.setConstraint(fillRect, BorderLayout.BOTTOM); - fillFigure.repaint(); - - } - - public void setAlpha(int alpha) { - imageData.alpha = alpha; - if (layerImage != null && !layerImage.isDisposed()) { - layerImage.dispose(); - } - layerImage = new Image(null, imageData); - repaint(); - } - - public void paintFigure(Graphics g) { - Rectangle rectangle = getClientArea(); - g.drawImage(layerImage, new Rectangle(layerImage.getBounds()), - rectangle); - } - - public void setFillColor(RGB rgb) { - fillRect.setBackgroundColor(new Color(Display.getDefault(), rgb)); - } - - public void setFillHeight(Integer height) { - this.fill_height = height; - } - - public void setMaxPos(Integer maxPos) { - this.positions = maxPos; - } - - public void setInterval(Integer interval) { - this.show_pos = interval; - } - - public void setMeasure(Boolean bol) { - this.showMeasure = bol; - } - - public void setBackgroundColor(RGB rgb) { - imageData.palette.colors[0] = rgb; - if (layerImage != null && !layerImage.isDisposed()) { - layerImage.dispose(); - } - layerImage = new Image(null, imageData); - repaint(); - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/CompositeFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/CompositeFigure.java index 6f6414e7bf4ac385d707586ab4e6fb5e3fb31f14..3dd9ed8e42ad1ce137364e0b2564336c5c9f2434 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/CompositeFigure.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/CompositeFigure.java @@ -1,145 +1,145 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.figure; - -import org.eclipse.draw2d.ColorConstants; -import org.eclipse.draw2d.Graphics; -import org.eclipse.draw2d.XYLayout; -import org.eclipse.draw2d.geometry.Dimension; -import org.eclipse.draw2d.geometry.Insets; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.PaletteData; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - -public class CompositeFigure extends AbstractBMotionFigure { - - protected Image layerImage; - private ImageData imageData; - private Dimension size = new Dimension(); - private boolean hasImage; - - public CompositeFigure() { - XYLayout layout = new XYLayout(); - setLayoutManager(layout); - PaletteData palette = new PaletteData( - new RGB[] { ColorConstants.white.getRGB() }); - imageData = new ImageData(1, 1, 8, palette); - imageData.alpha = 255; - imageData.setPixel(0, 0, 0); - layerImage = new Image(Display.getDefault(), imageData); - hasImage = false; - setOpaque(true); - } - - // public void setAlpha(int alpha) { - // imageData.alpha = alpha; - // if (!hasImage) { - // if (layerImage != null && !layerImage.isDisposed()) { - // layerImage.dispose(); - // } - // layerImage = new Image(Display.getDefault(), imageData); - // repaint(); - // } - // } - - public void setBackgroundColor(RGB rgb) { - imageData.palette.colors[0] = rgb; - if (!hasImage) { - if (layerImage != null && !layerImage.isDisposed()) { - layerImage.dispose(); - } - layerImage = new Image(Display.getDefault(), imageData); - repaint(); - } - } - - public void paintFigure(Graphics g) { - if (getImage() == null) - return; - Rectangle rectangle = getClientArea(); - if (hasImage) { - int aWidth = rectangle.width; - int aHeight = rectangle.height; - int countX = aWidth / getImage().getBounds().width; - int countY = aHeight / getImage().getBounds().height; - for (int i = 0; i <= countX; i++) { - for (int z = 0; z <= countY; z++) { - g.drawImage(getImage(), getBounds().x + i - * getImage().getBounds().width, getBounds().y + z - * getImage().getBounds().height); - } - } - } else { - g.drawImage(getImage(), 0, 0, 1, 1, rectangle.x, rectangle.y, - rectangle.width, rectangle.height); - } - } - - /** - * Sets the Image that this ImageFigure displays. - * <p> - * IMPORTANT: Note that it is the client's responsibility to dispose the - * given image. - * - * @param image - * The Image to be displayed. It can be <code>null</code>. - */ - public void setImage(Image image) { - if (layerImage != null) - layerImage.dispose(); - layerImage = image; - if (layerImage != null) { - size = new Rectangle(image.getBounds()).getSize(); - hasImage = true; - } else { - layerImage = new Image(null, imageData); - size = new Dimension(); - hasImage = false; - } - revalidate(); - repaint(); - } - - /** - * @return The Image that this Figure displays - */ - public Image getImage() { - return layerImage; - } - - /** - * Calculates the necessary size to display the Image within the figure's - * client area. - * - * @see org.eclipse.draw2d.Figure#getPreferredSize(int, int) - */ - public Dimension getPreferredSize(int wHint, int hHint) { - if (getInsets() == NO_INSETS) - return size; - Insets i = getInsets(); - return size.getExpanded(i.getWidth(), i.getHeight()); - } - - public void setLayout(Rectangle rect) { - getParent().setConstraint(this, rect); - } - - /* - * (non-Javadoc) - * - * @see de.bmotionstudio.gef.editor.figure.IBMotionFigure#deactivateFigure() - */ - @Override - public void deactivateFigure() { - if (layerImage != null) - layerImage.dispose(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.XYLayout; +import org.eclipse.draw2d.geometry.Dimension; +import org.eclipse.draw2d.geometry.Insets; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.graphics.PaletteData; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +public class CompositeFigure extends AbstractBMotionFigure { + + protected Image layerImage; + private ImageData imageData; + private Dimension size = new Dimension(); + private boolean hasImage; + + public CompositeFigure() { + XYLayout layout = new XYLayout(); + setLayoutManager(layout); + PaletteData palette = new PaletteData( + new RGB[] { ColorConstants.white.getRGB() }); + imageData = new ImageData(1, 1, 8, palette); + imageData.alpha = 255; + imageData.setPixel(0, 0, 0); + layerImage = new Image(Display.getDefault(), imageData); + hasImage = false; + setOpaque(true); + } + + // public void setAlpha(int alpha) { + // imageData.alpha = alpha; + // if (!hasImage) { + // if (layerImage != null && !layerImage.isDisposed()) { + // layerImage.dispose(); + // } + // layerImage = new Image(Display.getDefault(), imageData); + // repaint(); + // } + // } + + public void setBackgroundColor(RGB rgb) { + imageData.palette.colors[0] = rgb; + if (!hasImage) { + if (layerImage != null && !layerImage.isDisposed()) { + layerImage.dispose(); + } + layerImage = new Image(Display.getDefault(), imageData); + repaint(); + } + } + + public void paintFigure(Graphics g) { + if (getImage() == null) + return; + Rectangle rectangle = getClientArea(); + if (hasImage) { + int aWidth = rectangle.width; + int aHeight = rectangle.height; + int countX = aWidth / getImage().getBounds().width; + int countY = aHeight / getImage().getBounds().height; + for (int i = 0; i <= countX; i++) { + for (int z = 0; z <= countY; z++) { + g.drawImage(getImage(), getBounds().x + i + * getImage().getBounds().width, getBounds().y + z + * getImage().getBounds().height); + } + } + } else { + g.drawImage(getImage(), 0, 0, 1, 1, rectangle.x, rectangle.y, + rectangle.width, rectangle.height); + } + } + + /** + * Sets the Image that this ImageFigure displays. + * <p> + * IMPORTANT: Note that it is the client's responsibility to dispose the + * given image. + * + * @param image + * The Image to be displayed. It can be <code>null</code>. + */ + public void setImage(Image image) { + if (layerImage != null) + layerImage.dispose(); + layerImage = image; + if (layerImage != null) { + size = new Rectangle(image.getBounds()).getSize(); + hasImage = true; + } else { + layerImage = new Image(null, imageData); + size = new Dimension(); + hasImage = false; + } + revalidate(); + repaint(); + } + + /** + * @return The Image that this Figure displays + */ + public Image getImage() { + return layerImage; + } + + /** + * Calculates the necessary size to display the Image within the figure's + * client area. + * + * @see org.eclipse.draw2d.Figure#getPreferredSize(int, int) + */ + public Dimension getPreferredSize(int wHint, int hHint) { + if (getInsets() == NO_INSETS) + return size; + Insets i = getInsets(); + return size.getExpanded(i.getWidth(), i.getHeight()); + } + + public void setLayout(Rectangle rect) { + getParent().setConstraint(this, rect); + } + + /* + * (non-Javadoc) + * + * @see de.bmotionstudio.gef.editor.figure.IBMotionFigure#deactivateFigure() + */ + @Override + public void deactivateFigure() { + if (layerImage != null) + layerImage.dispose(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ShapeFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ShapeFigure.java index 9986a37d507bb38569b09240da5809fc5e997c07..6d647b3b55834a52d4ab578cbab7fe4cdd4bf469 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ShapeFigure.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/ShapeFigure.java @@ -1,430 +1,434 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.figure; - -import org.eclipse.draw2d.ColorConstants; -import org.eclipse.draw2d.Figure; -import org.eclipse.draw2d.Graphics; -import org.eclipse.draw2d.IFigure; -import org.eclipse.draw2d.Orientable; -import org.eclipse.draw2d.PositionConstants; -import org.eclipse.draw2d.Shape; -import org.eclipse.draw2d.StackLayout; -import org.eclipse.draw2d.geometry.Point; -import org.eclipse.draw2d.geometry.PointList; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.PaletteData; -import org.eclipse.swt.graphics.Pattern; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; - -public class ShapeFigure extends AbstractBMotionFigure { - - private int alpha; - private int outlineAlpha; - private int shape; - private Integer fillType; - private Image img; - private Color foregroundColor; - private Color backgroundColor; - - private Image patternImage; - private Image shadedImage; - private Pattern pattern; - private Pattern shadedPattern; - private Pattern gradientPattern; - - private final Color white = Display.getDefault().getSystemColor( - SWT.COLOR_WHITE); - - private static final int FILL_TYPE_FILLED = 0; - private static final int FILL_TYPE_EMPTY = 1; - private static final int FILL_TYPE_SHADED = 2; - private static final int FILL_TYPE_GRADIENT = 3; - - private static final int SHAPE_TYPE_RECTANGLE = 0; - private static final int SHAPE_TYPE_OVAL = 1; - private static final int SHAPE_TYPE_TRIANGLE = 2; - private static final int SHAPE_TYPE_DIAMOND = 3; - - /** - * The direction this triangle will face. Possible values are - * {@link PositionConstants#NORTH}, {@link PositionConstants#SOUTH}, - * {@link PositionConstants#EAST} and {@link PositionConstants#WEST}. - */ - protected int direction = PositionConstants.NORTH; - /** - * The orientation of this triangle. Possible values are - * {@link Orientable#VERTICAL} and {@link Orientable#HORIZONTAL}. - */ - protected int orientation = PositionConstants.VERTICAL; - - /** The points of the triangle. */ - protected PointList triangle = new PointList(3); - - /** The points of the diamond. */ - protected PointList diamond = new PointList(4); - - private Shape shapeFigure; - - public ShapeFigure() { - setLayoutManager(new StackLayout()); - shapeFigure = new Shape() { - - @Override - protected void fillShape(Graphics g) { - - g.setAlpha(alpha); - g.setAntialias(SWT.ON); - - if (fillType == FILL_TYPE_GRADIENT) { // Gradient fill type - - if (gradientPattern != null) - gradientPattern.dispose(); - gradientPattern = new Pattern(Display.getDefault(), - this.getBounds().x, this.getBounds().y, - this.getBounds().x + this.getBounds().width, - this.getBounds().y + this.getBounds().height, - this.getBackgroundColor(), - this.getForegroundColor()); - g.setBackgroundPattern(gradientPattern); - - } else if (fillType == FILL_TYPE_SHADED) { // Shaded fill type - - Color black = this.getForegroundColor(); - PaletteData palette = new PaletteData(new RGB[] { - white.getRGB(), black.getRGB() }); - ImageData sourceData = new ImageData(11, 11, 1, palette); - for (int i = 0; i < 11; i++) { - sourceData.setPixel(6, i, 1); - } - if (shadedImage != null) - shadedImage.dispose(); - shadedImage = new Image(Display.getDefault(), sourceData); - - if (shadedPattern != null) - shadedPattern.dispose(); - shadedPattern = new Pattern(Display.getDefault(), - shadedImage); - g.setBackgroundPattern(shadedPattern); - - } else if (fillType == FILL_TYPE_FILLED && img != null) { - - double zoom = 1; - if (BMotionEditorPlugin.getActiveEditor() != null) - zoom = BMotionEditorPlugin.getActiveEditor() - .getZoomFactor(); - - ImageData d = img.getImageData().scaledTo( - (int) (img.getBounds().width * zoom), - (int) (img.getBounds().height * zoom)); - - if (patternImage != null) - patternImage.dispose(); - - patternImage = new Image(Display.getDefault(), d); - - if (pattern != null) - pattern.dispose(); - - pattern = new Pattern(Display.getDefault(), patternImage); - - g.setBackgroundPattern(pattern); - - } else if (fillType == FILL_TYPE_FILLED) { - g.setBackgroundColor(this.getBackgroundColor()); - } - - switch (shape) { - case SHAPE_TYPE_RECTANGLE: - g.fillRectangle(this.getBounds()); - break; - case SHAPE_TYPE_OVAL: - g.fillOval(this.getBounds()); - break; - case SHAPE_TYPE_TRIANGLE: - g.fillPolygon(triangle); - break; - case SHAPE_TYPE_DIAMOND: - g.fillPolygon(diamond); - break; - default: - break; - } - - } - - @Override - protected void outlineShape(Graphics g) { - - g.setAlpha(outlineAlpha); - g.setAntialias(SWT.ON); - g.setForegroundColor(this.getForegroundColor()); - - float lineInset = Math.max(1.0f, getLineWidthFloat()) / 2.0f; - int inset1 = (int) Math.floor(lineInset); - int inset2 = (int) Math.ceil(lineInset); - - Rectangle r = Rectangle.SINGLETON.setBounds(this.getBounds()); - r.x += inset1; - r.y += inset1; - r.width -= inset1 + inset2; - r.height -= inset1 + inset2; - - switch (shape) { - case SHAPE_TYPE_RECTANGLE: - g.drawRectangle(r); - break; - case SHAPE_TYPE_OVAL: - g.drawOval(r); - break; - case SHAPE_TYPE_TRIANGLE: - g.drawPolygon(triangle); - break; - case SHAPE_TYPE_DIAMOND: - g.drawPolygon(diamond); - break; - default: - break; - } - - } - - }; - shapeFigure.setForegroundColor(ColorConstants.blue); - // setOpaque(true); - add(shapeFigure); - } - - /** - * @see Orientable#setDirection(int) - */ - public void setDirection(int value) { - if ((value & (PositionConstants.NORTH | PositionConstants.SOUTH)) != 0) - orientation = PositionConstants.VERTICAL; - else - orientation = PositionConstants.HORIZONTAL; - direction = value; - revalidate(); - repaint(); - } - - /** - * @see Orientable#setOrientation(int) - */ - public void setOrientation(int value) { - if (orientation == PositionConstants.VERTICAL - && value == PositionConstants.HORIZONTAL) { - if (direction == PositionConstants.NORTH) - setDirection(PositionConstants.WEST); - else - setDirection(PositionConstants.EAST); - } - if (orientation == PositionConstants.HORIZONTAL - && value == PositionConstants.VERTICAL) { - if (direction == PositionConstants.WEST) - setDirection(PositionConstants.NORTH); - else - setDirection(PositionConstants.SOUTH); - } - } - - /** - * @see IFigure#validate() - */ - public void validate() { - - super.validate(); - - Rectangle r = new Rectangle(); - r.setBounds(getBounds()); - r.crop(getInsets()); - r.resize(-1, -1); - - switch (shape) { - - case SHAPE_TYPE_TRIANGLE: - - int size; - switch (direction - & (PositionConstants.NORTH | PositionConstants.SOUTH)) { - case 0: // East or west. - size = Math.min(r.height / 2, r.width); - r.x += (r.width - size) / 2; - break; - default: // North or south - size = Math.min(r.height, r.width / 2); - r.y += (r.height - size) / 2; - break; - } - - size = Math.max(size, 1); // Size cannot be negative - - Point head, - p2, - p3; - - switch (direction) { - case PositionConstants.NORTH: - head = new Point(r.x + r.width / 2, r.y); - p2 = new Point(head.x - size, head.y + size); - p3 = new Point(head.x + size, head.y + size); - break; - case PositionConstants.SOUTH: - head = new Point(r.x + r.width / 2, r.y + size); - p2 = new Point(head.x - size, head.y - size); - p3 = new Point(head.x + size, head.y - size); - break; - case PositionConstants.WEST: - head = new Point(r.x, r.y + r.height / 2); - p2 = new Point(head.x + size, head.y - size); - p3 = new Point(head.x + size, head.y + size); - break; - default: - head = new Point(r.x + size, r.y + r.height / 2); - p2 = new Point(head.x - size, head.y - size); - p3 = new Point(head.x - size, head.y + size); - - } - triangle.removeAllPoints(); - triangle.addPoint(head); - triangle.addPoint(p2); - triangle.addPoint(p3); - - break; - - case SHAPE_TYPE_DIAMOND: - - Point pt1 = new Point(r.x + r.width / 2, r.y); - Point pt2 = new Point(r.x + r.width, r.y + r.height / 2); - Point pt3 = new Point(r.x + r.width / 2, r.y + r.height); - Point pt4 = new Point(r.x, r.y + r.height / 2); - - diamond.removeAllPoints(); - diamond.addPoint(pt1); - diamond.addPoint(pt2); - diamond.addPoint(pt3); - diamond.addPoint(pt4); - - break; - - default: - break; - } - - } - - /** - * @see Figure#primTranslate(int, int) - */ - public void primTranslate(int dx, int dy) { - super.primTranslate(dx, dy); - switch (shape) { - case SHAPE_TYPE_TRIANGLE: - triangle.translate(dx, dy); - break; - case SHAPE_TYPE_DIAMOND: - diamond.translate(dx, dy); - break; - default: - break; - } - } - - public void setBackgroundColor(RGB rgb) { - if (backgroundColor != null) - backgroundColor.dispose(); - backgroundColor = new Color(Display.getDefault(), rgb); - shapeFigure.setBackgroundColor(backgroundColor); - } - - public void setForegroundColor(RGB rgb) { - if (foregroundColor != null) - foregroundColor.dispose(); - foregroundColor = new Color(Display.getDefault(), rgb); - shapeFigure.setForegroundColor(foregroundColor); - shapeFigure.repaint(); - } - - public void setLayout(Rectangle rect) { - getParent().setConstraint(this, rect); - } - - public void setShape(int shape) { - this.shape = shape; - revalidate(); - shapeFigure.repaint(); - } - - public int getShape() { - return shape; - } - - public Integer getAlpha() { - return alpha; - } - - public void setAlpha(Integer alpha) { - this.alpha = alpha; - repaint(); - } - - public Integer getOutlineAlpha() { - return outlineAlpha; - } - - public void setOutlineAlpha(Integer outlineAlpha) { - this.outlineAlpha = outlineAlpha; - repaint(); - } - - public void setFillType(Integer fillType) { - if (fillType == FILL_TYPE_EMPTY) - shapeFigure.setFill(false); - else - shapeFigure.setFill(true); - this.fillType = fillType; - repaint(); - } - - public void setImage(Image img) { - this.img = img; - repaint(); - } - - /* - * (non-Javadoc) - * - * @see de.bmotionstudio.gef.editor.figure.IBMotionFigure#deactivateFigure() - */ - @Override - public void deactivateFigure() { - if (img != null) - img.dispose(); - if (foregroundColor != null) - foregroundColor.dispose(); - if (backgroundColor != null) - backgroundColor.dispose(); - if (patternImage != null) - patternImage.dispose(); - if (shadedImage != null) - shadedImage.dispose(); - if (pattern != null) - pattern.dispose(); - if (shadedPattern != null) - shadedPattern.dispose(); - if (gradientPattern != null) - gradientPattern.dispose(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.draw2d.Figure; +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.Orientable; +import org.eclipse.draw2d.PositionConstants; +import org.eclipse.draw2d.Shape; +import org.eclipse.draw2d.StackLayout; +import org.eclipse.draw2d.geometry.Point; +import org.eclipse.draw2d.geometry.PointList; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.graphics.PaletteData; +import org.eclipse.swt.graphics.Pattern; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; + +public class ShapeFigure extends AbstractBMotionFigure { + + private int alpha; + private int outlineAlpha; + private int shape; + private Integer fillType; + private Image img; + private Color foregroundColor; + private Color backgroundColor; + + private Image patternImage; + private Image shadedImage; + private Pattern pattern; + private Pattern shadedPattern; + private Pattern gradientPattern; + + private final Color white = Display.getDefault().getSystemColor( + SWT.COLOR_WHITE); + + private static final int FILL_TYPE_FILLED = 0; + private static final int FILL_TYPE_EMPTY = 1; + private static final int FILL_TYPE_SHADED = 2; + private static final int FILL_TYPE_GRADIENT = 3; + + private static final int SHAPE_TYPE_RECTANGLE = 0; + private static final int SHAPE_TYPE_OVAL = 1; + private static final int SHAPE_TYPE_TRIANGLE = 2; + private static final int SHAPE_TYPE_DIAMOND = 3; + + /** + * The direction this triangle will face. Possible values are + * {@link PositionConstants#NORTH}, {@link PositionConstants#SOUTH}, + * {@link PositionConstants#EAST} and {@link PositionConstants#WEST}. + */ + protected int direction = PositionConstants.NORTH; + /** + * The orientation of this triangle. Possible values are + * {@link Orientable#VERTICAL} and {@link Orientable#HORIZONTAL}. + */ + protected int orientation = PositionConstants.VERTICAL; + + /** The points of the triangle. */ + protected PointList triangle = new PointList(3); + + /** The points of the diamond. */ + protected PointList diamond = new PointList(4); + + private Shape shapeFigure; + + public ShapeFigure() { + setLayoutManager(new StackLayout()); + shapeFigure = new Shape() { + + @Override + protected void fillShape(Graphics g) { + + g.setAlpha(alpha); + g.setAntialias(SWT.ON); + + if (fillType == FILL_TYPE_GRADIENT) { // Gradient fill type + + if (gradientPattern != null) + gradientPattern.dispose(); + gradientPattern = new Pattern(Display.getDefault(), + this.getBounds().x, this.getBounds().y, + this.getBounds().x + this.getBounds().width, + this.getBounds().y + this.getBounds().height, + this.getBackgroundColor(), + this.getForegroundColor()); + g.setBackgroundPattern(gradientPattern); + + } else if (fillType == FILL_TYPE_SHADED) { // Shaded fill type + + Color black = this.getForegroundColor(); + PaletteData palette = new PaletteData(new RGB[] { + white.getRGB(), black.getRGB() }); + ImageData sourceData = new ImageData(11, 11, 1, palette); + for (int i = 0; i < 11; i++) { + sourceData.setPixel(6, i, 1); + } + if (shadedImage != null) + shadedImage.dispose(); + shadedImage = new Image(Display.getDefault(), sourceData); + + if (shadedPattern != null) + shadedPattern.dispose(); + shadedPattern = new Pattern(Display.getDefault(), + shadedImage); + g.setBackgroundPattern(shadedPattern); + + } else if (fillType == FILL_TYPE_FILLED && img != null) { + + double zoom = 1; + if (BMotionEditorPlugin.getActiveEditor() != null) + zoom = BMotionEditorPlugin.getActiveEditor() + .getZoomFactor(); + + ImageData d = img.getImageData().scaledTo( + (int) (img.getBounds().width * zoom), + (int) (img.getBounds().height * zoom)); + + if (patternImage != null) + patternImage.dispose(); + + patternImage = new Image(Display.getDefault(), d); + + if (pattern != null) + pattern.dispose(); + + pattern = new Pattern(Display.getDefault(), patternImage); + + g.setBackgroundPattern(pattern); + + } else if (fillType == FILL_TYPE_FILLED) { + g.setBackgroundColor(this.getBackgroundColor()); + } + + switch (shape) { + case SHAPE_TYPE_RECTANGLE: + g.fillRectangle(this.getBounds()); + break; + case SHAPE_TYPE_OVAL: + g.fillOval(this.getBounds().x, this.getBounds().y, + this.getBounds().width - 3, + this.getBounds().height - 3); + break; + case SHAPE_TYPE_TRIANGLE: + g.fillPolygon(triangle); + break; + case SHAPE_TYPE_DIAMOND: + g.fillPolygon(diamond); + break; + default: + break; + } + + } + + @Override + protected void outlineShape(Graphics g) { + + g.setAlpha(outlineAlpha); + g.setAntialias(SWT.ON); + g.setForegroundColor(this.getForegroundColor()); + + float lineInset = Math.max(1.0f, getLineWidthFloat()) / 2.0f; + + int inset1 = (int) Math.floor(lineInset); + int inset2 = (int) Math.ceil(lineInset); + + Rectangle r = Rectangle.SINGLETON.setBounds(this.getBounds()); + r.x += inset1; + r.y += inset1; + r.width -= inset1 + inset2; + r.height -= inset1 + inset2; + + switch (shape) { + case SHAPE_TYPE_RECTANGLE: + g.drawRectangle(r); + break; + case SHAPE_TYPE_OVAL: + r.width -= 2; + r.height -= 2; + g.drawOval(r); + break; + case SHAPE_TYPE_TRIANGLE: + g.drawPolygon(triangle); + break; + case SHAPE_TYPE_DIAMOND: + g.drawPolygon(diamond); + break; + default: + break; + } + + } + + }; + // shapeFigure.setForegroundColor(ColorConstants.blue); + // setOpaque(true); + add(shapeFigure); + } + + /** + * @see Orientable#setDirection(int) + */ + public void setDirection(int value) { + if ((value & (PositionConstants.NORTH | PositionConstants.SOUTH)) != 0) + orientation = PositionConstants.VERTICAL; + else + orientation = PositionConstants.HORIZONTAL; + direction = value; + revalidate(); + repaint(); + } + + /** + * @see Orientable#setOrientation(int) + */ + public void setOrientation(int value) { + if (orientation == PositionConstants.VERTICAL + && value == PositionConstants.HORIZONTAL) { + if (direction == PositionConstants.NORTH) + setDirection(PositionConstants.WEST); + else + setDirection(PositionConstants.EAST); + } + if (orientation == PositionConstants.HORIZONTAL + && value == PositionConstants.VERTICAL) { + if (direction == PositionConstants.WEST) + setDirection(PositionConstants.NORTH); + else + setDirection(PositionConstants.SOUTH); + } + } + + /** + * @see IFigure#validate() + */ + public void validate() { + + super.validate(); + + Rectangle r = new Rectangle(); + r.setBounds(getBounds()); + r.crop(getInsets()); + r.resize(-1, -1); + + switch (shape) { + + case SHAPE_TYPE_TRIANGLE: + + int size; + switch (direction + & (PositionConstants.NORTH | PositionConstants.SOUTH)) { + case 0: // East or west. + size = Math.min(r.height / 2, r.width); + r.x += (r.width - size) / 2; + break; + default: // North or south + size = Math.min(r.height, r.width / 2); + r.y += (r.height - size) / 2; + break; + } + + size = Math.max(size, 1); // Size cannot be negative + + Point head, + p2, + p3; + + switch (direction) { + case PositionConstants.NORTH: + head = new Point(r.x + r.width / 2, r.y); + p2 = new Point(head.x - size, head.y + size); + p3 = new Point(head.x + size, head.y + size); + break; + case PositionConstants.SOUTH: + head = new Point(r.x + r.width / 2, r.y + size); + p2 = new Point(head.x - size, head.y - size); + p3 = new Point(head.x + size, head.y - size); + break; + case PositionConstants.WEST: + head = new Point(r.x, r.y + r.height / 2); + p2 = new Point(head.x + size, head.y - size); + p3 = new Point(head.x + size, head.y + size); + break; + default: + head = new Point(r.x + size, r.y + r.height / 2); + p2 = new Point(head.x - size, head.y - size); + p3 = new Point(head.x - size, head.y + size); + + } + triangle.removeAllPoints(); + triangle.addPoint(head); + triangle.addPoint(p2); + triangle.addPoint(p3); + + break; + + case SHAPE_TYPE_DIAMOND: + + Point pt1 = new Point(r.x + r.width / 2, r.y); + Point pt2 = new Point(r.x + r.width, r.y + r.height / 2); + Point pt3 = new Point(r.x + r.width / 2, r.y + r.height); + Point pt4 = new Point(r.x, r.y + r.height / 2); + + diamond.removeAllPoints(); + diamond.addPoint(pt1); + diamond.addPoint(pt2); + diamond.addPoint(pt3); + diamond.addPoint(pt4); + + break; + + default: + break; + } + + } + + /** + * @see Figure#primTranslate(int, int) + */ + public void primTranslate(int dx, int dy) { + super.primTranslate(dx, dy); + switch (shape) { + case SHAPE_TYPE_TRIANGLE: + triangle.translate(dx, dy); + break; + case SHAPE_TYPE_DIAMOND: + diamond.translate(dx, dy); + break; + default: + break; + } + } + + public void setBackgroundColor(RGB rgb) { + if (backgroundColor != null) + backgroundColor.dispose(); + backgroundColor = new Color(Display.getDefault(), rgb); + shapeFigure.setBackgroundColor(backgroundColor); + } + + public void setForegroundColor(RGB rgb) { + if (foregroundColor != null) + foregroundColor.dispose(); + foregroundColor = new Color(Display.getDefault(), rgb); + shapeFigure.setForegroundColor(foregroundColor); + shapeFigure.repaint(); + } + + public void setLayout(Rectangle rect) { + getParent().setConstraint(this, rect); + } + + public void setShape(int shape) { + this.shape = shape; + revalidate(); + shapeFigure.repaint(); + } + + public int getShape() { + return shape; + } + + public Integer getAlpha() { + return alpha; + } + + public void setAlpha(Integer alpha) { + this.alpha = alpha; + repaint(); + } + + public Integer getOutlineAlpha() { + return outlineAlpha; + } + + public void setOutlineAlpha(Integer outlineAlpha) { + this.outlineAlpha = outlineAlpha; + repaint(); + } + + public void setFillType(Integer fillType) { + if (fillType == FILL_TYPE_EMPTY) + shapeFigure.setFill(false); + else + shapeFigure.setFill(true); + this.fillType = fillType; + repaint(); + } + + public void setImage(Image img) { + this.img = img; + repaint(); + } + + /* + * (non-Javadoc) + * + * @see de.bmotionstudio.gef.editor.figure.IBMotionFigure#deactivateFigure() + */ + @Override + public void deactivateFigure() { + if (img != null) + img.dispose(); + if (foregroundColor != null) + foregroundColor.dispose(); + if (backgroundColor != null) + backgroundColor.dispose(); + if (patternImage != null) + patternImage.dispose(); + if (shadedImage != null) + shadedImage.dispose(); + if (pattern != null) + pattern.dispose(); + if (shadedPattern != null) + shadedPattern.dispose(); + if (gradientPattern != null) + gradientPattern.dispose(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableCellFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableCellFigure.java new file mode 100644 index 0000000000000000000000000000000000000000..09fa6fa84acfab68cb940adbfe6c51657d82c5dc --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableCellFigure.java @@ -0,0 +1,74 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +public class TableCellFigure extends AbstractTableFigure { + + private String text; + private Color backgroundColor; + private Color textColor; + + public TableCellFigure() { + setOpaque(true); + } + + @Override + protected void paintBorder(Graphics g) { + Rectangle r = getClientArea(); + g.setBackgroundColor(backgroundColor); + g.fillRectangle(r.x, r.y, r.x + r.width, r.y + r.height); + g.setForegroundColor(textColor); + g.drawText(text, r.x + 3, r.y + 3); + Color foregroundColor = getForegroundColor(); + if (foregroundColor != null) + g.setForegroundColor(foregroundColor); + g.drawLine(r.x, r.y, r.x + r.width, r.y); + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + repaint(); + } + + public void setBackgroundColor(RGB rgb) { + if (backgroundColor != null) + backgroundColor.dispose(); + backgroundColor = new Color(Display.getDefault(), rgb); + repaint(); + } + + public void setTextColor(RGB rgb) { + if (textColor != null) + textColor.dispose(); + textColor = new Color(Display.getDefault(), rgb); + repaint(); + } + + @Override + public void deactivateFigure() { + if (backgroundColor != null) + backgroundColor.dispose(); + if (textColor != null) + textColor.dispose(); + super.deactivateFigure(); + } + + public void setFont(String string) { + // TODO Auto-generated method stub + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableColumnFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableColumnFigure.java new file mode 100644 index 0000000000000000000000000000000000000000..e036e5d6863b911b900ce07012635ed3b6ff0715 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableColumnFigure.java @@ -0,0 +1,28 @@ +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.ToolbarLayout; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.swt.graphics.Color; + +public class TableColumnFigure extends AbstractTableFigure { + + public TableColumnFigure() { + ToolbarLayout toolbarLayout = new ToolbarLayout(); + setLayoutManager(toolbarLayout); + setOpaque(true); + } + + @Override + protected void paintBorder(Graphics g) { + Rectangle r = getClientArea(); + Color foregroundColor = getForegroundColor(); + if (foregroundColor != null) + g.setForegroundColor(foregroundColor); + g.drawLine(r.x, r.y, r.x + r.width, r.y); + g.drawLine(r.x, r.y, r.x, r.y + r.height - 1); + g.drawLine(r.x, r.y + r.height - 1, r.x + r.width, r.y + r.height - 1); + super.paintBorder(g); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableFigure.java new file mode 100644 index 0000000000000000000000000000000000000000..fb322781139451c5f90a087cb2513e1eabdfc9bf --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TableFigure.java @@ -0,0 +1,32 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.draw2d.Graphics; +import org.eclipse.draw2d.ToolbarLayout; +import org.eclipse.draw2d.geometry.Rectangle; + +public class TableFigure extends AbstractTableFigure { + + public TableFigure() { + ToolbarLayout toolbarLayout = new ToolbarLayout(); + toolbarLayout.setHorizontal(true); + toolbarLayout.setStretchMinorAxis(false); + setLayoutManager(toolbarLayout); + setOpaque(true); + } + + @Override + protected void paintBorder(Graphics g) { + Rectangle r = getClientArea(); + g.setForegroundColor(getForegroundColor()); + g.drawLine(r.x + r.width - 1, r.y, r.x + r.width - 1, r.y + r.height + - 1); + super.paintBorder(g); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TextFigure.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TextFigure.java index 0c8a51e21e6ab99ff2037ad9bc5b8a33d9466edb..4cbbc7d8a22a7e4e5aa80a94a95f99f82d3cef34 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TextFigure.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/TextFigure.java @@ -1,101 +1,101 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.figure; - -import org.eclipse.draw2d.MarginBorder; -import org.eclipse.draw2d.StackLayout; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.draw2d.text.FlowPage; -import org.eclipse.draw2d.text.ParagraphTextLayout; -import org.eclipse.draw2d.text.TextFlow; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - -public class TextFigure extends AbstractBMotionFigure { - - private TextFlow textFlow; - protected Image layerImage; - private Color foregroundColor; - private Font font; - - public TextFigure() { - setBorder(new MarginBorder(1)); - FlowPage flowPage = new FlowPage(); - textFlow = new TextFlow(); - textFlow.setLayoutManager(new ParagraphTextLayout(textFlow, - ParagraphTextLayout.WORD_WRAP_SOFT)); - flowPage.add(textFlow); - setLayoutManager(new StackLayout()); - add(flowPage); - } - - /** - * Returns the text inside the TextFlow. - * - * @return the text flow inside the text. - */ - public String getText() { - return textFlow.getText(); - } - - /** - * Sets the text of the TextFlow to the given value. - * - * @param newText - * the new text value. - */ - public void setText(String newText) { - textFlow.setText(newText); - } - - public void setTextColor(RGB rgb) { - if (foregroundColor != null) - foregroundColor.dispose(); - foregroundColor = new Color(Display.getDefault(), rgb); - textFlow.setForegroundColor(foregroundColor); - } - - public void setBackgroundVisible(Boolean bol) { - setOpaque(bol); - } - - public void setFont(String fontData) { - if (font != null) - font.dispose(); - font = new Font(Display.getDefault(), new FontData(fontData)); - textFlow.setFont(font); - } - - // TODO: CHECK STACK OVERFLOW ERROR!!!! - public Font getFont() { - return textFlow.getFont(); - } - - public void setLayout(Rectangle rect) { - getParent().setConstraint(this, rect); - } - - /* - * (non-Javadoc) - * - * @see de.bmotionstudio.gef.editor.figure.IBMotionFigure#deactivateFigure() - */ - @Override - public void deactivateFigure() { - if (foregroundColor != null) - foregroundColor.dispose(); - if (font != null) - font.dispose(); - if (layerImage != null) - layerImage.dispose(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.draw2d.MarginBorder; +import org.eclipse.draw2d.StackLayout; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.draw2d.text.FlowPage; +import org.eclipse.draw2d.text.ParagraphTextLayout; +import org.eclipse.draw2d.text.TextFlow; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +public class TextFigure extends AbstractBMotionFigure { + + private TextFlow textFlow; + protected Image layerImage; + private Color foregroundColor; + private Font font; + + public TextFigure() { + setBorder(new MarginBorder(1)); + FlowPage flowPage = new FlowPage(); + textFlow = new TextFlow(); + textFlow.setLayoutManager(new ParagraphTextLayout(textFlow, + ParagraphTextLayout.WORD_WRAP_SOFT)); + flowPage.add(textFlow); + setLayoutManager(new StackLayout()); + add(flowPage); + } + + /** + * Returns the text inside the TextFlow. + * + * @return the text flow inside the text. + */ + public String getText() { + return textFlow.getText(); + } + + /** + * Sets the text of the TextFlow to the given value. + * + * @param newText + * the new text value. + */ + public void setText(String newText) { + textFlow.setText(newText); + } + + public void setTextColor(RGB rgb) { + if (foregroundColor != null) + foregroundColor.dispose(); + foregroundColor = new Color(Display.getDefault(), rgb); + textFlow.setForegroundColor(foregroundColor); + } + + public void setBackgroundVisible(Boolean bol) { + setOpaque(bol); + } + + public void setFont(String fontData) { + if (font != null) + font.dispose(); + font = new Font(Display.getDefault(), new FontData(fontData)); + textFlow.setFont(font); + } + + // TODO: CHECK STACK OVERFLOW ERROR!!!! + public Font getFont() { + return textFlow.getFont(); + } + + public void setLayout(Rectangle rect) { + getParent().setConstraint(this, rect); + } + + /* + * (non-Javadoc) + * + * @see de.bmotionstudio.gef.editor.figure.IBMotionFigure#deactivateFigure() + */ + @Override + public void deactivateFigure() { + if (foregroundColor != null) + foregroundColor.dispose(); + if (font != null) + font.dispose(); + if (layerImage != null) + layerImage.dispose(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/UnknownBControl.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/UnknownBControl.java index 120245cdb9b4ea6238a642da5cc35abdc2235c70..2e7fc294f18c0a839c962c67f437aff2660e9d8d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/UnknownBControl.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/figure/UnknownBControl.java @@ -1,47 +1,47 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.figure; - -import org.eclipse.draw2d.ColorConstants; -import org.eclipse.draw2d.MarginBorder; -import org.eclipse.draw2d.StackLayout; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.draw2d.text.FlowPage; -import org.eclipse.draw2d.text.ParagraphTextLayout; -import org.eclipse.draw2d.text.TextFlow; - -public class UnknownBControl extends AbstractBMotionFigure { - - public static String ID = "de.bmotionstudio.gef.editor.unknown"; - - private final TextFlow textFlow; - - public UnknownBControl() { - setBorder(new MarginBorder(1)); - FlowPage flowPage = new FlowPage(); - textFlow = new TextFlow(); - textFlow.setLayoutManager(new ParagraphTextLayout(textFlow, - ParagraphTextLayout.WORD_WRAP_SOFT)); - flowPage.add(textFlow); - setLayoutManager(new StackLayout()); - add(flowPage); - setBackgroundColor(ColorConstants.red); - setOpaque(true); - } - - public void prepareForEditing() { - } - - public void setMessage(final String type) { - textFlow.setText("Unknown part: " + type); - } - - public void setLayout(final Rectangle rect) { - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.figure; + +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.MarginBorder; +import org.eclipse.draw2d.StackLayout; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.draw2d.text.FlowPage; +import org.eclipse.draw2d.text.ParagraphTextLayout; +import org.eclipse.draw2d.text.TextFlow; + +public class UnknownBControl extends AbstractBMotionFigure { + + public static String ID = "de.bmotionstudio.gef.editor.unknown"; + + private final TextFlow textFlow; + + public UnknownBControl() { + setBorder(new MarginBorder(1)); + FlowPage flowPage = new FlowPage(); + textFlow = new TextFlow(); + textFlow.setLayoutManager(new ParagraphTextLayout(textFlow, + ParagraphTextLayout.WORD_WRAP_SOFT)); + flowPage.add(textFlow); + setLayoutManager(new StackLayout()); + add(flowPage); + setBackgroundColor(ColorConstants.red); + setOpaque(true); + } + + public void prepareForEditing() { + } + + public void setMessage(final String type) { + textFlow.setText("Unknown part: " + type); + } + + public void setLayout(final Rectangle rect) { + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BControlPropertySource.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BControlPropertySource.java index 17f1924250af878c695bb46dbe39d443bc28f249..0dffa83af3bf68c5c5a3964c8eb79464fb1266e8 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BControlPropertySource.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/BControlPropertySource.java @@ -1,70 +1,75 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import org.eclipse.ui.views.properties.PropertyDescriptor; - -import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; -import de.bmotionstudio.gef.editor.attribute.BAttributeMisc; -import de.bmotionstudio.gef.editor.model.BControl; - -public class BControlPropertySource extends AbstractAttribute { - - private BControl control; - - private BAttributeMisc miscAttribute; - - public BControlPropertySource(BControl control) { - super(null); - this.control = control; - this.miscAttribute = new BAttributeMisc(null); - addChild(this.miscAttribute); - init(); - } - - private void init() { - - for (AbstractAttribute atr : control.getAttributes().values()) { - - atr.setControl(control); - - String group = atr.getGroup(); - - if (group != null) { - - // If group is root node --> add to root - if (group.equals(ROOT)) { - addChild(atr); - } else { - AbstractAttribute groupAtr = control.getAttribute(group); - if (groupAtr != null) { - groupAtr.addChild(atr); - } else { - miscAttribute.addChild(atr); - } - } - - } else { - // No group, add to misc attribute node - miscAttribute.addChild(atr); - } - - } - - } - - @Override - protected PropertyDescriptor preparePropertyDescriptor() { - return null; - } - - @Override - public String getName() { - return "RootProperties"; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import org.eclipse.ui.views.properties.PropertyDescriptor; + +import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; +import de.bmotionstudio.gef.editor.attribute.BAttributeMisc; +import de.bmotionstudio.gef.editor.model.BControl; + +public class BControlPropertySource extends AbstractAttribute { + + private BControl control; + + private BAttributeMisc miscAttribute; + + public BControlPropertySource(BControl control) { + super(null); + this.control = control; + this.miscAttribute = new BAttributeMisc(null); + addChild(this.miscAttribute); + init(); + } + + private void init() { + + for (AbstractAttribute atr : control.getAttributes().values()) { + + if (atr.show()) { + + atr.setControl(control); + + String group = atr.getGroup(); + + if (group != null) { + + // If group is root node --> add to root + if (group.equals(ROOT)) { + addChild(atr); + } else { + AbstractAttribute groupAtr = control + .getAttribute(group); + if (groupAtr != null) { + groupAtr.addChild(atr); + } else { + miscAttribute.addChild(atr); + } + } + + } else { + // No group, add to misc attribute node + miscAttribute.addChild(atr); + } + + } + + } + + } + + @Override + protected PropertyDescriptor preparePropertyDescriptor() { + return null; + } + + @Override + public String getName() { + return "RootProperties"; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectAction.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectAction.java index 8144c6734f46d6372a9d5bbd4903a65706899450..414d011ed9919fb863a0f44ffb4c47003d703777 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectAction.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectAction.java @@ -1,78 +1,78 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.ui.IActionDelegate; -import org.eclipse.ui.IObjectActionDelegate; -import org.eclipse.ui.IWorkbenchPart; -import org.rodinp.core.IRodinProject; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; - -@Deprecated -public class NewBMotionProjectAction implements IObjectActionDelegate { - - // private IWorkbenchPart targetPart; - private IStructuredSelection currentSelection; - private IRodinProject rodinProject; - - public NewBMotionProjectAction() { - super(); - } - - /** - * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) - */ - public void setActivePart(final IAction action, - final IWorkbenchPart targetPart) { - // this.targetPart = targetPart; - } - - /** - * @see IActionDelegate#run(IAction) - */ - public void run(IAction action) { - - if (rodinProject == null) { - return; - } - - NewBMotionProjectWizard wizard = new NewBMotionProjectWizard(); - wizard.init(BMotionEditorPlugin.getDefault().getWorkbench(), - currentSelection); - WizardDialog dialog = new WizardDialog(BMotionEditorPlugin - .getActiveEditor().getSite().getShell(), wizard); - dialog.create(); - dialog.open(); - - } - - /** - * @see IActionDelegate#selectionChanged(IAction, ISelection) - */ - public void selectionChanged(IAction action, ISelection selection) { - - if (selection instanceof IStructuredSelection) { - IStructuredSelection ssel = (IStructuredSelection) selection; - currentSelection = ssel; - if (ssel.size() == 1) { - Object firstElement = ssel.getFirstElement(); - if (firstElement instanceof IRodinProject) { - rodinProject = (IRodinProject) firstElement; - return; - } - } - } - rodinProject = null; - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.ui.IActionDelegate; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPart; +import org.rodinp.core.IRodinProject; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; + +@Deprecated +public class NewBMotionProjectAction implements IObjectActionDelegate { + + // private IWorkbenchPart targetPart; + private IStructuredSelection currentSelection; + private IRodinProject rodinProject; + + public NewBMotionProjectAction() { + super(); + } + + /** + * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) + */ + public void setActivePart(final IAction action, + final IWorkbenchPart targetPart) { + // this.targetPart = targetPart; + } + + /** + * @see IActionDelegate#run(IAction) + */ + public void run(IAction action) { + + if (rodinProject == null) { + return; + } + + NewBMotionProjectWizard wizard = new NewBMotionProjectWizard(); + wizard.init(BMotionEditorPlugin.getDefault().getWorkbench(), + currentSelection); + WizardDialog dialog = new WizardDialog(BMotionEditorPlugin + .getActiveEditor().getSite().getShell(), wizard); + dialog.create(); + dialog.open(); + + } + + /** + * @see IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + + if (selection instanceof IStructuredSelection) { + IStructuredSelection ssel = (IStructuredSelection) selection; + currentSelection = ssel; + if (ssel.size() == 1) { + Object firstElement = ssel.getFirstElement(); + if (firstElement instanceof IRodinProject) { + rodinProject = (IRodinProject) firstElement; + return; + } + } + } + rodinProject = null; + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectWizard.java index c43736ade824237727c41f35825e477f76d8c0b6..ae7689f1420914eb61a023b05dd64ce66467e40a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectWizard.java @@ -1,140 +1,140 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.lang.reflect.InvocationTargetException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.IWorkspaceRunnable; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.ui.INewWizard; -import org.eclipse.ui.IWorkbench; -import org.rodinp.core.RodinCore; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; - -public class NewBMotionProjectWizard extends Wizard implements INewWizard { - - // The wizard page. - private NewBMotionProjectWizardPage page; - - // The selection when the wizard is launched. - private IStructuredSelection selection; - - public NewBMotionProjectWizard() { - super(); - setNeedsProgressMonitor(true); - } - - @Override - public void addPages() { - page = new NewBMotionProjectWizardPage(selection); - addPage(page); - } - - public void init(final IWorkbench workbench, final IStructuredSelection sel) { - this.selection = sel; - } - - @Override - public boolean performFinish() { - - // New project/file name - final String projectName = page.getFileName(); - - // Selected rodin project root - final String projectRoot = page.getProjectRoot(); - - final IRunnableWithProgress op = new IRunnableWithProgress() { - public void run(final IProgressMonitor monitor) - throws InvocationTargetException { - try { - doFinish( - projectRoot, - projectName, - page.getProject(), - page.getInitialContents(BMotionEditorPlugin.FILEEXT_STUDIO), - monitor); - } catch (final CoreException e) { - Logger.getAnonymousLogger().log(Level.SEVERE, - "CoreException", e); - } catch (UnsupportedEncodingException e) { - Logger.getAnonymousLogger().log(Level.SEVERE, - "CoreException", e); - } finally { - monitor.done(); - } - } - - }; - try { - getContainer().run(true, false, op); - } catch (final InterruptedException e) { - return false; - } catch (final InvocationTargetException e) { - final Throwable realException = e.getTargetException(); - MessageDialog.openError(getShell(), "Error", - realException.getMessage()); - return false; - } - - return true; - } - - private void doFinish(String projectRoot, final String projectName, - final IProject project, final InputStream defaultContentStudio, - final IProgressMonitor monitor) throws CoreException { - - monitor.beginTask("Creating " + projectName - + " BMotion Studio Visualization", 2); - - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - IResource resource = root.findMember(new Path(projectRoot)); - if (!resource.exists() || !(resource instanceof IContainer)) { - throw new CoreException(new Status(IStatus.ERROR, - "org.eventb.internal.ui", IStatus.OK, "Project \"" - + projectRoot + "\" does not exist.", null)); - } - - RodinCore.run(new IWorkspaceRunnable() { - - public void run(final IProgressMonitor pMonitor) - throws CoreException { - - // Create .bmso file - IFile file = project.getFile(projectName + "." - + BMotionEditorPlugin.FILEEXT_STUDIO); - - file.create(defaultContentStudio, false, monitor); - file.refreshLocal(IResource.DEPTH_ZERO, null); - - } - - }, monitor); - - monitor.worked(1); - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.InvocationTargetException; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.IWorkspaceRunnable; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.rodinp.core.RodinCore; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; + +public class NewBMotionProjectWizard extends Wizard implements INewWizard { + + // The wizard page. + private NewBMotionProjectWizardPage page; + + // The selection when the wizard is launched. + private IStructuredSelection selection; + + public NewBMotionProjectWizard() { + super(); + setNeedsProgressMonitor(true); + } + + @Override + public void addPages() { + page = new NewBMotionProjectWizardPage(selection); + addPage(page); + } + + public void init(final IWorkbench workbench, final IStructuredSelection sel) { + this.selection = sel; + } + + @Override + public boolean performFinish() { + + // New project/file name + final String projectName = page.getFileName(); + + // Selected rodin project root + final String projectRoot = page.getProjectRoot(); + + final IRunnableWithProgress op = new IRunnableWithProgress() { + public void run(final IProgressMonitor monitor) + throws InvocationTargetException { + try { + doFinish( + projectRoot, + projectName, + page.getProject(), + page.getInitialContents(BMotionEditorPlugin.FILEEXT_STUDIO), + monitor); + } catch (final CoreException e) { + Logger.getAnonymousLogger().log(Level.SEVERE, + "CoreException", e); + } catch (UnsupportedEncodingException e) { + Logger.getAnonymousLogger().log(Level.SEVERE, + "CoreException", e); + } finally { + monitor.done(); + } + } + + }; + try { + getContainer().run(true, false, op); + } catch (final InterruptedException e) { + return false; + } catch (final InvocationTargetException e) { + final Throwable realException = e.getTargetException(); + MessageDialog.openError(getShell(), "Error", + realException.getMessage()); + return false; + } + + return true; + } + + private void doFinish(String projectRoot, final String projectName, + final IProject project, final InputStream defaultContentStudio, + final IProgressMonitor monitor) throws CoreException { + + monitor.beginTask("Creating " + projectName + + " BMotion Studio Visualization", 2); + + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + IResource resource = root.findMember(new Path(projectRoot)); + if (!resource.exists() || !(resource instanceof IContainer)) { + throw new CoreException(new Status(IStatus.ERROR, + "org.eventb.internal.ui", IStatus.OK, "Project \"" + + projectRoot + "\" does not exist.", null)); + } + + RodinCore.run(new IWorkspaceRunnable() { + + public void run(final IProgressMonitor pMonitor) + throws CoreException { + + // Create .bmso file + IFile file = project.getFile(projectName + "." + + BMotionEditorPlugin.FILEEXT_STUDIO); + + file.create(defaultContentStudio, false, monitor); + file.refreshLocal(IResource.DEPTH_ZERO, null); + + } + + }, monitor); + + monitor.worked(1); + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectWizardPage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectWizardPage.java index f746da1abb0feb174bc38aee9c89525a94e26c65..8f5a952055d138b223e112d8a46806d46d763f8d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectWizardPage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/NewBMotionProjectWizardPage.java @@ -1,416 +1,416 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.window.Window; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.dialogs.ContainerSelectionDialog; - -import com.thoughtworks.xstream.XStream; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.ILanguageService; -import de.bmotionstudio.gef.editor.model.Visualization; - -public class NewBMotionProjectWizardPage extends WizardPage { - - private static final String DEFAULT_PROJECT_NAME = "NewBMotionVisualization"; - - private IProject selectedProject; - private final MachineList machineList = new MachineList(); - - private MachineEntry selectedEntry = null; - private Text projectRootText; - private Text projectText; - private TableViewer tableViewer; - - private Map<String, ILanguageService> languages = new HashMap<String, ILanguageService>(); - - protected NewBMotionProjectWizardPage(IStructuredSelection selection) { - super("wizardPage"); - this.selectedProject = getSelectedFromSelection(selection); - setTitle("New BMotion Studio Visualization"); - setDescription("Please select a B-Machine and enter a name for the new BMotion Studio Visualization."); - setImageDescriptor(BMotionStudioImage - .getImageDescriptor("icons/logo_bmotion_64.png")); - initLanguageExtensions(); - } - - private void initLanguageExtensions() { - // Get language loader - IExtensionRegistry registry = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.language"); - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - try { - ILanguageService lang = (ILanguageService) configurationElement - .createExecutableExtension("service"); - languages - .put(configurationElement.getAttribute("id"), lang); - } catch (CoreException e) { - e.printStackTrace(); - } - - } - } - } - - private IProject getSelectedFromSelection(IStructuredSelection selection) { - if (selection.size() == 1) { - Object firstElement = selection.getFirstElement(); - if (firstElement instanceof IProject) { - return (IProject) firstElement; - } - } - return null; - } - - public IProject getProject() { - return selectedProject; - } - - public InputStream getInitialContents(String fileExtension) - throws UnsupportedEncodingException { - Visualization visualization = new Visualization(getSelectedEntry() - .getMachineFile().getName(), getSelectedEntry() - .getMachineLanguage(), Platform - .getBundle(BMotionEditorPlugin.PLUGIN_ID).getHeaders() - .get("Bundle-Version")); - XStream xstream = new XStream(); - BMotionEditorPlugin.setAliases(xstream); - String content = xstream.toXML(visualization); - return new ByteArrayInputStream(content.getBytes("UTF-8")); - } - - public String getFileName() { - if (projectText.getText().length() > 0) { - return projectText.getText(); - } - return DEFAULT_PROJECT_NAME; - } - - public MachineEntry getSelectedEntry() { - return this.selectedEntry; - } - - public String getProjectRoot() { - return this.projectRootText.getText(); - } - - public String getBMotionProjectName() { - return this.projectText.getText(); - } - - private void initContent() { - - machineList.clearList(); - - if (selectedProject != null) { - - String basePath = (selectedProject.getLocation().toString()) - .replace("file:", ""); - File dir = new File(basePath); - - for (File f : dir.listFiles()) { - - for (Entry<String, ILanguageService> e : languages.entrySet()) { - - String langID = e.getKey(); - ILanguageService langService = e.getValue(); - - IPath path = new Path(f.getAbsolutePath()); - IFile ifile = ResourcesPlugin.getWorkspace().getRoot() - .getFile(path); - if (langService.isLanguageFile(ifile)) { - machineList.addEntry(new MachineEntry(ifile, langID)); - } - - } - - } - - } - - tableViewer.setInput(machineList.getChildren()); - - } - - private boolean resourceExistsInProject(String resourceName) { - IFile f = selectedProject.getFile(resourceName + "." - + BMotionEditorPlugin.FILEEXT_STUDIO); - return f.exists(); - } - - public void validateInput() { - StringBuffer errorMessages = new StringBuffer(150); - - if (getProjectRoot().length() == 0) { - errorMessages.append("The Project name must not be empty.\n"); - } - - if (getBMotionProjectName().length() == 0) { - errorMessages - .append("The BMotion Studio Visualization filename must not be empty.\n"); - } - - // if (errorMessages.length() == 0) { - // rodinProject = RodinCore.getRodinDB().getRodinProject( - // getProjectRoot().replaceAll("/", "")); - // - // if (!rodinProject.exists()) { - // errorMessages.append("The Project '" + getProjectRoot() - // + "' does not exist.\n"); - // } - // } - - if (getSelectedEntry() == null) { - errorMessages.append("You have to select a Machine.\n"); - } - - if (errorMessages.length() == 0 - && resourceExistsInProject(getBMotionProjectName())) { - errorMessages - .append("The BMotion Studio Visualization filename must be unique in a project.\n"); - } - - if (errorMessages.length() > 0) { - setErrorMessage(errorMessages.toString()); - setPageComplete(false); - } else { - setErrorMessage(null); - setPageComplete(true); - } - } - - public void createControl(final Composite parent) { - final Composite container = new Composite(parent, SWT.NULL); - - final GridLayout layout = new GridLayout(); - container.setLayout(layout); - - layout.numColumns = 3; - layout.verticalSpacing = 20; - - setControl(container); - - final ModifyListener listener = new ModifyListener() { - public void modifyText(final ModifyEvent e) { - validateInput(); - } - }; - - GridData gd = new GridData(); - gd.horizontalAlignment = SWT.FILL; - gd.grabExcessHorizontalSpace = true; - - Label label = new Label(container, SWT.NULL); - label.setText("&Project name:"); - - projectRootText = new Text(container, SWT.BORDER | SWT.SINGLE); - projectRootText.setLayoutData(gd); - if (selectedProject != null) { - projectRootText.setText(selectedProject.getFullPath().toOSString()); - } - projectRootText.addModifyListener(listener); - - final Button button = new Button(container, SWT.NULL); - button.setText("Browse..."); - button.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - final ContainerSelectionDialog dialog = new ContainerSelectionDialog( - getShell(), ResourcesPlugin.getWorkspace().getRoot(), - false, "Select Project"); - if (dialog.open() == Window.OK) { - final Object[] result = dialog.getResult(); - if (result.length == 1) { - Path newPath = (Path) result[0]; - IProject newProject = selectedProject.getWorkspace() - .getRoot().getProject(newPath.toString()); - selectedProject = newProject; - initContent(); - projectRootText.setText(((Path) result[0]).toOSString()); - validateInput(); - } - } - } - }); - - label = new Label(container, SWT.NULL); - label.setText("&BMotion Studio Visualization filename:"); - - projectText = new Text(container, SWT.BORDER | SWT.SINGLE); - projectText.setText(DEFAULT_PROJECT_NAME); - projectText.setLayoutData(gd); - projectText.addModifyListener(listener); - - gd = new GridData(); - gd.verticalAlignment = SWT.BEGINNING; - gd.horizontalSpan = 3; - - label = new Label(container, SWT.NULL); - label.setText("&B-Machine:"); - label.setLayoutData(gd); - - gd = new GridData(GridData.FILL_VERTICAL); - gd.horizontalAlignment = SWT.FILL; - gd.grabExcessHorizontalSpace = true; - gd.horizontalSpan = 3; - - tableViewer = new TableViewer(container, SWT.SINGLE - | SWT.FULL_SELECTION); - final Table table = tableViewer.getTable(); - table.setHeaderVisible(true); - table.setLinesVisible(true); - table.setLayoutData(gd); - - final String[] columnsNames = new String[] { "Machine", "Language" }; - final int[] columnWidths = new int[] { 250, 100 }; - final int[] columnAlignments = new int[] { SWT.LEFT, SWT.LEFT }; - - for (int i = 0; i < columnsNames.length; i++) { - final TableColumn tableColumn = new TableColumn(table, - columnAlignments[i]); - tableColumn.setText(columnsNames[i]); - tableColumn.setWidth(columnWidths[i]); - } - - tableViewer.setLabelProvider(new MachineLabelProvider()); - tableViewer.setContentProvider(new ArrayContentProvider()); - initContent(); - - tableViewer - .addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) event - .getSelection(); - selectedEntry = (MachineEntry) selection - .getFirstElement(); - validateInput(); - } - }); - - validateInput(); - - } - - private static class MachineLabelProvider extends LabelProvider implements - ITableLabelProvider { - - public Image getColumnImage(final Object element, final int columnIndex) { - return null; - } - - public String getColumnText(final Object element, final int columnIndex) { - if (element instanceof MachineEntry) { - - final MachineEntry currentEntry = (MachineEntry) element; - - switch (columnIndex) { - case 0: - return currentEntry.getMachineName(); - case 1: - return currentEntry.getMachineLanguage(); - } - - } - - return null; - } - - } - - private static class MachineList { - private final ArrayList<MachineEntry> entries = new ArrayList<MachineEntry>(); - - public MachineEntry[] getChildren() { - return entries.toArray(new MachineEntry[entries.size()]); - } - - public void addEntry(final MachineEntry entry) { - if (!entries.contains(entry)) { - entries.add(entry); - } - } - - public void clearList() { - this.entries.clear(); - } - - } - - private static class MachineEntry { - - private final String machineName; - private final String machineLanguage; - private final IFile file; - - public MachineEntry(IFile file, String machineLanguage) { - this.file = file; - this.machineName = file.getName(); - this.machineLanguage = machineLanguage; - } - - public String getMachineName() { - return this.machineName; - } - - public String getMachineLanguage() { - return this.machineLanguage; - } - - public IFile getMachineFile() { - return this.file; - } - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.window.Window; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.dialogs.ContainerSelectionDialog; + +import com.thoughtworks.xstream.XStream; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.BMotionStudioImage; +import de.bmotionstudio.gef.editor.ILanguageService; +import de.bmotionstudio.gef.editor.model.Visualization; + +public class NewBMotionProjectWizardPage extends WizardPage { + + private static final String DEFAULT_PROJECT_NAME = "NewBMotionVisualization"; + + private IProject selectedProject; + private final MachineList machineList = new MachineList(); + + private MachineEntry selectedEntry = null; + private Text projectRootText; + private Text projectText; + private TableViewer tableViewer; + + private Map<String, ILanguageService> languages = new HashMap<String, ILanguageService>(); + + protected NewBMotionProjectWizardPage(IStructuredSelection selection) { + super("wizardPage"); + this.selectedProject = getSelectedFromSelection(selection); + setTitle("New BMotion Studio Visualization"); + setDescription("Please select a B-Machine and enter a name for the new BMotion Studio Visualization."); + setImageDescriptor(BMotionStudioImage + .getImageDescriptor("icons/logo_bmotion_64.png")); + initLanguageExtensions(); + } + + private void initLanguageExtensions() { + // Get language loader + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.language"); + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + try { + ILanguageService lang = (ILanguageService) configurationElement + .createExecutableExtension("service"); + languages + .put(configurationElement.getAttribute("id"), lang); + } catch (CoreException e) { + e.printStackTrace(); + } + + } + } + } + + private IProject getSelectedFromSelection(IStructuredSelection selection) { + if (selection.size() == 1) { + Object firstElement = selection.getFirstElement(); + if (firstElement instanceof IProject) { + return (IProject) firstElement; + } + } + return null; + } + + public IProject getProject() { + return selectedProject; + } + + public InputStream getInitialContents(String fileExtension) + throws UnsupportedEncodingException { + Visualization visualization = new Visualization(getSelectedEntry() + .getMachineFile().getName(), getSelectedEntry() + .getMachineLanguage(), Platform + .getBundle(BMotionEditorPlugin.PLUGIN_ID).getHeaders() + .get("Bundle-Version")); + XStream xstream = new XStream(); + BMotionEditorPlugin.setAliases(xstream); + String content = xstream.toXML(visualization); + return new ByteArrayInputStream(content.getBytes("UTF-8")); + } + + public String getFileName() { + if (projectText.getText().length() > 0) { + return projectText.getText(); + } + return DEFAULT_PROJECT_NAME; + } + + public MachineEntry getSelectedEntry() { + return this.selectedEntry; + } + + public String getProjectRoot() { + return this.projectRootText.getText(); + } + + public String getBMotionProjectName() { + return this.projectText.getText(); + } + + private void initContent() { + + machineList.clearList(); + + if (selectedProject != null) { + + String basePath = (selectedProject.getLocation().toString()) + .replace("file:", ""); + File dir = new File(basePath); + + for (File f : dir.listFiles()) { + + for (Entry<String, ILanguageService> e : languages.entrySet()) { + + String langID = e.getKey(); + ILanguageService langService = e.getValue(); + + IPath path = new Path(f.getAbsolutePath()); + IFile ifile = ResourcesPlugin.getWorkspace().getRoot() + .getFile(path); + if (langService.isLanguageFile(ifile)) { + machineList.addEntry(new MachineEntry(ifile, langID)); + } + + } + + } + + } + + tableViewer.setInput(machineList.getChildren()); + + } + + private boolean resourceExistsInProject(String resourceName) { + IFile f = selectedProject.getFile(resourceName + "." + + BMotionEditorPlugin.FILEEXT_STUDIO); + return f.exists(); + } + + public void validateInput() { + StringBuffer errorMessages = new StringBuffer(150); + + if (getProjectRoot().length() == 0) { + errorMessages.append("The Project name must not be empty.\n"); + } + + if (getBMotionProjectName().length() == 0) { + errorMessages + .append("The BMotion Studio Visualization filename must not be empty.\n"); + } + + // if (errorMessages.length() == 0) { + // rodinProject = RodinCore.getRodinDB().getRodinProject( + // getProjectRoot().replaceAll("/", "")); + // + // if (!rodinProject.exists()) { + // errorMessages.append("The Project '" + getProjectRoot() + // + "' does not exist.\n"); + // } + // } + + if (getSelectedEntry() == null) { + errorMessages.append("You have to select a Machine.\n"); + } + + if (errorMessages.length() == 0 + && resourceExistsInProject(getBMotionProjectName())) { + errorMessages + .append("The BMotion Studio Visualization filename must be unique in a project.\n"); + } + + if (errorMessages.length() > 0) { + setErrorMessage(errorMessages.toString()); + setPageComplete(false); + } else { + setErrorMessage(null); + setPageComplete(true); + } + } + + public void createControl(final Composite parent) { + final Composite container = new Composite(parent, SWT.NULL); + + final GridLayout layout = new GridLayout(); + container.setLayout(layout); + + layout.numColumns = 3; + layout.verticalSpacing = 20; + + setControl(container); + + final ModifyListener listener = new ModifyListener() { + public void modifyText(final ModifyEvent e) { + validateInput(); + } + }; + + GridData gd = new GridData(); + gd.horizontalAlignment = SWT.FILL; + gd.grabExcessHorizontalSpace = true; + + Label label = new Label(container, SWT.NULL); + label.setText("&Project name:"); + + projectRootText = new Text(container, SWT.BORDER | SWT.SINGLE); + projectRootText.setLayoutData(gd); + if (selectedProject != null) { + projectRootText.setText(selectedProject.getFullPath().toOSString()); + } + projectRootText.addModifyListener(listener); + + final Button button = new Button(container, SWT.NULL); + button.setText("Browse..."); + button.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + final ContainerSelectionDialog dialog = new ContainerSelectionDialog( + getShell(), ResourcesPlugin.getWorkspace().getRoot(), + false, "Select Project"); + if (dialog.open() == Window.OK) { + final Object[] result = dialog.getResult(); + if (result.length == 1) { + Path newPath = (Path) result[0]; + IProject newProject = selectedProject.getWorkspace() + .getRoot().getProject(newPath.toString()); + selectedProject = newProject; + initContent(); + projectRootText.setText(((Path) result[0]).toOSString()); + validateInput(); + } + } + } + }); + + label = new Label(container, SWT.NULL); + label.setText("&BMotion Studio Visualization filename:"); + + projectText = new Text(container, SWT.BORDER | SWT.SINGLE); + projectText.setText(DEFAULT_PROJECT_NAME); + projectText.setLayoutData(gd); + projectText.addModifyListener(listener); + + gd = new GridData(); + gd.verticalAlignment = SWT.BEGINNING; + gd.horizontalSpan = 3; + + label = new Label(container, SWT.NULL); + label.setText("&B-Machine:"); + label.setLayoutData(gd); + + gd = new GridData(GridData.FILL_VERTICAL); + gd.horizontalAlignment = SWT.FILL; + gd.grabExcessHorizontalSpace = true; + gd.horizontalSpan = 3; + + tableViewer = new TableViewer(container, SWT.SINGLE + | SWT.FULL_SELECTION); + final Table table = tableViewer.getTable(); + table.setHeaderVisible(true); + table.setLinesVisible(true); + table.setLayoutData(gd); + + final String[] columnsNames = new String[] { "Machine", "Language" }; + final int[] columnWidths = new int[] { 250, 100 }; + final int[] columnAlignments = new int[] { SWT.LEFT, SWT.LEFT }; + + for (int i = 0; i < columnsNames.length; i++) { + final TableColumn tableColumn = new TableColumn(table, + columnAlignments[i]); + tableColumn.setText(columnsNames[i]); + tableColumn.setWidth(columnWidths[i]); + } + + tableViewer.setLabelProvider(new MachineLabelProvider()); + tableViewer.setContentProvider(new ArrayContentProvider()); + initContent(); + + tableViewer + .addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event + .getSelection(); + selectedEntry = (MachineEntry) selection + .getFirstElement(); + validateInput(); + } + }); + + validateInput(); + + } + + private static class MachineLabelProvider extends LabelProvider implements + ITableLabelProvider { + + public Image getColumnImage(final Object element, final int columnIndex) { + return null; + } + + public String getColumnText(final Object element, final int columnIndex) { + if (element instanceof MachineEntry) { + + final MachineEntry currentEntry = (MachineEntry) element; + + switch (columnIndex) { + case 0: + return currentEntry.getMachineName(); + case 1: + return currentEntry.getMachineLanguage(); + } + + } + + return null; + } + + } + + private static class MachineList { + private final ArrayList<MachineEntry> entries = new ArrayList<MachineEntry>(); + + public MachineEntry[] getChildren() { + return entries.toArray(new MachineEntry[entries.size()]); + } + + public void addEntry(final MachineEntry entry) { + if (!entries.contains(entry)) { + entries.add(entry); + } + } + + public void clearList() { + this.entries.clear(); + } + + } + + private static class MachineEntry { + + private final String machineName; + private final String machineLanguage; + private final IFile file; + + public MachineEntry(IFile file, String machineLanguage) { + this.file = file; + this.machineName = file.getName(); + this.machineLanguage = machineLanguage; + } + + public String getMachineName() { + return this.machineName; + } + + public String getMachineLanguage() { + return this.machineLanguage; + } + + public IFile getMachineFile() { + return this.file; + } + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/PerspectiveEditFactory.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/PerspectiveEditFactory.java index 2603fee362ae80c07df25e5b1caf8e9e4f367193..cbef8d7e70d7766dbe2afcffd33e753470dba99b 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/PerspectiveEditFactory.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/PerspectiveEditFactory.java @@ -1,43 +1,43 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import org.eclipse.ui.IFolderLayout; -import org.eclipse.ui.IPageLayout; -import org.eclipse.ui.IPerspectiveFactory; - -import de.bmotionstudio.gef.editor.library.LibraryView; - -public class PerspectiveEditFactory implements IPerspectiveFactory { - - public void createInitialLayout(final IPageLayout layout) { - - final String editorArea = layout.getEditorArea(); - - // Place the project explorer to left of editor area. - final IFolderLayout left = layout.createFolder("left", - IPageLayout.LEFT, 0.15f, editorArea); - left.addView("fr.systerel.explorer.navigator.view"); - - // Place the outline to right of editor area. - final IFolderLayout righttop = layout.createFolder("right", - IPageLayout.RIGHT, 0.8f, editorArea); - righttop.addView(IPageLayout.ID_OUTLINE); - - // Library view - final IFolderLayout rightbot = layout.createFolder("rightb", - IPageLayout.BOTTOM, 0.6f, "right"); - rightbot.addView(LibraryView.ID); - - final IFolderLayout bottom = layout.createFolder("bottom", - IPageLayout.BOTTOM, 0.75f, editorArea); - // Properties view - bottom.addView(IPageLayout.ID_PROP_SHEET); - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import org.eclipse.ui.IFolderLayout; +import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IPerspectiveFactory; + +import de.bmotionstudio.gef.editor.library.LibraryView; + +public class PerspectiveEditFactory implements IPerspectiveFactory { + + public void createInitialLayout(final IPageLayout layout) { + + final String editorArea = layout.getEditorArea(); + + // Place the project explorer to left of editor area. + final IFolderLayout left = layout.createFolder("left", + IPageLayout.LEFT, 0.15f, editorArea); + left.addView("fr.systerel.explorer.navigator.view"); + + // Place the outline to right of editor area. + final IFolderLayout righttop = layout.createFolder("right", + IPageLayout.RIGHT, 0.8f, editorArea); + righttop.addView(IPageLayout.ID_OUTLINE); + + // Library view + final IFolderLayout rightbot = layout.createFolder("rightb", + IPageLayout.BOTTOM, 0.6f, "right"); + rightbot.addView(LibraryView.ID); + + final IFolderLayout bottom = layout.createFolder("bottom", + IPageLayout.BOTTOM, 0.75f, editorArea); + // Properties view + bottom.addView(IPageLayout.ID_PROP_SHEET); + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/RenameWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/RenameWizard.java index c9897d93d068dcbd6e9a43d80444ebfca24ae0c7..117a244f3aa03bc54f91db884197286d6d49db1b 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/RenameWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/RenameWizard.java @@ -1,72 +1,72 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -public class RenameWizard extends Wizard { - - private class RenamePage extends WizardPage { - - public Text nameText; - - public RenamePage(final String pageName) { - super(pageName); - setTitle("BMotion Studio Rename Wizard"); - setDescription("Rename a control"); - } - - public void createControl(final Composite parent) { - - Composite composite = new Composite(parent, SWT.NONE); - composite.setLayout(new GridLayout(2, false)); - - Label lab = new Label(composite, SWT.NONE); - lab.setText("Rename to: "); - lab.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.heightHint = 90; - - nameText = new Text(composite, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL); - nameText.setText(oldName); - nameText.setLayoutData(gd); - - setControl(composite); - - } - - } - - private final String oldName; - private String newName; - - public RenameWizard(final String oldName) { - this.oldName = oldName; - this.newName = null; - addPage(new RenamePage("MyRenamePage")); - } - - @Override - public boolean performFinish() { - RenamePage page = (RenamePage) getPage("MyRenamePage"); - newName = page.nameText.getText(); - return true; - } - - public String getRenameValue() { - return newName; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +public class RenameWizard extends Wizard { + + private class RenamePage extends WizardPage { + + public Text nameText; + + public RenamePage(final String pageName) { + super(pageName); + setTitle("BMotion Studio Rename Wizard"); + setDescription("Rename a control"); + } + + public void createControl(final Composite parent) { + + Composite composite = new Composite(parent, SWT.NONE); + composite.setLayout(new GridLayout(2, false)); + + Label lab = new Label(composite, SWT.NONE); + lab.setText("Rename to: "); + lab.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.heightHint = 90; + + nameText = new Text(composite, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL); + nameText.setText(oldName); + nameText.setLayoutData(gd); + + setControl(composite); + + } + + } + + private final String oldName; + private String newName; + + public RenameWizard(final String oldName) { + this.oldName = oldName; + this.newName = null; + addPage(new RenamePage("MyRenamePage")); + } + + @Override + public boolean performFinish() { + RenamePage page = (RenamePage) getPage("MyRenamePage"); + newName = page.nameText.getText(); + return true; + } + + public String getRenameValue() { + return newName; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/SelectOperationDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/SelectOperationDialog.java index ae9aaf655a6695f08182f17fc4b5e5791aaacc1c..3f65f2ac5918321df5b2915b28c36e599aee679d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/SelectOperationDialog.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/SelectOperationDialog.java @@ -1,105 +1,105 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import java.util.List; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ListViewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; - -import de.prob.core.domainobjects.Operation; - -public class SelectOperationDialog extends Dialog { - - private List<Operation> ops; - private Operation selectedOperation; - // private ComboViewer cb; - private ListViewer listViewer; - - protected SelectOperationDialog(Shell parentShell, List<Operation> ops) { - super(parentShell); - this.ops = ops; - } - - @Override - protected Control createDialogArea(Composite parent) { - Composite container = (Composite) super.createDialogArea(parent); - - GridLayout gl = new GridLayout(2, false); - gl.marginLeft = 15; - gl.marginTop = 20; - - container.setLayout(gl); - - Label lb = new Label(container, SWT.NONE); - lb.setText("Select an operation:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - - listViewer = new ListViewer(container); - listViewer.setContentProvider(new ArrayContentProvider()); - listViewer.setInput(ops); - listViewer.getList().setLayoutData(new GridData(GridData.FILL_BOTH)); - - // cb = new ComboViewer(container, SWT.NONE); - // cb.setContentProvider(new ArrayContentProvider()); - // cb.setInput(ops); - // cb.getCombo().setLayoutData(new GridData(200, 20)); - // cb.getCombo() - // .setFont( - // JFaceResources.getFontRegistry().get( - // BasicUtils.RODIN_FONT_KEY)); - - return container; - - } - - @Override - protected void configureShell(Shell newShell) { - super.configureShell(newShell); - newShell.setText("Please select an operation ..."); - } - - @Override - protected Point getInitialSize() { - return new Point(600, 250); - } - - @Override - protected void okPressed() { - - IStructuredSelection selection = (IStructuredSelection) listViewer - .getSelection(); - selectedOperation = (Operation) selection.getFirstElement(); - - if (selectedOperation == null) { - MessageDialog.openError(Display.getDefault().getActiveShell(), - "An error occurred", "Please select an operation ..."); - return; - } else { - setReturnCode(OK); - close(); - } - - } - - public Operation getSelectedOperation() { - return this.selectedOperation; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import java.util.List; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; + +import de.prob.core.domainobjects.Operation; + +public class SelectOperationDialog extends Dialog { + + private List<Operation> ops; + private Operation selectedOperation; + // private ComboViewer cb; + private ListViewer listViewer; + + protected SelectOperationDialog(Shell parentShell, List<Operation> ops) { + super(parentShell); + this.ops = ops; + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite container = (Composite) super.createDialogArea(parent); + + GridLayout gl = new GridLayout(2, false); + gl.marginLeft = 15; + gl.marginTop = 20; + + container.setLayout(gl); + + Label lb = new Label(container, SWT.NONE); + lb.setText("Select an operation:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + + listViewer = new ListViewer(container); + listViewer.setContentProvider(new ArrayContentProvider()); + listViewer.setInput(ops); + listViewer.getList().setLayoutData(new GridData(GridData.FILL_BOTH)); + + // cb = new ComboViewer(container, SWT.NONE); + // cb.setContentProvider(new ArrayContentProvider()); + // cb.setInput(ops); + // cb.getCombo().setLayoutData(new GridData(200, 20)); + // cb.getCombo() + // .setFont( + // JFaceResources.getFontRegistry().get( + // BasicUtils.RODIN_FONT_KEY)); + + return container; + + } + + @Override + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + newShell.setText("Please select an operation ..."); + } + + @Override + protected Point getInitialSize() { + return new Point(600, 250); + } + + @Override + protected void okPressed() { + + IStructuredSelection selection = (IStructuredSelection) listViewer + .getSelection(); + selectedOperation = (Operation) selection.getFirstElement(); + + if (selectedOperation == null) { + MessageDialog.openError(Display.getDefault().getActiveShell(), + "An error occurred", "Please select an operation ..."); + return; + } else { + setReturnCode(OK); + close(); + } + + } + + public Operation getSelectedOperation() { + return this.selectedOperation; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationEditorHandler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationEditorHandler.java index d372e4d5435629678eb967c5a9a0564cde5ff4fc..bda5ba1df2ffa63f35d858a5a86fc205ea6372ba 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationEditorHandler.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationEditorHandler.java @@ -1,73 +1,73 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.commands.IHandler; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.WorkbenchException; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.prob.core.Animator; -import de.prob.logging.Logger; - -public class StartVisualizationEditorHandler extends AbstractHandler implements - IHandler { - - private VisualizationProgressBar dpb; - - public Object execute(final ExecutionEvent event) throws ExecutionException { - - if (BMotionEditorPlugin.getActiveEditor().isDirty()) { - if (MessageDialog - .openConfirm( - Display.getDefault().getActiveShell(), - "Please confirm", - "You made changes in your editor. Do you want to safe before starting visualization?")) { - BMotionEditorPlugin.getActiveEditor().doSave( - new NullProgressMonitor()); - } - } - - IFile projectFile = BMotionEditorPlugin.getActiveEditor() - .getVisualization().getProjectFile(); - - // Get ProB Animator - Animator animator = Animator.getAnimator(); - - // Open Run Perspective - IWorkbench workbench = PlatformUI.getWorkbench(); - try { - workbench.showPerspective("de.bmotionstudio.perspective.run", - workbench.getActiveWorkbenchWindow()); - } catch (WorkbenchException e) { - Logger.notifyUser("Error opening BMotion Studio Run perspective.", - e); - } - - // First, kill old visualization (only if exists) - if (dpb != null) - dpb.kill(); - // Create a new visualization - dpb = new VisualizationProgressBar(Display.getDefault() - .getActiveShell(), animator, - BMotionEditorPlugin.getActiveEditor(), projectFile); - dpb.initGuage(); - dpb.open(); - - return null; - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.IHandler; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.WorkbenchException; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.prob.core.Animator; +import de.prob.logging.Logger; + +public class StartVisualizationEditorHandler extends AbstractHandler implements + IHandler { + + private VisualizationProgressBar dpb; + + public Object execute(final ExecutionEvent event) throws ExecutionException { + + if (BMotionEditorPlugin.getActiveEditor().isDirty()) { + if (MessageDialog + .openConfirm( + Display.getDefault().getActiveShell(), + "Please confirm", + "You made changes in your editor. Do you want to safe before starting visualization?")) { + BMotionEditorPlugin.getActiveEditor().doSave( + new NullProgressMonitor()); + } + } + + IFile projectFile = BMotionEditorPlugin.getActiveEditor() + .getVisualization().getProjectFile(); + + // Get ProB Animator + Animator animator = Animator.getAnimator(); + + // Open Run Perspective + IWorkbench workbench = PlatformUI.getWorkbench(); + try { + workbench.showPerspective("de.bmotionstudio.perspective.run", + workbench.getActiveWorkbenchWindow()); + } catch (WorkbenchException e) { + Logger.notifyUser("Error opening BMotion Studio Run perspective.", + e); + } + + // First, kill old visualization (only if exists) + if (dpb != null) + dpb.kill(); + // Create a new visualization + dpb = new VisualizationProgressBar(Display.getDefault() + .getActiveShell(), animator, + BMotionEditorPlugin.getActiveEditor(), projectFile); + dpb.initGuage(); + dpb.open(); + + return null; + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationFileHandler.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationFileHandler.java index 55a3f77554ff818a6757dd1b754b5dde26affb8f..2c9964a279dd5b4c08b830489ae060de8d64c7bf 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationFileHandler.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/StartVisualizationFileHandler.java @@ -1,135 +1,135 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import org.eclipse.core.commands.AbstractHandler; -import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.commands.ExecutionException; -import org.eclipse.core.commands.IHandler; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IEditorDescriptor; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.WorkbenchException; -import org.eclipse.ui.handlers.HandlerUtil; -import org.eclipse.ui.part.FileEditorInput; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.BMotionStudioEditor; -import de.prob.core.Animator; -import de.prob.logging.Logger; - -public class StartVisualizationFileHandler extends AbstractHandler implements - IHandler { - - private ISelection fSelection; - private VisualizationProgressBar dpb; - private BMotionStudioEditor activeEditor; - - public Object execute(final ExecutionEvent event) throws ExecutionException { - - fSelection = HandlerUtil.getCurrentSelection(event); - - BMotionStudioEditor editor = BMotionEditorPlugin.getActiveEditor(); - if (editor != null) { - if (BMotionEditorPlugin.getActiveEditor().isDirty()) { - if (MessageDialog - .openConfirm( - Display.getDefault().getActiveShell(), - "Please confirm", - "You made changes in your editor. Do you want to safe before starting visualization?")) { - - BMotionEditorPlugin.getActiveEditor().doSave( - new NullProgressMonitor()); - } - } - } - - IFile f = null; - - // Get the Selection - if (fSelection instanceof IStructuredSelection) { - - IStructuredSelection ssel = (IStructuredSelection) fSelection; - - if (ssel.size() == 1) { - - f = getBmsFileFromSelection(ssel); - - IWorkbenchWindow window = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow(); - IWorkbenchPage page = window.getActivePage(); - - IEditorDescriptor desc = PlatformUI.getWorkbench() - .getEditorRegistry().getDefaultEditor(f.getName()); - - try { - IEditorPart part = page.openEditor(new FileEditorInput(f), - desc.getId()); - if (part instanceof BMotionStudioEditor) { - activeEditor = (BMotionStudioEditor) part; - } else { - // TODO: Return some useful error?! - return null; - } - } catch (PartInitException e) { - e.printStackTrace(); - } - - // Get ProB Animator - Animator animator = Animator.getAnimator(); - - // Open Run Perspective - IWorkbench workbench = PlatformUI.getWorkbench(); - try { - workbench.showPerspective( - "de.bmotionstudio.perspective.run", - workbench.getActiveWorkbenchWindow()); - } catch (WorkbenchException e) { - Logger.notifyUser( - "Error opening BMotion Studio Run perspective.", e); - } - - // First, kill old visualization (only if exists) - if (dpb != null) - dpb.kill(); - // Create a new visualization - dpb = new VisualizationProgressBar(Display.getDefault() - .getActiveShell(), animator, activeEditor, f); - dpb.initGuage(); - dpb.open(); - - } - - } - - return null; - - } - - public void selectionChanged(final IAction action, - final ISelection selection) { - fSelection = selection; - } - - protected IFile getBmsFileFromSelection(IStructuredSelection ssel) { - if (ssel.getFirstElement() instanceof IFile) - return (IFile) ssel.getFirstElement(); - return null; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.IHandler; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IEditorDescriptor; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.WorkbenchException; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.part.FileEditorInput; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.BMotionStudioEditor; +import de.prob.core.Animator; +import de.prob.logging.Logger; + +public class StartVisualizationFileHandler extends AbstractHandler implements + IHandler { + + private ISelection fSelection; + private VisualizationProgressBar dpb; + private BMotionStudioEditor activeEditor; + + public Object execute(final ExecutionEvent event) throws ExecutionException { + + fSelection = HandlerUtil.getCurrentSelection(event); + + BMotionStudioEditor editor = BMotionEditorPlugin.getActiveEditor(); + if (editor != null) { + if (BMotionEditorPlugin.getActiveEditor().isDirty()) { + if (MessageDialog + .openConfirm( + Display.getDefault().getActiveShell(), + "Please confirm", + "You made changes in your editor. Do you want to safe before starting visualization?")) { + + BMotionEditorPlugin.getActiveEditor().doSave( + new NullProgressMonitor()); + } + } + } + + IFile f = null; + + // Get the Selection + if (fSelection instanceof IStructuredSelection) { + + IStructuredSelection ssel = (IStructuredSelection) fSelection; + + if (ssel.size() == 1) { + + f = getBmsFileFromSelection(ssel); + + IWorkbenchWindow window = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow(); + IWorkbenchPage page = window.getActivePage(); + + IEditorDescriptor desc = PlatformUI.getWorkbench() + .getEditorRegistry().getDefaultEditor(f.getName()); + + try { + IEditorPart part = page.openEditor(new FileEditorInput(f), + desc.getId()); + if (part instanceof BMotionStudioEditor) { + activeEditor = (BMotionStudioEditor) part; + } else { + // TODO: Return some useful error?! + return null; + } + } catch (PartInitException e) { + e.printStackTrace(); + } + + // Get ProB Animator + Animator animator = Animator.getAnimator(); + + // Open Run Perspective + IWorkbench workbench = PlatformUI.getWorkbench(); + try { + workbench.showPerspective( + "de.bmotionstudio.perspective.run", + workbench.getActiveWorkbenchWindow()); + } catch (WorkbenchException e) { + Logger.notifyUser( + "Error opening BMotion Studio Run perspective.", e); + } + + // First, kill old visualization (only if exists) + if (dpb != null) + dpb.kill(); + // Create a new visualization + dpb = new VisualizationProgressBar(Display.getDefault() + .getActiveShell(), animator, activeEditor, f); + dpb.initGuage(); + dpb.open(); + + } + + } + + return null; + + } + + public void selectionChanged(final IAction action, + final ISelection selection) { + fSelection = selection; + } + + protected IFile getBmsFileFromSelection(IStructuredSelection ssel) { + if (ssel.getFirstElement() instanceof IFile) + return (IFile) ssel.getFirstElement(); + return null; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java index 549adbd74d032783c1c88f1a5a16ee82b0482c4b..4054bf990409224fb3e80c7652aaf57ec4abbeb5 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/internal/VisualizationProgressBar.java @@ -1,288 +1,289 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.internal; - -import java.io.IOException; -import java.util.List; -import java.util.Locale; - -import javax.xml.parsers.ParserConfigurationException; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtension; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; -import org.xml.sax.SAXException; - -import com.thoughtworks.xstream.XStream; -import com.thoughtworks.xstream.io.xml.DomDriver; -import com.thoughtworks.xstream.mapper.MapperWrapper; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.BMotionStudioEditor; -import de.bmotionstudio.gef.editor.ILanguageService; -import de.bmotionstudio.gef.editor.model.Visualization; -import de.prob.core.Animator; -import de.prob.core.command.ExecuteOperationCommand; -import de.prob.core.domainobjects.Operation; -import de.prob.exceptions.ProBException; - -public class VisualizationProgressBar extends ProgressBarDialog { - - private Animator animator; - private IFile f; - private Visualization visualization; - private Animation animation; - private int confirm = -1; - private SelectOperationDialog dialog; - private BMotionStudioEditor activeEditor; - - public VisualizationProgressBar(Shell parent, Animator animator, - BMotionStudioEditor activeEditor, IFile f) { - super(parent); - this.animator = animator; - this.activeEditor = activeEditor; - this.f = f; - } - - @Override - public void initGuage() { - this.setExecuteTime(6); - this.setMayCancel(true); - this.setProcessMessage("Starting Visualization ..."); - this.setShellTitle("Starting Visualization"); - } - - @Override - protected String process(int i) { - - switch (i) { - case 1: - try { - createVisualizationRoot(); - } catch (CoreException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } catch (IOException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } catch (ParserConfigurationException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } catch (SAXException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } - return "Starting ProB Animator"; - case 2: - startProbAnimator(); - return "Setup Constants"; - case 3: - try { - setupOperation("SETUP_CONTEXT"); - } catch (InterruptedException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } - return "Create Visualization"; - case 4: - Display.getDefault().asyncExec(new Runnable() { - public void run() { - createShell(); - } - }); - return "Initialize machine"; - case 5: - try { - setupOperation("INITIALISATION"); - } catch (InterruptedException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } - return "Starting Operation Scheduler"; - case 6: - startOperationScheduler(); - return "Starting Visualization"; - } - - return "Starting BMotion Studio Visualization"; - - } - - private void startOperationScheduler() { - visualization.startOperationScheduler(); - } - - private void createVisualizationRoot() throws CoreException, IOException, - ParserConfigurationException, SAXException { - XStream xstream = new XStream(new DomDriver()) { - @Override - protected MapperWrapper wrapMapper(MapperWrapper next) { - return new MapperWrapper(next) { - @Override - public boolean shouldSerializeMember( - @SuppressWarnings("rawtypes") Class definedIn, - String fieldName) { - if (definedIn == Object.class) { - return false; - } - return super - .shouldSerializeMember(definedIn, fieldName); - } - }; - } - }; - BMotionEditorPlugin.setAliases(xstream); - visualization = (Visualization) xstream.fromXML(f.getContents()); - visualization.setProjectFile(f); - } - - @Override - protected void cleanUp() { - if (animation != null) - animation.unregister(); - } - - private void startProbAnimator() { - animation = new Animation(animator, visualization); - ILanguageService langService = getGenericLoadMachine(visualization - .getLanguage()); - if (langService != null) { - try { - langService.startProBAnimator(visualization); - } catch (ProBException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } - } else { - openErrorDialog("Unknown formal language: " - + visualization.getLanguage()); - setClose(true); - } - } - - private void setupOperation(String opName) throws InterruptedException { - - final List<Operation> ops = animation.getState().getEnabledOperations(); - - if (ops.size() > 1) { - - Display.getDefault().asyncExec(new Runnable() { - public void run() { - dialog = new SelectOperationDialog(getShell(), ops); - confirm = dialog.open(); - } - }); - - while (true) { - try { - Thread.sleep(500); - } catch (InterruptedException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } - - if (confirm == Window.OK) { - Operation op = dialog.getSelectedOperation(); - if (op != null) - try { - ExecuteOperationCommand.executeOperation(animator, - op); - } catch (ProBException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } - confirm = -1; - break; - } else if (confirm == Window.CANCEL) { - setClose(true); - confirm = -1; - break; - } - - } - - } else { - Operation op = animation.getCurrentStateOperation(opName); - if (op != null) - try { - ExecuteOperationCommand.executeOperation(animator, op); - } catch (ProBException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } - } - - visualization.setIsRunning(true); - - } - - private void createShell() { - activeEditor.createRunPage(visualization, animation); - } - - private ILanguageService getGenericLoadMachine(String language) { - IExtensionRegistry registry = Platform.getExtensionRegistry(); - IExtensionPoint extensionPoint = registry - .getExtensionPoint("de.bmotionstudio.gef.editor.language"); - ILanguageService langService = null; - - // Get GenericLoadMachine command for language - for (IExtension extension : extensionPoint.getExtensions()) { - for (IConfigurationElement configurationElement : extension - .getConfigurationElements()) { - - if ("language".equals(configurationElement.getName())) { - - String languageEx = configurationElement.getAttribute("id"); - if (language.toLowerCase(Locale.ENGLISH).equals( - languageEx.toLowerCase(Locale.ENGLISH))) { - - try { - langService = (ILanguageService) configurationElement - .createExecutableExtension("service"); - } catch (final CoreException e) { - openErrorDialog(e.getMessage()); - setClose(true); - } - - } - - } - - } - } - return langService; - } - - public void kill() { - // if (shell != null) - // if (shell.getShell() != null) - // shell.getShell().dispose(); - } - - public void openErrorDialog(final String msg) { - Display.getDefault().asyncExec(new Runnable() { - public void run() { - ErrorDialog.openError(getParent(), "Error", - "Error creating visualization", new Status( - IStatus.ERROR, BMotionEditorPlugin.PLUGIN_ID, - msg)); - } - }); - } - +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.internal; + +import java.io.IOException; +import java.util.List; +import java.util.Locale; + +import javax.xml.parsers.ParserConfigurationException; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtension; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.ErrorDialog; +import org.eclipse.jface.window.Window; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.xml.sax.SAXException; + +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.xml.DomDriver; +import com.thoughtworks.xstream.mapper.MapperWrapper; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.BMotionStudioEditor; +import de.bmotionstudio.gef.editor.ILanguageService; +import de.bmotionstudio.gef.editor.model.Visualization; +import de.prob.core.Animator; +import de.prob.core.command.ExecuteOperationCommand; +import de.prob.core.domainobjects.Operation; +import de.prob.exceptions.ProBException; + +public class VisualizationProgressBar extends ProgressBarDialog { + + private Animator animator; + private IFile f; + private Visualization visualization; + private Animation animation; + private int confirm = -1; + private SelectOperationDialog dialog; + private BMotionStudioEditor activeEditor; + + public VisualizationProgressBar(Shell parent, Animator animator, + BMotionStudioEditor activeEditor, IFile f) { + super(parent); + this.animator = animator; + this.activeEditor = activeEditor; + this.f = f; + } + + @Override + public void initGuage() { + this.setExecuteTime(6); + this.setMayCancel(true); + this.setProcessMessage("Starting Visualization ..."); + this.setShellTitle("Starting Visualization"); + } + + @Override + protected String process(int i) { + + switch (i) { + case 1: + try { + createVisualizationRoot(); + } catch (CoreException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } catch (IOException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } catch (ParserConfigurationException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } catch (SAXException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } + return "Starting ProB Animator"; + case 2: + startProbAnimator(); + return "Setup Constants"; + case 3: + try { + setupOperation("SETUP_CONTEXT"); + } catch (InterruptedException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } + return "Create Visualization"; + case 4: + Display.getDefault().asyncExec(new Runnable() { + public void run() { + createShell(); + } + }); + return "Initialize machine"; + case 5: + try { + setupOperation("INITIALISATION"); + } catch (InterruptedException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } + return "Starting Operation Scheduler"; + case 6: + startOperationScheduler(); + return "Starting Visualization"; + } + + return "Starting BMotion Studio Visualization"; + + } + + private void startOperationScheduler() { + visualization.startOperationScheduler(); + } + + private void createVisualizationRoot() throws CoreException, IOException, + ParserConfigurationException, SAXException { + XStream xstream = new XStream(new DomDriver()) { + @Override + protected MapperWrapper wrapMapper(MapperWrapper next) { + return new MapperWrapper(next) { + @Override + public boolean shouldSerializeMember( + @SuppressWarnings("rawtypes") Class definedIn, + String fieldName) { + if (definedIn == Object.class) { + return false; + } + return super + .shouldSerializeMember(definedIn, fieldName); + } + }; + } + }; + BMotionEditorPlugin.setAliases(xstream); + visualization = (Visualization) xstream.fromXML(f.getContents()); + visualization.setProjectFile(f); + } + + @Override + protected void cleanUp() { + if (animation != null) + animation.unregister(); + } + + private void startProbAnimator() { + animation = new Animation(animator, visualization); + ILanguageService langService = getGenericLoadMachine(visualization + .getLanguage()); + if (langService != null) { + try { + langService.startProBAnimator(visualization); + } catch (ProBException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } + } else { + openErrorDialog("Unknown formal language: " + + visualization.getLanguage()); + setClose(true); + } + } + + private void setupOperation(String opName) throws InterruptedException { + + final List<Operation> ops = animation.getState().getEnabledOperations(); + + if (ops.size() > 1) { + + Display.getDefault().asyncExec(new Runnable() { + public void run() { + dialog = new SelectOperationDialog(getShell(), ops); + confirm = dialog.open(); + } + }); + + while (true) { + try { + Thread.sleep(500); + } catch (InterruptedException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } + + if (confirm == Window.OK) { + Operation op = dialog.getSelectedOperation(); + if (op != null) + try { + ExecuteOperationCommand.executeOperation(animator, + op); + } catch (ProBException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } + confirm = -1; + break; + } else if (confirm == Window.CANCEL) { + setClose(true); + confirm = -1; + break; + } + + } + + } else { + Operation op = animation.getCurrentStateOperation(opName); + if (op != null) + try { + ExecuteOperationCommand.executeOperation(animator, op); + } catch (ProBException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } + } + + visualization.setIsRunning(true); + + } + + private void createShell() { + activeEditor.createRunPage(visualization, animation); + } + + private ILanguageService getGenericLoadMachine(String language) { + IExtensionRegistry registry = Platform.getExtensionRegistry(); + IExtensionPoint extensionPoint = registry + .getExtensionPoint("de.bmotionstudio.gef.editor.language"); + ILanguageService langService = null; + + // Get GenericLoadMachine command for language + for (IExtension extension : extensionPoint.getExtensions()) { + for (IConfigurationElement configurationElement : extension + .getConfigurationElements()) { + + if ("language".equals(configurationElement.getName())) { + + String languageEx = configurationElement.getAttribute("id"); + if (language.toLowerCase(Locale.ENGLISH).equals( + languageEx.toLowerCase(Locale.ENGLISH))) { + + try { + langService = (ILanguageService) configurationElement + .createExecutableExtension("service"); + } catch (final CoreException e) { + openErrorDialog(e.getMessage()); + setClose(true); + } + + } + + } + + } + } + return langService; + } + + public void kill() { + // if (shell != null) + // if (shell.getShell() != null) + // shell.getShell().dispose(); + } + + public void openErrorDialog(final String msg) { + Display.getDefault().asyncExec(new Runnable() { + public void run() { + ErrorDialog.openError(getParent(), "Error", + "Error creating visualization", new Status( + IStatus.ERROR, BMotionEditorPlugin.PLUGIN_ID, + msg)); + } + }); + } + } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryObject.java index 25ae33b0adc6efd18ccd05eb6e2c260401c7b590..d84a1cf87b4cbf5ede40061f826d4574808fc3b5 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryObject.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryObject.java @@ -1,54 +1,54 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.library; - -import org.eclipse.swt.graphics.Image; - -public class LibraryObject { - - private String name; - private String type; - private Image typeImage; - - public LibraryObject(String name, String type, Image typeImage) { - this.name = name; - this.type = type; - this.typeImage = typeImage; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public void setImage(Image image) { - this.typeImage = image; - } - - public Image getImage() { - return typeImage; - } - - public void delete(LibraryPage page) { - } - - public Image getPreview(LibraryPage page) { - return null; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.library; + +import org.eclipse.swt.graphics.Image; + +public class LibraryObject { + + private String name; + private String type; + private Image typeImage; + + public LibraryObject(String name, String type, Image typeImage) { + this.name = name; + this.type = type; + this.typeImage = typeImage; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public void setImage(Image image) { + this.typeImage = image; + } + + public Image getImage() { + return typeImage; + } + + public void delete(LibraryPage page) { + } + + public Image getPreview(LibraryPage page) { + return null; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryView.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryView.java index 08240a63b7a45fd3e70872f75bd61fbefeb93742..962029267cbb388066a6e8dad0d927d75f098eb8 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryView.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/library/LibraryView.java @@ -1,76 +1,76 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.library; - -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.part.IPage; -import org.eclipse.ui.part.MessagePage; -import org.eclipse.ui.part.PageBook; -import org.eclipse.ui.part.PageBookView; - -import de.bmotionstudio.gef.editor.BMotionStudioEditor; - -public class LibraryView extends PageBookView { - - public static String ID = "de.bmotionstudio.gef.editor.LibraryView"; - - private String defaultText = "A library is not available."; - - private LibraryPage page; - - public LibraryView() { - super(); - } - - @Override - protected IPage createDefaultPage(PageBook book) { - MessagePage page = new MessagePage(); - initPage(page); - page.createControl(book); - page.setMessage(defaultText); - return page; - } - - @Override - protected PageRec doCreatePage(IWorkbenchPart part) { - if (part instanceof BMotionStudioEditor) { - page = new LibraryPage((BMotionStudioEditor) part); - initPage(page); - page.createControl(getPageBook()); - return new PageRec(part, page); - } - return null; - } - - @Override - protected void doDestroyPage(IWorkbenchPart part, PageRec rec) { - LibraryPage page = (LibraryPage) rec.page; - page.dispose(); - rec.dispose(); - } - - @Override - protected IWorkbenchPart getBootstrapPart() { - IWorkbenchPage page = getSite().getPage(); - if (page != null) { - return page.getActiveEditor(); - } - return null; - } - - public void partBroughtToTop(IWorkbenchPart part) { - partActivated(part); - } - - @Override - protected boolean isImportant(IWorkbenchPart part) { - return (part instanceof IEditorPart); - } - +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.library; + +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.part.IPage; +import org.eclipse.ui.part.MessagePage; +import org.eclipse.ui.part.PageBook; +import org.eclipse.ui.part.PageBookView; + +import de.bmotionstudio.gef.editor.BMotionStudioEditor; + +public class LibraryView extends PageBookView { + + public static String ID = "de.bmotionstudio.gef.editor.LibraryView"; + + private String defaultText = "A library is not available."; + + private LibraryPage page; + + public LibraryView() { + super(); + } + + @Override + protected IPage createDefaultPage(PageBook book) { + MessagePage page = new MessagePage(); + initPage(page); + page.createControl(book); + page.setMessage(defaultText); + return page; + } + + @Override + protected PageRec doCreatePage(IWorkbenchPart part) { + if (part instanceof BMotionStudioEditor) { + page = new LibraryPage((BMotionStudioEditor) part); + initPage(page); + page.createControl(getPageBook()); + return new PageRec(part, page); + } + return null; + } + + @Override + protected void doDestroyPage(IWorkbenchPart part, PageRec rec) { + LibraryPage page = (LibraryPage) rec.page; + page.dispose(); + rec.dispose(); + } + + @Override + protected IWorkbenchPart getBootstrapPart() { + IWorkbenchPage page = getSite().getPage(); + if (page != null) { + return page.getActiveEditor(); + } + return null; + } + + public void partBroughtToTop(IWorkbenchPart part) { + partActivated(part); + } + + @Override + protected boolean isImportant(IWorkbenchPart part) { + return (part instanceof IEditorPart); + } + } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BButton.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BButton.java index 1d7958ee2bb041eeaef9bfac480b569d976851d4..4e504fe9f8b582312cfad166c773d3062fcec261 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BButton.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BButton.java @@ -8,6 +8,7 @@ package de.bmotionstudio.gef.editor.model; import org.eclipse.swt.graphics.RGB; +import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor; import de.bmotionstudio.gef.editor.attribute.BAttributeEnabled; import de.bmotionstudio.gef.editor.attribute.BAttributeText; @@ -38,6 +39,8 @@ public class BButton extends BControl { initAttribute(new BAttributeBackgroundColor(new RGB(192, 192, 192))); initAttribute(new BAttributeTextColor(new RGB(0, 0, 0))); initAttribute(new BAttributeEnabled(true)); + getAttribute(AttributeConstants.ATTRIBUTE_HEIGHT).setValue(25); + getAttribute(AttributeConstants.ATTRIBUTE_WIDTH).setValue(100); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java index 37df8512aa391cdd03e502b9091e0624e71c6786..0af0557d5e5d946e0e4a40d39b66a0dbc0f764d6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BControl.java @@ -1,760 +1,774 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.model; - -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.UUID; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.draw2d.geometry.Dimension; -import org.eclipse.draw2d.geometry.Point; -import org.eclipse.draw2d.geometry.Rectangle; -import org.eclipse.ui.views.properties.IPropertySource; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.IBControlService; -import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; -import de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates; -import de.bmotionstudio.gef.editor.attribute.BAttributeCustom; -import de.bmotionstudio.gef.editor.attribute.BAttributeHeight; -import de.bmotionstudio.gef.editor.attribute.BAttributeID; -import de.bmotionstudio.gef.editor.attribute.BAttributeSize; -import de.bmotionstudio.gef.editor.attribute.BAttributeVisible; -import de.bmotionstudio.gef.editor.attribute.BAttributeWidth; -import de.bmotionstudio.gef.editor.attribute.BAttributeX; -import de.bmotionstudio.gef.editor.attribute.BAttributeY; -import de.bmotionstudio.gef.editor.internal.Animation; -import de.bmotionstudio.gef.editor.internal.BControlPropertySource; -import de.bmotionstudio.gef.editor.observer.IObserverListener; -import de.bmotionstudio.gef.editor.observer.Observer; -import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; - -/** - * - * A Control is a graphical representation of some aspects of the model. - * Typically we use labels, images or buttons to represent informations. For - * instance, if we model a system that has a temperature and a threshold - * temperature that triggers a cool down, we might simply use two labels - * displaying both values, or maybe we can incorporate both information into a - * gauge display. It is also possible to define new controls for domain specific - * visualizations. - * - * @author Lukas Ladenberger - * - */ -public abstract class BControl implements IAdaptable, Cloneable { - - /** The type of the control (e.g. label, button ...) */ - protected String type; - - private transient Rectangle layout = null; - - private transient Point location = null; - - private BControlList children; - - private Map<String, Observer> observers; - - private Map<String, SchedulerEvent> events; - - private Map<String, AbstractAttribute> attributes; - - /** - * Since the parent is set via the method readResolve(), we mark the - * variable as transient - */ - private transient BControl parent; - - private transient Visualization visualization; - - private transient PropertyChangeSupport listeners; - - private transient ArrayList<IObserverListener> observerListener; - - private BMotionGuide verticalGuide, horizontalGuide; - - /** List of outgoing Connections. */ - private List<BConnection> sourceConnections; - /** List of incoming Connections. */ - private List<BConnection> targetConnections; - - public static final transient String PROPERTY_LAYOUT = "NodeLayout"; - public static final transient String PROPERTY_LOCATION = "NodeLocation"; - public static final transient String PROPERTY_ADD = "NodeAddChild"; - public static final transient String PROPERTY_REMOVE = "NodeRemoveChild"; - public static final transient String PROPERTY_RENAME = "NodeRename"; - /** Property ID to use when the list of outgoing connections is modified. */ - public static final String SOURCE_CONNECTIONS_PROP = "BMS.SourceConn"; - /** Property ID to use when the list of incoming connections is modified. */ - public static final String TARGET_CONNECTIONS_PROP = "BMS.TargetConn"; - - public BControl(Visualization visualization) { - this.visualization = visualization; - this.children = new BControlList(); - this.observers = new HashMap<String, Observer>(); - this.events = new HashMap<String, SchedulerEvent>(); - this.attributes = new HashMap<String, AbstractAttribute>(); - this.listeners = new PropertyChangeSupport(this); - this.observerListener = new ArrayList<IObserverListener>(); - this.sourceConnections = new ArrayList<BConnection>(); - this.targetConnections = new ArrayList<BConnection>(); - init(); - } - - protected Object readResolve() { - // Populate parent - for (BControl child : getChildrenArray()) - child.setParent(this); - return this; - } - - /** - * Remove an incoming or outgoing connection from this shape. - * - * @param conn - * a non-null connection instance - * @throws IllegalArgumentException - * if the parameter is null - */ - public void removeConnection(BConnection conn) { - if (conn == null) { - throw new IllegalArgumentException(); - } - if (conn.getSource() == this) { - getSourceConnections().remove(conn); - getListeners().firePropertyChange(SOURCE_CONNECTIONS_PROP, null, - conn); - } else if (conn.getTarget() == this) { - getTargetConnections().remove(conn); - getListeners().firePropertyChange(TARGET_CONNECTIONS_PROP, null, - conn); - } - } - - /** - * Add an incoming or outgoing connection to this shape. - * - * @param conn - * a non-null connection instance - * @throws IllegalArgumentException - * if the connection is null or has not distinct endpoints - */ - public void addConnection(BConnection conn) { - if (conn == null || conn.getSource() == conn.getTarget()) { - throw new IllegalArgumentException(); - } - conn.setVisualization(getVisualization()); - if (conn.getSource() == this) { - getSourceConnections().add(conn); - getListeners().firePropertyChange(SOURCE_CONNECTIONS_PROP, null, - conn); - } else if (conn.getTarget() == this) { - getTargetConnections().add(conn); - getListeners().firePropertyChange(TARGET_CONNECTIONS_PROP, null, - conn); - } - } - - private void init() { - - // Init ID - String ID; - if (this instanceof Visualization) - ID = "visualization"; - else if (visualization == null) - ID = UUID.randomUUID().toString(); - else - ID = (visualization.getMaxIDString(type)); - initAttribute(new BAttributeID(ID), AbstractAttribute.ROOT); - - // Init location and dimension attributes - BAttributeCoordinates coordinatesAtr = new BAttributeCoordinates(null); - initAttribute(coordinatesAtr, AbstractAttribute.ROOT); - initAttribute(new BAttributeX(100), coordinatesAtr); - initAttribute(new BAttributeY(100), coordinatesAtr); - - BAttributeSize sizeAtr = new BAttributeSize(null); - initAttribute(sizeAtr, AbstractAttribute.ROOT); - initAttribute(new BAttributeWidth(100), sizeAtr); - initAttribute(new BAttributeHeight(100), sizeAtr); - - // Init visible and this attribute - initAttribute(new BAttributeVisible(true), AbstractAttribute.ROOT); - initAttribute(new BAttributeCustom(""), AbstractAttribute.ROOT); - - // Init custom control attributes - initAttributes(); - - } - - protected abstract void initAttributes(); - - public String getID() { - return getAttributeValue(AttributeConstants.ATTRIBUTE_ID).toString(); - } - - public AbstractAttribute getAttribute(String attributeID) { - return getAttributes().get(attributeID); - } - - public Object getAttributeValue(String attributeID) { - - AbstractAttribute atr = attributes.get(attributeID); - - if (atr != null) { - return atr.getValue(); - } else { - // TODO: handle error/exception (no such attribute) - return null; - } - - } - - public boolean setAttributeValue(String attributeID, Object value) { - return setAttributeValue(attributeID, value, true); - } - - public boolean setAttributeValue(String attributeID, Object value, - Boolean firePropertyChange) { - - AbstractAttribute atr = attributes.get(attributeID); - - if (atr == null) { - return false; - // TODO: Throw some error!?! - } - - atr.setControl(this); - - if ((atr.getValue() != null && atr.getValue().equals(value)) - || !atr.isEditable()) - return true; - - atr.setValue(value, firePropertyChange); - - return true; - - } - - public void restoreDefaultValue(String attributeID) { - AbstractAttribute atr = attributes.get(attributeID); - if (atr != null) { - atr.restoreValue(); - Object oldVal = atr.getValue(); - Object initValue = atr.getInitValue(); - getListeners().firePropertyChange(attributeID, oldVal, initValue); - } - } - - public boolean hasAttribute(String attributeID) { - return attributes.containsKey(attributeID); - } - - public void setLayout(Rectangle newLayout) { - Rectangle oldLayout = getLayout(); - layout = newLayout; - setAttributeValue(AttributeConstants.ATTRIBUTE_X, newLayout.x, false); - setAttributeValue(AttributeConstants.ATTRIBUTE_Y, newLayout.y, false); - setAttributeValue(AttributeConstants.ATTRIBUTE_WIDTH, newLayout.width, - false); - setAttributeValue(AttributeConstants.ATTRIBUTE_HEIGHT, - newLayout.height, false); - getListeners() - .firePropertyChange(PROPERTY_LAYOUT, oldLayout, newLayout); - } - - public Rectangle getLayout() { - int width = Integer.valueOf(getAttributeValue( - AttributeConstants.ATTRIBUTE_WIDTH).toString()); - int height = Integer.valueOf(getAttributeValue( - AttributeConstants.ATTRIBUTE_HEIGHT).toString()); - int x = Integer.valueOf(getAttributeValue( - AttributeConstants.ATTRIBUTE_X).toString()); - int y = Integer.valueOf(getAttributeValue( - AttributeConstants.ATTRIBUTE_Y).toString()); - if (layout == null) { - layout = new Rectangle(x, y, width, height); - } else { - layout.x = x; - layout.y = y; - layout.width = width; - layout.height = height; - } - return layout; - } - - public void setLocation(Point newLocation) { - Point oldLocation = getLocation(); - location = newLocation; - setAttributeValue(AttributeConstants.ATTRIBUTE_X, newLocation.x, false); - setAttributeValue(AttributeConstants.ATTRIBUTE_Y, newLocation.y, false); - getListeners().firePropertyChange(PROPERTY_LOCATION, oldLocation, - newLocation); - } - - public Point getLocation() { - int x = Integer.valueOf(getAttributeValue( - AttributeConstants.ATTRIBUTE_X).toString()); - int y = Integer.valueOf(getAttributeValue( - AttributeConstants.ATTRIBUTE_Y).toString()); - if (location == null) { - location = new Point(x, y); - } else { - location.x = x; - location.y = y; - } - return location; - } - - public Dimension getDimension() { - int width = Integer.valueOf(getAttributeValue( - AttributeConstants.ATTRIBUTE_WIDTH).toString()); - int height = Integer.valueOf(getAttributeValue( - AttributeConstants.ATTRIBUTE_HEIGHT).toString()); - return new Dimension(width, height); - } - - public void addChild(BControl child) { - addChild(child, -1); - } - - public void addChild(BControl child, int index) { - child.setParent(this); - if (index >= 0) { - children.add(index, child); - } else { - children.add(child); - } - getListeners().firePropertyChange(PROPERTY_ADD, index, child); - } - - public boolean removeChild(BControl child) { - boolean b = children.remove(child); - if (b) - getListeners().firePropertyChange(PROPERTY_REMOVE, child, null); - return b; - } - - public List<BControl> getChildrenArray() { - if (children == null) - children = new BControlList(); - return children; - } - - public void setChildrenArray(BControlList children) { - this.children = children; - } - - public boolean hasChildren() { - return children.size() > 0; - } - - public BControl getChild(String ID) { - for (BControl bcontrol : children) { - String bcontrolID = bcontrol.getAttributeValue( - AttributeConstants.ATTRIBUTE_ID).toString(); - if (bcontrolID != null) { - if (bcontrolID.equals(ID)) - return bcontrol; - } - } - return null; - } - - public Map<String, Observer> getObservers() { - if (observers == null) - observers = new HashMap<String, Observer>(); - return observers; - } - - public Observer getObserver(String observerID) { - return this.observers.get(observerID); - } - - public Boolean hasObserver(String ID) { - if (getObservers().containsKey(ID)) - return true; - return false; - } - - public void addObserver(Observer observer) { - observers.put(observer.getID(), (Observer) observer); - for (IObserverListener listener : getObserverListener()) { - listener.addedObserver(this, observer); - } - } - - public void removeObserver(String observerID) { - if (hasObserver(observerID)) - observers.get(observerID).beforeDelete(this); - observers.remove(observerID); - for (IObserverListener listener : getObserverListener()) { - listener.removedObserver(this); - } - } - - public Map<String, SchedulerEvent> getEvents() { - if (events == null) - events = new HashMap<String, SchedulerEvent>(); - return events; - } - - public SchedulerEvent getEvent(String ID) { - return events.get(ID); - } - - public Boolean hasEvent(String ID) { - if (getEvents().containsKey(ID)) - return true; - return false; - } - - public void addEvent(String eventID, SchedulerEvent schedulerEvent) { - events.put(eventID, schedulerEvent); - } - - public void removeEvent(String eventID) { - if (hasEvent(eventID)) - events.get(eventID).beforeDelete(this); - events.remove(eventID); - } - - public Map<String, AbstractAttribute> getAttributes() { - return attributes; - } - - public void setAttributes(Map<String, AbstractAttribute> attributes) { - this.attributes = attributes; - } - - public void setParent(BControl parent) { - this.parent = parent; - } - - public BControl getParent() { - return this.parent; - } - - public void addPropertyChangeListener(PropertyChangeListener listener) { - getListeners().addPropertyChangeListener(listener); - } - - public PropertyChangeSupport getListeners() { - if (listeners == null) - listeners = new PropertyChangeSupport(this); - return listeners; - } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - getListeners().removePropertyChangeListener(listener); - } - - public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) { - if (adapter == IPropertySource.class) { - return new BControlPropertySource(this); - } - return null; - } - - public boolean contains(BControl child) { - return children.contains(child); - } - - public String getDefaultValue(String attributeID) { - - IConfigurationElement configurationElement = BMotionEditorPlugin - .getControlExtension(getType()); - - if (configurationElement != null) { - - for (final IConfigurationElement configBAttributes : configurationElement - .getChildren("attributes")) { - - for (final IConfigurationElement configBAttribute : configBAttributes - .getChildren("attribute-string")) { - - String aID = configBAttribute.getAttribute("id"); - - if (aID.equals(attributeID)) { - String attributeDefaultValue = configBAttribute - .getAttribute("default-value"); - - return attributeDefaultValue; - } - - } - - } - - } - - return null; - - } - - public Boolean isAttributeEditable(String attributeID) { - - IConfigurationElement configurationElement = BMotionEditorPlugin - .getControlExtension(getType()); - - if (configurationElement != null) { - - for (final IConfigurationElement configBAttributes : configurationElement - .getChildren("attributes")) { - - for (final IConfigurationElement configBAttribute : configBAttributes - .getChildren("attribute-string")) { - - String aID = configBAttribute.getAttribute("id"); - - if (aID.equals(attributeID)) { - String val = configBAttribute.getAttribute("editable"); - return Boolean.valueOf(val); - } - - } - - } - - } - - return false; - - } - - public Visualization getVisualization() { - return visualization; - } - - public void setVisualization(Visualization visualization) { - this.visualization = visualization; - } - - protected void populateVisualization(Visualization visualization) { - // Populate visualization node - setVisualization(visualization); - for (BControl child : getChildrenArray()) - child.populateVisualization(visualization); - for (BConnection con : getTargetConnections()) - con.populateVisualization(visualization); - for (BConnection con : getSourceConnections()) - con.populateVisualization(visualization); - } - - @Override - public BControl clone() throws CloneNotSupportedException { - - BControl clonedControl = (BControl) super.clone(); - - IConfigurationElement configElement = BMotionEditorPlugin - .getControlServices().get(getType()); - if (configElement != null) { - - try { - - IBControlService service = (IBControlService) configElement - .createExecutableExtension("service"); - clonedControl = service.createControl(visualization); - - clonedControl.setParent(getParent()); - - String newID = clonedControl.getID(); - - Map<String, AbstractAttribute> newProperties = new HashMap<String, AbstractAttribute>(); - for (Entry<String, AbstractAttribute> e : getAttributes() - .entrySet()) { - AbstractAttribute idAtr = e.getValue().clone(); - newProperties.put(e.getKey(), idAtr); - } - - clonedControl.setAttributes(newProperties); - clonedControl.setAttributeValue( - AttributeConstants.ATTRIBUTE_ID, newID); - - Iterator<BControl> it = getChildrenArray().iterator(); - while (it.hasNext()) { - clonedControl.addChild(((BControl) it.next()).clone()); - } - - for (Observer observer : observers.values()) { - clonedControl.addObserver(observer.clone()); - } - - for (Map.Entry<String, SchedulerEvent> e : events.entrySet()) { - clonedControl.addEvent(e.getKey(), e.getValue().clone()); - } - - } catch (CoreException e) { - e.printStackTrace(); - } - - } - - return clonedControl; - - } - - public void checkObserver(final Animation animation) { - - // Check all Observers - for (Observer observer : getObservers().values()) { - observer.check(animation, BControl.this); - } - - // TODO: Currently connection observer are checked twice (source + - // target) => change this, so that observer are checked only on time per - // state!!! - for (BConnection con : getSourceConnections()) { - con.checkObserver(animation); - } - for (BConnection con : getTargetConnections()) { - con.checkObserver(animation); - } - - // Check Observers of children - if (getChildrenArray().size() > 0) { - for (BControl bcontrol : getChildrenArray()) { - bcontrol.checkObserver(animation); - } - } - - } - - public void afterCheckObserver(Animation animation) { - // Check all Observers - for (Observer observer : getObservers().values()) { - observer.afterCheck(animation, this); - } - // Check Observers of children - if (getChildrenArray().size() > 0) { - for (BControl bcontrol : getChildrenArray()) { - bcontrol.afterCheckObserver(animation); - } - } - } - - public void executeEvent(String eventID) { - if (hasAttribute(AttributeConstants.ATTRIBUTE_ENABLED)) { - if (!(Boolean) getAttributeValue(AttributeConstants.ATTRIBUTE_ENABLED)) - return; - } - SchedulerEvent e = getEvents().get(eventID); - if (e != null) - e.execute(getVisualization().getAnimation(), this); - } - - public void setVerticalGuide(BMotionGuide verticalGuide) { - this.verticalGuide = verticalGuide; - } - - public BMotionGuide getVerticalGuide() { - return verticalGuide; - } - - public void setHorizontalGuide(BMotionGuide horizontalGuide) { - this.horizontalGuide = horizontalGuide; - } - - public BMotionGuide getHorizontalGuide() { - return horizontalGuide; - } - - /** - * @return the observerListener - */ - public ArrayList<IObserverListener> getObserverListener() { - if (observerListener == null) - observerListener = new ArrayList<IObserverListener>(); - return observerListener; - } - - public void addObserverListener(IObserverListener listener) { - getObserverListener().add(listener); - } - - public void removeObserverListener(IObserverListener listener) { - getObserverListener().remove(listener); - } - - /** - * Return a List of outgoing Connections. - */ - public List<BConnection> getSourceConnections() { - if (this.sourceConnections == null) - this.sourceConnections = new ArrayList<BConnection>(); - return this.sourceConnections; - } - - public void setSourceConnections(List<BConnection> connections) { - this.sourceConnections = connections; - } - - public void setTargetConnections(List<BConnection> connections) { - this.targetConnections = connections; - } - - /** - * Return a List of incoming Connections. - */ - public List<BConnection> getTargetConnections() { - if (this.targetConnections == null) - this.targetConnections = new ArrayList<BConnection>(); - return this.targetConnections; - } - - public boolean hasConnections() { - return !getTargetConnections().isEmpty() - || !getSourceConnections().isEmpty(); - } - - public boolean showInOutlineView() { - return true; - } - - public void setObserverMap(Map<String, Observer> observerMap) { - observers = observerMap; - } - - public void setEventMap(Map<String, SchedulerEvent> eventMap) { - events = eventMap; - } - - public abstract String getType(); - - protected void initAttribute(AbstractAttribute atr) { - getAttributes().put(atr.getID(), atr); - } - - protected void initAttribute(AbstractAttribute atr, AbstractAttribute group) { - initAttribute(atr, group.getClass().getName()); - } - - protected void initAttribute(AbstractAttribute atr, String group) { - atr.setGroup(group); - initAttribute(atr); - } - - public boolean canHaveChildren() { - return false; - } - - public String getValueOfData() { - return getAttributeValue(AttributeConstants.ATTRIBUTE_CUSTOM) - .toString(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.model; + +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.UUID; + +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.draw2d.geometry.Dimension; +import org.eclipse.draw2d.geometry.Point; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.views.properties.IPropertySource; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.BMotionStudioImage; +import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; +import de.bmotionstudio.gef.editor.attribute.BAttributeCoordinates; +import de.bmotionstudio.gef.editor.attribute.BAttributeCustom; +import de.bmotionstudio.gef.editor.attribute.BAttributeHeight; +import de.bmotionstudio.gef.editor.attribute.BAttributeID; +import de.bmotionstudio.gef.editor.attribute.BAttributeSize; +import de.bmotionstudio.gef.editor.attribute.BAttributeVisible; +import de.bmotionstudio.gef.editor.attribute.BAttributeWidth; +import de.bmotionstudio.gef.editor.attribute.BAttributeX; +import de.bmotionstudio.gef.editor.attribute.BAttributeY; +import de.bmotionstudio.gef.editor.internal.BControlPropertySource; +import de.bmotionstudio.gef.editor.observer.IObserverListener; +import de.bmotionstudio.gef.editor.observer.Observer; +import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; + +/** + * + * A Control is a graphical representation of some aspects of the model. + * Typically we use labels, images or buttons to represent informations. For + * instance, if we model a system that has a temperature and a threshold + * temperature that triggers a cool down, we might simply use two labels + * displaying both values, or maybe we can incorporate both information into a + * gauge display. It is also possible to define new controls for domain specific + * visualizations. + * + * @author Lukas Ladenberger + * + */ +public abstract class BControl implements IAdaptable, Cloneable { + + /** The type of the control (e.g. label, button ...) */ + protected String type; + + private transient Rectangle layout = null; + + private transient Point location = null; + + private BControlList children; + + private Map<String, Observer> observers; + + private Map<String, SchedulerEvent> events; + + private Map<String, AbstractAttribute> attributes; + + /** + * Since the parent is set via the method readResolve(), we mark the + * variable as transient + */ + private transient BControl parent; + + private transient Visualization visualization; + + private transient PropertyChangeSupport listeners; + + private transient ArrayList<IObserverListener> observerListener; + + private BMotionGuide verticalGuide, horizontalGuide; + + /** List of outgoing Connections. */ + private List<BConnection> sourceConnections; + /** List of incoming Connections. */ + private List<BConnection> targetConnections; + + public static final transient String PROPERTY_LAYOUT = "NodeLayout"; + public static final transient String PROPERTY_LOCATION = "NodeLocation"; + public static final transient String PROPERTY_ADD = "NodeAddChild"; + public static final transient String PROPERTY_REMOVE = "NodeRemoveChild"; + public static final transient String PROPERTY_RENAME = "NodeRename"; + /** Property ID to use when the list of outgoing connections is modified. */ + public static final String SOURCE_CONNECTIONS_PROP = "BMS.SourceConn"; + /** Property ID to use when the list of incoming connections is modified. */ + public static final String TARGET_CONNECTIONS_PROP = "BMS.TargetConn"; + + public BControl(Visualization visualization) { + this.visualization = visualization; + this.children = new BControlList(); + this.observers = new HashMap<String, Observer>(); + this.events = new HashMap<String, SchedulerEvent>(); + this.attributes = new HashMap<String, AbstractAttribute>(); + this.listeners = new PropertyChangeSupport(this); + this.observerListener = new ArrayList<IObserverListener>(); + this.sourceConnections = new ArrayList<BConnection>(); + this.targetConnections = new ArrayList<BConnection>(); + init(); + } + + protected Object readResolve() { + // Populate parent + for (BControl child : getChildrenArray()) + child.setParent(this); + init(); + return this; + } + + /** + * Remove an incoming or outgoing connection from this shape. + * + * @param conn + * a non-null connection instance + * @throws IllegalArgumentException + * if the parameter is null + */ + public void removeConnection(BConnection conn) { + if (conn == null) { + throw new IllegalArgumentException(); + } + if (conn.getSource() == this) { + getSourceConnections().remove(conn); + getListeners().firePropertyChange(SOURCE_CONNECTIONS_PROP, null, + conn); + } else if (conn.getTarget() == this) { + getTargetConnections().remove(conn); + getListeners().firePropertyChange(TARGET_CONNECTIONS_PROP, null, + conn); + } + } + + /** + * Add an incoming or outgoing connection to this shape. + * + * @param conn + * a non-null connection instance + * @throws IllegalArgumentException + * if the connection is null or has not distinct endpoints + */ + public void addConnection(BConnection conn) { + if (conn == null || conn.getSource() == conn.getTarget()) { + throw new IllegalArgumentException(); + } + conn.setVisualization(getVisualization()); + if (conn.getSource() == this) { + getSourceConnections().add(conn); + getListeners().firePropertyChange(SOURCE_CONNECTIONS_PROP, null, + conn); + } else if (conn.getTarget() == this) { + getTargetConnections().add(conn); + getListeners().firePropertyChange(TARGET_CONNECTIONS_PROP, null, + conn); + } + } + + private void init() { + + // Init ID + String ID; + if (this instanceof Visualization) + ID = "visualization"; + else if (visualization == null) + ID = UUID.randomUUID().toString(); + else + ID = (visualization.getMaxIDString(type)); + initAttribute(new BAttributeID(ID), AbstractAttribute.ROOT); + + // Init location and dimension attributes + BAttributeCoordinates coordinatesAtr = new BAttributeCoordinates(null); + initAttribute(coordinatesAtr, AbstractAttribute.ROOT); + initAttribute(new BAttributeX(100), coordinatesAtr); + initAttribute(new BAttributeY(100), coordinatesAtr); + + BAttributeSize sizeAtr = new BAttributeSize(null); + initAttribute(sizeAtr, AbstractAttribute.ROOT); + initAttribute(new BAttributeWidth(100), sizeAtr); + initAttribute(new BAttributeHeight(100), sizeAtr); + + // Init visible and this attribute + initAttribute(new BAttributeVisible(true), AbstractAttribute.ROOT); + initAttribute(new BAttributeCustom(""), AbstractAttribute.ROOT); + + // Init custom control attributes + initAttributes(); + + } + + protected abstract void initAttributes(); + + public String getID() { + return getAttributeValue(AttributeConstants.ATTRIBUTE_ID).toString(); + } + + public AbstractAttribute getAttribute(String attributeID) { + return getAttributes().get(attributeID); + } + + public Object getAttributeValue(String attributeID) { + + AbstractAttribute atr = attributes.get(attributeID); + + if (atr != null) { + return atr.getValue(); + } else { + // TODO: handle error/exception (no such attribute) + return null; + } + + } + + public boolean setAttributeValue(String attributeID, Object value) { + return setAttributeValue(attributeID, value, true, true); + } + + public boolean setAttributeValue(String attributeID, Object value, + Boolean firePropertyChange) { + return setAttributeValue(attributeID, value, firePropertyChange, true); + } + + public boolean setAttributeValue(String attributeID, Object value, + Boolean firePropertyChange, Boolean setInitVal) { + + AbstractAttribute atr = attributes.get(attributeID); + + if (atr == null) { + return false; + // TODO: Throw some error!?! + } + + atr.setControl(this); + + if ((atr.getValue() != null && atr.getValue().equals(value)) + || !atr.isEditable()) + return true; + + atr.setValue(value, firePropertyChange, setInitVal); + + return true; + + } + + public void restoreDefaultValue(String attributeID) { + AbstractAttribute atr = attributes.get(attributeID); + if (atr != null) { + atr.restoreValue(); + Object oldVal = atr.getValue(); + Object initValue = atr.getInitValue(); + getListeners().firePropertyChange(attributeID, oldVal, initValue); + } + } + + public boolean hasAttribute(String attributeID) { + return attributes.containsKey(attributeID); + } + + public void setLayout(Rectangle newLayout) { + Rectangle oldLayout = getLayout(); + layout = newLayout; + setAttributeValue(AttributeConstants.ATTRIBUTE_X, newLayout.x, false); + setAttributeValue(AttributeConstants.ATTRIBUTE_Y, newLayout.y, false); + setAttributeValue(AttributeConstants.ATTRIBUTE_WIDTH, newLayout.width, + false); + setAttributeValue(AttributeConstants.ATTRIBUTE_HEIGHT, + newLayout.height, false); + getListeners() + .firePropertyChange(PROPERTY_LAYOUT, oldLayout, newLayout); + } + + public Rectangle getLayout() { + + String widthStr = getAttributeValue(AttributeConstants.ATTRIBUTE_WIDTH) + .toString(); + String heightStr = getAttributeValue( + AttributeConstants.ATTRIBUTE_HEIGHT).toString(); + String xStr = getAttributeValue(AttributeConstants.ATTRIBUTE_X) + .toString(); + String yStr = getAttributeValue(AttributeConstants.ATTRIBUTE_Y) + .toString(); + + // TODO: check if strings are a correct integers + + try { + + int width = Integer.valueOf(widthStr); + int height = Integer.valueOf(heightStr); + int x = Integer.valueOf(xStr); + int y = Integer.valueOf(yStr); + + if (layout == null) { + layout = new Rectangle(x, y, width, height); + } else { + layout.x = x; + layout.y = y; + layout.width = width; + layout.height = height; + } + + } catch (NumberFormatException e) { + // We ignore number format exceptions, however we should return an + // error message here + // TODO: return error message + } + + return layout; + + } + + public void setLocation(Point newLocation) { + Point oldLocation = getLocation(); + location = newLocation; + setAttributeValue(AttributeConstants.ATTRIBUTE_X, newLocation.x, false); + setAttributeValue(AttributeConstants.ATTRIBUTE_Y, newLocation.y, false); + getListeners().firePropertyChange(PROPERTY_LOCATION, oldLocation, + newLocation); + } + + public Point getLocation() { + int x = Integer.valueOf(getAttributeValue( + AttributeConstants.ATTRIBUTE_X).toString()); + int y = Integer.valueOf(getAttributeValue( + AttributeConstants.ATTRIBUTE_Y).toString()); + if (location == null) { + location = new Point(x, y); + } else { + location.x = x; + location.y = y; + } + return location; + } + + public Dimension getDimension() { + int width = Integer.valueOf(getAttributeValue( + AttributeConstants.ATTRIBUTE_WIDTH).toString()); + int height = Integer.valueOf(getAttributeValue( + AttributeConstants.ATTRIBUTE_HEIGHT).toString()); + return new Dimension(width, height); + } + + public void addChild(BControl child) { + addChild(child, -1); + } + + public void addChild(BControl child, int index) { + child.setParent(this); + if (index >= 0) { + children.add(index, child); + } else { + children.add(child); + } + getListeners().firePropertyChange(PROPERTY_ADD, index, child); + } + + public void removeAllChildren() { + getChildrenArray().clear(); + getListeners().firePropertyChange(PROPERTY_REMOVE, null, null); + } + + public boolean removeChild(int index) { + BControl control = children.get(index); + return removeChild(control); + } + + public boolean removeChild(BControl child) { + boolean b = children.remove(child); + if (b) + getListeners().firePropertyChange(PROPERTY_REMOVE, child, null); + return b; + } + + public List<BControl> getChildrenArray() { + if (children == null) + children = new BControlList(); + return children; + } + + public void setChildrenArray(BControlList children) { + this.children = children; + } + + public boolean hasChildren() { + return children.size() > 0; + } + + public BControl getChild(String ID) { + for (BControl bcontrol : children) { + String bcontrolID = bcontrol.getAttributeValue( + AttributeConstants.ATTRIBUTE_ID).toString(); + if (bcontrolID != null) { + if (bcontrolID.equals(ID)) + return bcontrol; + } + } + return null; + } + + public Map<String, Observer> getObservers() { + if (observers == null) + observers = new HashMap<String, Observer>(); + return observers; + } + + public Observer getObserver(String observerID) { + return this.observers.get(observerID); + } + + public Boolean hasObserver(String ID) { + if (getObservers().containsKey(ID)) + return true; + return false; + } + + public void addObserver(Observer observer) { + observers.put(observer.getID(), (Observer) observer); + for (IObserverListener listener : getObserverListener()) { + listener.addedObserver(this, observer); + } + } + + public void removeObserver(String observerID) { + if (hasObserver(observerID)) + observers.get(observerID).beforeDelete(this); + observers.remove(observerID); + for (IObserverListener listener : getObserverListener()) { + listener.removedObserver(this); + } + } + + public Map<String, SchedulerEvent> getEvents() { + if (events == null) + events = new HashMap<String, SchedulerEvent>(); + return events; + } + + public SchedulerEvent getEvent(String ID) { + return events.get(ID); + } + + public Boolean hasEvent(String ID) { + if (getEvents().containsKey(ID)) + return true; + return false; + } + + public void addEvent(String eventID, SchedulerEvent schedulerEvent) { + events.put(eventID, schedulerEvent); + } + + public void removeEvent(String eventID) { + if (hasEvent(eventID)) + events.get(eventID).beforeDelete(this); + events.remove(eventID); + } + + public Map<String, AbstractAttribute> getAttributes() { + return attributes; + } + + public void setAttributes(Map<String, AbstractAttribute> attributes) { + this.attributes = attributes; + } + + public void setParent(BControl parent) { + this.parent = parent; + } + + public BControl getParent() { + return this.parent; + } + + public void addPropertyChangeListener(PropertyChangeListener listener) { + getListeners().addPropertyChangeListener(listener); + } + + public PropertyChangeSupport getListeners() { + if (listeners == null) + listeners = new PropertyChangeSupport(this); + return listeners; + } + + public void removePropertyChangeListener(PropertyChangeListener listener) { + getListeners().removePropertyChangeListener(listener); + } + + public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) { + if (adapter == IPropertySource.class) { + return new BControlPropertySource(this); + } + return null; + } + + public boolean contains(BControl child) { + return children.contains(child); + } + + public String getDefaultValue(String attributeID) { + + IConfigurationElement configurationElement = BMotionEditorPlugin + .getControlExtension(getType()); + + if (configurationElement != null) { + + for (final IConfigurationElement configBAttributes : configurationElement + .getChildren("attributes")) { + + for (final IConfigurationElement configBAttribute : configBAttributes + .getChildren("attribute-string")) { + + String aID = configBAttribute.getAttribute("id"); + + if (aID.equals(attributeID)) { + String attributeDefaultValue = configBAttribute + .getAttribute("default-value"); + + return attributeDefaultValue; + } + + } + + } + + } + + return null; + + } + + public Boolean isAttributeEditable(String attributeID) { + + IConfigurationElement configurationElement = BMotionEditorPlugin + .getControlExtension(getType()); + + if (configurationElement != null) { + + for (final IConfigurationElement configBAttributes : configurationElement + .getChildren("attributes")) { + + for (final IConfigurationElement configBAttribute : configBAttributes + .getChildren("attribute-string")) { + + String aID = configBAttribute.getAttribute("id"); + + if (aID.equals(attributeID)) { + String val = configBAttribute.getAttribute("editable"); + return Boolean.valueOf(val); + } + + } + + } + + } + + return false; + + } + + public Visualization getVisualization() { + return visualization; + } + + public void setVisualization(Visualization visualization) { + this.visualization = visualization; + } + + protected void populateVisualization(Visualization visualization) { + // Populate visualization node + setVisualization(visualization); + for (BControl child : getChildrenArray()) + child.populateVisualization(visualization); + for (BConnection con : getTargetConnections()) + con.populateVisualization(visualization); + for (BConnection con : getSourceConnections()) + con.populateVisualization(visualization); + } + + @Override + public BControl clone() throws CloneNotSupportedException { + + BControl clonedControl = (BControl) super.clone(); + + clonedControl.setParent(getParent()); + + String newID = clonedControl.getID(); + + Map<String, AbstractAttribute> newProperties = new HashMap<String, AbstractAttribute>(); + for (Entry<String, AbstractAttribute> e : getAttributes().entrySet()) { + AbstractAttribute idAtr = e.getValue().clone(); + newProperties.put(e.getKey(), idAtr); + } + + clonedControl.setAttributes(newProperties); + clonedControl.setAttributeValue(AttributeConstants.ATTRIBUTE_ID, newID); + + clonedControl.setChildrenArray(new BControlList()); + Iterator<BControl> it = getChildrenArray().iterator(); + while (it.hasNext()) { + clonedControl.addChild(((BControl) it.next()).clone()); + } + + clonedControl.setObserverMap(new HashMap<String, Observer>()); + for (Observer observer : observers.values()) { + clonedControl.addObserver(observer.clone()); + } + + clonedControl.setEventMap(new HashMap<String, SchedulerEvent>()); + for (Map.Entry<String, SchedulerEvent> e : events.entrySet()) { + clonedControl.addEvent(e.getKey(), e.getValue().clone()); + } + + clonedControl.listeners = new PropertyChangeSupport(clonedControl); + clonedControl.observerListener = new ArrayList<IObserverListener>(); + + return clonedControl; + + } + + public void checkObserver(final Animation animation) { + + // Check all Observers + for (Observer observer : getObservers().values()) { + observer.check(animation, BControl.this); + } + + // TODO: Currently connection observer are checked twice (source + + // target) => change this, so that observer are checked only on time per + // state!!! + for (BConnection con : getSourceConnections()) { + con.checkObserver(animation); + } + for (BConnection con : getTargetConnections()) { + con.checkObserver(animation); + } + + } + + public void executeEvent(String eventID) { + if (hasAttribute(AttributeConstants.ATTRIBUTE_ENABLED)) { + if (!(Boolean) getAttributeValue(AttributeConstants.ATTRIBUTE_ENABLED)) + return; + } + SchedulerEvent e = getEvents().get(eventID); + if (e != null) + e.execute(getVisualization().getAnimation(), this); + } + + public void setVerticalGuide(BMotionGuide verticalGuide) { + this.verticalGuide = verticalGuide; + } + + public BMotionGuide getVerticalGuide() { + return verticalGuide; + } + + public void setHorizontalGuide(BMotionGuide horizontalGuide) { + this.horizontalGuide = horizontalGuide; + } + + public BMotionGuide getHorizontalGuide() { + return horizontalGuide; + } + + /** + * @return the observerListener + */ + public ArrayList<IObserverListener> getObserverListener() { + if (observerListener == null) + observerListener = new ArrayList<IObserverListener>(); + return observerListener; + } + + public void addObserverListener(IObserverListener listener) { + getObserverListener().add(listener); + } + + public void removeObserverListener(IObserverListener listener) { + getObserverListener().remove(listener); + } + + /** + * Return a List of outgoing Connections. + */ + public List<BConnection> getSourceConnections() { + if (this.sourceConnections == null) + this.sourceConnections = new ArrayList<BConnection>(); + return this.sourceConnections; + } + + public void setSourceConnections(List<BConnection> connections) { + this.sourceConnections = connections; + } + + public void setTargetConnections(List<BConnection> connections) { + this.targetConnections = connections; + } + + /** + * Return a List of incoming Connections. + */ + public List<BConnection> getTargetConnections() { + if (this.targetConnections == null) + this.targetConnections = new ArrayList<BConnection>(); + return this.targetConnections; + } + + public boolean hasConnections() { + return !getTargetConnections().isEmpty() + || !getSourceConnections().isEmpty(); + } + + public boolean showInOutlineView() { + return true; + } + + public void setObserverMap(Map<String, Observer> observerMap) { + observers = observerMap; + } + + public void setEventMap(Map<String, SchedulerEvent> eventMap) { + events = eventMap; + } + + public abstract String getType(); + + protected void initAttribute(AbstractAttribute atr) { + AbstractAttribute matr = getAttributes().get(atr.getID()); + if (matr != null) { + matr.setEditable(atr.isEditable()); + matr.setGroup(atr.getGroup()); + matr.setShow(atr.show()); + } else { + getAttributes().put(atr.getID(), atr); + } + } + + protected void initAttribute(AbstractAttribute atr, AbstractAttribute group) { + initAttribute(atr, group.getClass().getName()); + } + + protected void initAttribute(AbstractAttribute atr, String group) { + atr.setGroup(group); + initAttribute(atr); + } + + public boolean canHaveChildren() { + return false; + } + + public String getValueOfData() { + return getAttributeValue(AttributeConstants.ATTRIBUTE_CUSTOM) + .toString(); + } + + public Image getIcon() { + return BMotionStudioImage.getBControlImage(getType()); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BShape.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BShape.java index 66ac95f8112f3c36d1cd99bf05c8f2df5f760b7c..41acfd9a9e617e68f29573b442f1dc28934534ea 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BShape.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BShape.java @@ -6,8 +6,11 @@ package de.bmotionstudio.gef.editor.model; +import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.RGB; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.attribute.BAttributeAlpha; import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor; import de.bmotionstudio.gef.editor.attribute.BAttributeDirection; @@ -24,7 +27,8 @@ import de.bmotionstudio.gef.editor.attribute.BAttributeShape; */ public class BShape extends BControl { - public static transient String TYPE = "de.bmotionstudio.gef.editor.shape"; + public static transient String TYPE_RECTANGLE = "de.bmotionstudio.gef.editor.rectangle"; + public static transient String TYPE_OVAL = "de.bmotionstudio.gef.editor.ellipse"; public BShape(Visualization visualization) { super(visualization); @@ -32,7 +36,11 @@ public class BShape extends BControl { @Override public String getType() { - return TYPE; + if (getAttributeValue(AttributeConstants.ATTRIBUTE_SHAPE).equals( + BAttributeShape.SHAPE_OVAL)) + return TYPE_OVAL; + else + return TYPE_RECTANGLE; } @Override @@ -41,7 +49,7 @@ public class BShape extends BControl { initAttribute(new BAttributeForegroundColor(new RGB(0, 0, 0))); initAttribute(new BAttributeImage(null)); initAttribute(new BAttributeAlpha(255)); - initAttribute(new BAttributeOutlineAlpha(255)); + initAttribute(new BAttributeOutlineAlpha(0)); initAttribute(new BAttributeShape(BAttributeShape.SHAPE_RECTANGLE)); initAttribute(new BAttributeOrientation( BAttributeOrientation.HORIZONTAL)); @@ -49,4 +57,13 @@ public class BShape extends BControl { initAttribute(new BAttributeFillType(BAttributeFillType.FILLED)); } + @Override + public Image getIcon() { + if (getAttributeValue(AttributeConstants.ATTRIBUTE_SHAPE).equals( + BAttributeShape.SHAPE_OVAL)) + return BMotionStudioImage.getBControlImage(TYPE_OVAL); + else + return super.getIcon(); + } + } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTable.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTable.java new file mode 100644 index 0000000000000000000000000000000000000000..dbb450c311d872077d1542c36331160fd9fd099a --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTable.java @@ -0,0 +1,64 @@ +package de.bmotionstudio.gef.editor.model; + +import org.eclipse.draw2d.ColorConstants; +import org.eclipse.draw2d.geometry.Rectangle; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.attribute.BAttributeColumns; +import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor; +import de.bmotionstudio.gef.editor.attribute.BAttributeRows; +import de.bmotionstudio.gef.editor.command.CreateCommand; + +public class BTable extends BControl { + + public static transient String TYPE = "de.bmotionstudio.gef.editor.table"; + + public BTable(Visualization visualization) { + + super(visualization); + + int numberOfColumns = 2; + int numberOfRows = 2; + + CreateCommand cmd; + for (int i = 0; i < numberOfColumns; i++) { + BTableColumn bTableColumn = new BTableColumn(visualization); + cmd = new CreateCommand(bTableColumn, this); + cmd.setLayout(new Rectangle(0, 0, 50, 25)); + cmd.execute(); + for (int z = 0; z < numberOfRows; z++) { + cmd = new CreateCommand(new BTableCell(getVisualization()), + bTableColumn); + cmd.setLayout(new Rectangle(0, 0, 50, 20)); + cmd.execute(); + } + } + + } + + @Override + public boolean canHaveChildren() { + return true; + } + + @Override + protected void initAttributes() { + initAttribute(new BAttributeForegroundColor( + ColorConstants.black.getRGB())); + initAttribute(new BAttributeColumns(2)); + initAttribute(new BAttributeRows(2)); + getAttributes().get(AttributeConstants.ATTRIBUTE_SIZE).setShow(false); + getAttributes().get(AttributeConstants.ATTRIBUTE_COORDINATES).setShow( + false); + getAttributes().get(AttributeConstants.ATTRIBUTE_HEIGHT).setEditable( + false); + getAttributes().get(AttributeConstants.ATTRIBUTE_WIDTH).setEditable( + false); + } + + @Override + public String getType() { + return TYPE; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableCell.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableCell.java new file mode 100644 index 0000000000000000000000000000000000000000..587e2cdf6281cc14a709f88dd0bd30aa713dae02 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableCell.java @@ -0,0 +1,47 @@ +package de.bmotionstudio.gef.editor.model; + +import org.eclipse.draw2d.ColorConstants; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.attribute.BAttributeBackgroundColor; +import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor; +import de.bmotionstudio.gef.editor.attribute.BAttributeText; +import de.bmotionstudio.gef.editor.attribute.BAttributeTextColor; + +public class BTableCell extends BControl { + + public static transient String TYPE = "de.bmotionstudio.gef.editor.tablecell"; + + public BTableCell(Visualization visualization) { + super(visualization); + } + + @Override + protected void initAttributes() { + + initAttribute(new BAttributeBackgroundColor( + ColorConstants.white.getRGB())); + BAttributeForegroundColor bAttributeForegroundColor = new BAttributeForegroundColor( + ColorConstants.black.getRGB()); + bAttributeForegroundColor.setShow(false); + initAttribute(bAttributeForegroundColor); + initAttribute(new BAttributeTextColor(ColorConstants.black.getRGB())); + initAttribute(new BAttributeText("")); + setAttributeValue(AttributeConstants.ATTRIBUTE_HEIGHT, 20); + setAttributeValue(AttributeConstants.ATTRIBUTE_WIDTH, 50); + getAttributes().get(AttributeConstants.ATTRIBUTE_HEIGHT).setEditable( + false); + getAttributes().get(AttributeConstants.ATTRIBUTE_WIDTH).setEditable( + false); + getAttributes().get(AttributeConstants.ATTRIBUTE_SIZE).setShow(false); + getAttributes().get(AttributeConstants.ATTRIBUTE_COORDINATES).setShow( + false); + + } + + @Override + public String getType() { + return TYPE; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableColumn.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableColumn.java new file mode 100644 index 0000000000000000000000000000000000000000..fc64b9ed8123ebd1dfd0499dafd92857e872eb06 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/BTableColumn.java @@ -0,0 +1,47 @@ +package de.bmotionstudio.gef.editor.model; + +import org.eclipse.draw2d.ColorConstants; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.attribute.BAttributeForegroundColor; + +public class BTableColumn extends BControl { + + public static transient String TYPE = "de.bmotionstudio.gef.editor.tablecolumn"; + + public BTableColumn(Visualization visualization) { + super(visualization); + } + + @Override + protected void initAttributes() { + + // initAttribute(new BAttributeBackgroundColor( + // ColorConstants.white.getRGB())); + BAttributeForegroundColor bAttributeForegroundColor = new BAttributeForegroundColor( + ColorConstants.black.getRGB()); + bAttributeForegroundColor.setShow(false); + initAttribute(bAttributeForegroundColor); + // initAttribute(new + // BAttributeTextColor(ColorConstants.black.getRGB())); + getAttributes().get(AttributeConstants.ATTRIBUTE_HEIGHT).setEditable( + false); + getAttributes().get(AttributeConstants.ATTRIBUTE_HEIGHT).setShow(false); + getAttributes().get(AttributeConstants.ATTRIBUTE_COORDINATES).setShow( + false); + + // Background Color + // Font + // Foreground Color + + // Width + // Height (not editable) --> determined by number of cells + + } + + @Override + public String getType() { + return TYPE; + } + +} \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java index 69ba62cef155c8fc5b03ba690932a5bdd4390678..45a5666c3bf9502579b59251d27dc7f70e8df858 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/model/Visualization.java @@ -13,10 +13,10 @@ import org.eclipse.core.resources.IFile; import org.eclipse.draw2d.PositionConstants; import de.be4.classicalb.core.parser.exceptions.BException; +import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.ButtonGroupHelper; import de.bmotionstudio.gef.editor.IAddErrorListener; -import de.bmotionstudio.gef.editor.internal.Animation; import de.bmotionstudio.gef.editor.scheduler.PredicateOperation; import de.prob.core.command.ExecuteOperationCommand; import de.prob.core.command.GetOperationByPredicateCommand; diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/CloneObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/CloneObserver.java deleted file mode 100644 index ff38608cc1f88782cc1b6149a09677a6496eca8e..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/CloneObserver.java +++ /dev/null @@ -1,130 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.internal.Animation; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverClone; - -public class CloneObserver extends Observer { - - private transient Collection<BControl> clonedControls; - private List<ObserverCloneObject> observerCloneObjects; - private boolean newControls = false; - private int oldInt = 0; - - public CloneObserver() { - observerCloneObjects = new ArrayList<ObserverCloneObject>(); - } - - @Override - public void check(Animation animation, final BControl control) { - - for (ObserverCloneObject obj : observerCloneObjects) { - - final BControl toCloneControl = animation.getVisualization() - .getBControl(obj.getControlId()); - String evalString = obj.getEval(); - - String fEval = parseExpression(evalString, control, animation, obj); - - if (toCloneControl == null) { - addError(control, animation, - "No control found with id: " + obj.getControlId()); - } else { - - int clones = 0; - - try { - clones = Integer.parseInt(fEval); - } catch (NumberFormatException e) { - addError(control, animation, "The expression: " + fEval - + " should return an integer value!"); - } - - if (oldInt == clones) { - - newControls = false; - - } else { - - for (BControl c : getClonedControls()) { - control.removeChild(c); - } - - getClonedControls().clear(); - - for (int i = obj.getCounter(); i < clones - + obj.getCounter(); i++) { - try { - BControl clonedControl = toCloneControl.clone(); - clonedControl.setAttributeValue( - AttributeConstants.ATTRIBUTE_CUSTOM, i); - getClonedControls().add(clonedControl); - } catch (CloneNotSupportedException e) { - } - } - - oldInt = clones; - newControls = true; - - } - - } - - } - - } - - @Override - public ObserverWizard getWizard(BControl control) { - return new WizardObserverClone(control, this); - } - - public List<ObserverCloneObject> getObserverCloneObjects() { - return observerCloneObjects; - } - - public void setObserverCloneObjects( - List<ObserverCloneObject> observerCloneObjects) { - this.observerCloneObjects = observerCloneObjects; - } - - public Observer clone() throws CloneNotSupportedException { - CloneObserver clonedObserver = (CloneObserver) super.clone(); - List<ObserverCloneObject> list = new ArrayList<ObserverCloneObject>(); - for (ObserverCloneObject obj : getObserverCloneObjects()) { - list.add(obj.clone()); - } - clonedObserver.setObserverCloneObjects(list); - return clonedObserver; - } - - @Override - public void afterCheck(final Animation animation, final BControl control) { - if (newControls) { - synchronized (control) { - for (BControl c : clonedControls) { - control.addChild(c); - c.checkObserver(animation); - } - } - } - } - - public Collection<BControl> getClonedControls() { - if (clonedControls == null) - clonedControls = new ArrayList<BControl>(); - return clonedControls; - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java new file mode 100644 index 0000000000000000000000000000000000000000..5b02178d00847f836dd6c3ea5b56c99c6d8054fb --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ColumnObserver.java @@ -0,0 +1,73 @@ +package de.bmotionstudio.gef.editor.observer; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.wizard.WizardColumnObserver; +import de.bmotionstudio.gef.editor.util.BMSUtil; + +public class ColumnObserver extends Observer { + + private String expression; + private String predicate; + + @Override + public void check(Animation animation, BControl control) { + + // First evaluate predicate (predicate field) + String bolValue = "true"; + if (predicate != null && predicate.length() > 0) { + bolValue = BMSUtil.parsePredicate(predicate, control, animation); + } + + if (Boolean.valueOf(bolValue)) { + + String fEval = BMSUtil.parseExpression(expression, control, + animation); + fEval = fEval.replace("}", "").replace("{", ""); + String[] splitArray = fEval.split(","); + + AbstractAttribute attributeRows = control.getParent().getAttribute( + AttributeConstants.ATTRIBUTE_ROWS); + + Integer defaultRows = Integer.valueOf(attributeRows + .getInitValue().toString()); + + control.getParent().setAttributeValue( + AttributeConstants.ATTRIBUTE_ROWS, + defaultRows + splitArray.length, true, false); + + for (int i = defaultRows; i < splitArray.length + defaultRows; i++) { + control.getChildrenArray() + .get(i) + .setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT, + splitArray[i - defaultRows]); + } + + } + + } + + public void setExpression(String expression) { + this.expression = expression; + } + + public String getExpression() { + return expression; + } + + public String getPredicate() { + return predicate; + } + + public void setPredicate(String predicate) { + this.predicate = predicate; + } + + @Override + public ObserverWizard getWizard(BControl control) { + return new WizardColumnObserver(control, this); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java new file mode 100644 index 0000000000000000000000000000000000000000..66140364297494279a50836161fc37be784b1379 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ExternalObserverScript.java @@ -0,0 +1,77 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + +import groovy.lang.GroovyClassLoader; +import groovy.lang.GroovyObject; + +import java.io.File; +import java.io.IOException; + +import org.codehaus.groovy.control.CompilationFailedException; +import org.eclipse.core.resources.IFile; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverExternalObserverScript; + +public class ExternalObserverScript extends Observer { + + public static String ID = "de.bmotionstudio.gef.editor.observer.ExternalObserverScript"; + + private transient GroovyObject groovyObject; + + private String scriptPath; + + // private String language; + + @Override + public void check(Animation animation, BControl control) { + + try { + + if (groovyObject == null) { + IFile pFile = control.getVisualization().getProjectFile(); + String myPath = (pFile.getProject().getLocation() + "/" + scriptPath) + .replace("file:", ""); + ClassLoader parent = getClass().getClassLoader(); + GroovyClassLoader loader = new GroovyClassLoader(parent); + Class<?> groovyClass; + groovyClass = loader.parseClass(new File(myPath)); + // let's call some method on an instance + groovyObject = (GroovyObject) groovyClass.newInstance(); + } + + Object[] args = { animation, control }; + groovyObject.invokeMethod("check", args); + + } catch (CompilationFailedException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + } + + @Override + public ObserverWizard getWizard(BControl control) { + return new WizardObserverExternalObserverScript(control, this); + } + + public String getScriptPath() { + return scriptPath; + } + + public void setScriptPath(String scriptPath) { + this.scriptPath = scriptPath; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/IObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/IObserver.java new file mode 100644 index 0000000000000000000000000000000000000000..78f2e3dcfb65135048560982476042ad26ae3753 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/IObserver.java @@ -0,0 +1,26 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.model.BControl; + +public interface IObserver { + + /** + * This method is called after every state change. The method tells the + * control how it has to look like and how to behave. + * + * @param animation + * The running animation + * @param bcontrol + * The corresponding control + * @throws BMotionObserverException + */ + public void check(Animation animation, BControl control); + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java index 9934b534a5cac3df9cb97cbb6778c7350950dc9a..59584f2b31f9df4a8fdcd62d048597fe988219e3 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ListenOperationByPredicate.java @@ -10,12 +10,13 @@ import java.util.ArrayList; import java.util.List; import de.be4.classicalb.core.parser.exceptions.BException; +import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.AttributeConstants; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; -import de.bmotionstudio.gef.editor.internal.Animation; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverListenOperationByPredicate; import de.bmotionstudio.gef.editor.scheduler.PredicateOperation; +import de.bmotionstudio.gef.editor.util.BMSUtil; import de.prob.core.Animator; import de.prob.core.command.GetOperationByPredicateCommand; import de.prob.core.domainobjects.Operation; @@ -70,7 +71,7 @@ public class ListenOperationByPredicate extends Observer { if (animation.getCurrentStateOperations().containsKey(fOpName)) { if (fPredicate.length() > 0) { - fPredicate = parseControls(fPredicate, control); + fPredicate = BMSUtil.parseControls(fPredicate, control); } try { @@ -89,20 +90,21 @@ public class ListenOperationByPredicate extends Observer { Object attributeVal = pop.getValue(); if (pop.isExpressionMode()) { - String strAtrVal = parseExpression( + String strAtrVal = BMSUtil.parseExpression( attributeVal.toString(), control, - animation, pop); + animation); String er = attributeObj.validateValue( strAtrVal, null); if (er != null) { - addError( - control, - animation, - "You selected " - + attributeObj.getName() - + " as attribute. There is a problem with your value: " - + strAtrVal + " - Reason: " - + er); + // addError( + // control, + // animation, + // "You selected " + // + attributeObj.getName() + // + + // " as attribute. There is a problem with your value: " + // + strAtrVal + " - Reason: " + // + er); pop.setHasError(true); } else { attributeVal = attributeObj @@ -115,7 +117,7 @@ public class ListenOperationByPredicate extends Observer { .getAttributeValue(attributeID); if (!oldAttrVal.equals(attributeVal)) { control.setAttributeValue(attributeID, - attributeVal); + attributeVal, true, false); } } @@ -123,12 +125,12 @@ public class ListenOperationByPredicate extends Observer { } } catch (ProBException e) { - addError(control, animation, - "An error occurred while evaluating. Reason: " - + e.getMessage()); + // addError(control, animation, + // "An error occurred while evaluating. Reason: " + // + e.getMessage()); } catch (BException e) { - addError(control, animation, "Parsing error in: " - + fPredicate + " Reason: " + e.getMessage()); + // addError(control, animation, "Parsing error in: " + // + fPredicate + " Reason: " + e.getMessage()); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java index fde46fcd929494efa157fccee57e322db1e7cafb..d503290e15669b161bec135606bacc8946c6d84f 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/Observer.java @@ -1,103 +1,77 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.draw2d.IFigure; - -import de.bmotionstudio.gef.editor.AbstractExpressionControl; -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.internal.Animation; -import de.bmotionstudio.gef.editor.model.BControl; - -/** - * - * Observers are used to link controls to the model's state, i.e., they do the - * same as the animation function in ProB. The main difference is, that we allow - * to decompose the animation function into different aspects, i.e., if our - * model contains information about the speed of a motor, we can separate all - * information regarding the speed from the information regarding the - * temperature. This allows us to write small functions and combine them rather - * than writing a single function covering all aspects of the model. - * - * @author Lukas Ladenberger - * - */ -public abstract class Observer extends AbstractExpressionControl { - - // private transient Boolean callBack = false; - - public Observer() { - init(); - } - - protected Object readResolve() { - init(); - // callBack = false; - return this; - } - - /** - * Method to initialize the observer. Gets the ID, name and description from - * the corresponding extension point - */ - private void init() { - IConfigurationElement configElement = BMotionEditorPlugin - .getObserverExtension(getClass().getName()); - if (configElement != null) { - this.ID = configElement.getAttribute("class"); - this.name = configElement.getAttribute("name"); - this.description = configElement.getAttribute("description"); - } - } - - /** - * Makes a copy of the observer - * - * @return the cloned observer - */ - public Observer clone() throws CloneNotSupportedException { - return (Observer) super.clone(); - } - - // public void setCallBack(Boolean callBack) { - // this.callBack = callBack; - // } - // - // public Boolean isCallBack() { - // return callBack; - // } - - /** - * This method is called after every state change. The method tells the - * control how it has to look like and how to behave. - * - * @param animation - * The running animation - * @param bcontrol - * The corresponding control - * @throws BMotionObserverException - */ - public abstract void check(Animation animation, BControl control); - - /** - * Returns a corresponding wizard for the observer. - * - * @param bcontrol - * The corresponding control - * @return the corresponding wizard - */ - public abstract ObserverWizard getWizard(BControl control); - - public IFigure getToolTip(BControl control) { - return null; - } - - public void afterCheck(Animation animation, BControl control) { - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.draw2d.IFigure; + +import de.bmotionstudio.gef.editor.AbstractExpressionControl; +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.model.BControl; + +/** + * + * Observers are used to link controls to the model's state, i.e., they do the + * same as the animation function in ProB. The main difference is, that we allow + * to decompose the animation function into different aspects, i.e., if our + * model contains information about the speed of a motor, we can separate all + * information regarding the speed from the information regarding the + * temperature. This allows us to write small functions and combine them rather + * than writing a single function covering all aspects of the model. + * + * @author Lukas Ladenberger + * + */ +public abstract class Observer extends AbstractExpressionControl implements + IObserver { + + public Observer() { + init(); + } + + protected Object readResolve() { + init(); + return this; + } + + /** + * Method to initialize the observer. Gets the ID, name and description from + * the corresponding extension point + */ + private void init() { + IConfigurationElement configElement = BMotionEditorPlugin + .getObserverExtension(getClass().getName()); + if (configElement != null) { + this.ID = configElement.getAttribute("class"); + this.name = configElement.getAttribute("name"); + this.description = configElement.getAttribute("description"); + } + } + + /** + * Makes a copy of the observer + * + * @return the cloned observer + */ + public Observer clone() throws CloneNotSupportedException { + return (Observer) super.clone(); + } + + /** + * Returns a corresponding wizard for the observer. + * + * @param bcontrol + * The corresponding control + * @return the corresponding wizard + */ + public abstract ObserverWizard getWizard(BControl control); + + public IFigure getToolTip(BControl control) { + return null; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverCloneObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverCloneObject.java deleted file mode 100644 index 480e1686b521fdba41307d7d1b1fcc5b7cad7802..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverCloneObject.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ -package de.bmotionstudio.gef.editor.observer; - -/** - * @author Lukas Ladenberger - * - */ -public class ObserverCloneObject extends ObserverEvalObject implements - Cloneable { - - private String controlId; - - private int counter; - - public ObserverCloneObject() { - super(); - } - - public void setControlId(String controlId) { - Object oldValue = this.controlId; - this.controlId = controlId; - firePropertyChange("controlId", oldValue, this.controlId); - } - - public String getControlId() { - return controlId; - } - - public void setCounter(int counter) { - Object oldValue = this.counter; - this.counter = counter; - firePropertyChange("counter", oldValue, this.counter); - } - - public int getCounter() { - return counter; - } - - public ObserverCloneObject clone() throws CloneNotSupportedException { - return (ObserverCloneObject) super.clone(); - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java index ddddd919b5fc189a350fc4fc783d7a19d1479717..252a7b622e5b7a998d97f86097650253eb368c67 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ObserverWizard.java @@ -1,60 +1,53 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.swt.graphics.Point; - -import de.bmotionstudio.gef.editor.model.BControl; - -/** - * - * The BMotion Studio provides an easy way to handle Observers. For this, - * Observers can have a corresponding wizard. The user can open it by calling - * the context menu of a Control. - * - * @author Lukas Ladenberger - * - */ -public abstract class ObserverWizard extends Wizard { - - private BControl control; - private Observer observer; - - protected Boolean observerDelete = false; - - public ObserverWizard(BControl control, Observer observer) { - this.control = control; - this.observer = observer; - } - - public BControl getBControl() { - return this.control; - } - - public Observer getObserver() { - return this.observer; - } - - protected void setObserverDelete(Boolean b) { - this.observerDelete = b; - } - - protected abstract Boolean prepareToFinish(); - - @Override - public boolean performFinish() { - return prepareToFinish(); - } - - public Boolean isObserverDelete() { - return this.observerDelete; - } - - public abstract Point getSize(); - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + +import org.eclipse.swt.graphics.Point; + +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; +import de.bmotionstudio.gef.editor.model.BControl; + +/** + * + * The BMotion Studio provides an easy way to handle Observers. For this, + * Observers can have a corresponding wizard. The user can open it by calling + * the context menu of a Control. + * + * @author Lukas Ladenberger + * + */ +public abstract class ObserverWizard extends BMotionAbstractWizard { + + private Observer observer; + + protected Boolean observerDelete = false; + + public ObserverWizard(BControl control, Observer observer) { + super(control); + this.observer = observer; + } + + public Observer getObserver() { + return this.observer; + } + + protected void setObserverDelete(Boolean b) { + this.observerDelete = b; + } + + public Boolean isObserverDelete() { + return this.observerDelete; + } + + public abstract Point getSize(); + + @Override + public String getName() { + return observer.getName(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java index d4e801a2491df21e32f4d8f53c9b82d87ea69deb..02773321d1ee6a0534ddfcb5e262aa47f5ad1fe7 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SetAttribute.java @@ -11,10 +11,11 @@ import java.util.List; import org.eclipse.draw2d.IFigure; +import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; -import de.bmotionstudio.gef.editor.internal.Animation; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverSetAttribute; +import de.bmotionstudio.gef.editor.util.BMSUtil; public class SetAttribute extends Observer { @@ -34,7 +35,7 @@ public class SetAttribute extends Observer { @Override public void check(Animation animation, BControl control) { - + this.setAttributes.clear(); // Collect evaluate predicate objects in list @@ -45,8 +46,8 @@ public class SetAttribute extends Observer { // First evaluate predicate (predicate field) String bolValue = "true"; if (obj.getEval().length() > 0) { - bolValue = parsePredicate(obj.getEval(), control, animation, - obj); + bolValue = BMSUtil.parsePredicate(obj.getEval(), control, + animation); } if (!obj.hasError() && Boolean.valueOf(bolValue)) { @@ -59,17 +60,18 @@ public class SetAttribute extends Observer { Object attributeVal = obj.getValue(); if (obj.isExpressionMode()) { - String strAtrVal = parseExpression(attributeVal.toString(), - control, animation, obj); + String strAtrVal = BMSUtil.parseExpression( + attributeVal.toString(), control, animation); String er = attributeObj.validateValue(strAtrVal, null); if (er != null) { - addError( - control, - animation, - "You selected " - + attributeObj.getName() - + " as attribute. There is a problem with your value: " - + strAtrVal + " - Reason: " + er); + // addError( + // control, + // animation, + // "You selected " + // + attributeObj.getName() + // + + // " as attribute. There is a problem with your value: " + // + strAtrVal + " - Reason: " + er); obj.setHasError(true); } else { attributeVal = attributeObj.unmarshal(strAtrVal); @@ -79,7 +81,8 @@ public class SetAttribute extends Observer { if (!obj.hasError()) { Object oldAttrVal = control.getAttributeValue(attributeID); if (!oldAttrVal.equals(attributeVal)) { - control.setAttributeValue(attributeID, attributeVal); + control.setAttributeValue(attributeID, attributeVal, + true, false); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java index a6934ec7539ce6f1fc3c4063dcb0d3bc8804a60e..9886b3184634dbe24246762aeadd7c237c870bfc 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SimpleValueDisplay.java @@ -1,100 +1,101 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.internal.Animation; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverSimpleValueDisplay; - -public class SimpleValueDisplay extends Observer { - - private String type; - private String eval; - private String predicate; - private String replacementString; - private transient String orgString; - private transient boolean isOrgStringSet = false; - - public void check(final Animation animation, final BControl bcontrol) { - - // First evaluate predicate (predicate field) - String bolValue = "true"; - if (predicate != null && predicate.length() > 0) { - bolValue = parsePredicate(predicate, bcontrol, animation, null); - } - - if (Boolean.valueOf(bolValue)) { - - String fEval = parseExpression(eval, bcontrol, animation, null); - - if (!isOrgStringSet) { - orgString = bcontrol.getAttributeValue( - AttributeConstants.ATTRIBUTE_TEXT).toString(); - isOrgStringSet = true; - } - - String parseString = orgString; - - if (replacementString != null) { - if (replacementString.length() > 0) { - parseString = orgString.replace(replacementString, fEval); - } - } else { - parseString = fEval; - } - - bcontrol.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT, - parseString); - - } - - } - - public ObserverWizard getWizard(final BControl bcontrol) { - return new WizardObserverSimpleValueDisplay(bcontrol, this); - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public void setEval(String eval) { - this.eval = eval; - } - - public String getEval() { - return eval; - } - - public String getPredicate() { - return predicate; - } - - public void setPredicate(String predicate) { - this.predicate = predicate; - } - - public void setReplacementString(String replacementString) { - this.replacementString = replacementString; - } - - public String getReplacementString() { - return replacementString; - } - - public Observer clone() throws CloneNotSupportedException { - SimpleValueDisplay clonedObserver = (SimpleValueDisplay) super.clone(); - clonedObserver.isOrgStringSet = false; - return clonedObserver; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverSimpleValueDisplay; +import de.bmotionstudio.gef.editor.util.BMSUtil; + +public class SimpleValueDisplay extends Observer { + + private String type; + private String eval; + private String predicate; + private String replacementString; + private transient String orgString; + private transient boolean isOrgStringSet = false; + + public void check(final Animation animation, final BControl bcontrol) { + + // First evaluate predicate (predicate field) + String bolValue = "true"; + if (predicate != null && predicate.length() > 0) { + bolValue = BMSUtil.parsePredicate(predicate, bcontrol, animation); + } + + if (Boolean.valueOf(bolValue)) { + + String fEval = BMSUtil.parseExpression(eval, bcontrol, animation); + + if (!isOrgStringSet) { + orgString = bcontrol.getAttributeValue( + AttributeConstants.ATTRIBUTE_TEXT).toString(); + isOrgStringSet = true; + } + + String parseString = orgString; + + if (replacementString != null) { + if (replacementString.length() > 0) { + parseString = orgString.replace(replacementString, fEval); + } + } else { + parseString = fEval; + } + + bcontrol.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT, + parseString); + + } + + } + + public ObserverWizard getWizard(final BControl bcontrol) { + return new WizardObserverSimpleValueDisplay(bcontrol, this); + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public void setEval(String eval) { + this.eval = eval; + } + + public String getEval() { + return eval; + } + + public String getPredicate() { + return predicate; + } + + public void setPredicate(String predicate) { + this.predicate = predicate; + } + + public void setReplacementString(String replacementString) { + this.replacementString = replacementString; + } + + public String getReplacementString() { + return replacementString; + } + + public Observer clone() throws CloneNotSupportedException { + SimpleValueDisplay clonedObserver = (SimpleValueDisplay) super.clone(); + clonedObserver.isOrgStringSet = false; + return clonedObserver; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java index 273f37ab987e3dc546df27579f31aaef5c16e8c9..b078e12811804505d629a88c34b6c08b9e595651 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchChildCoordinates.java @@ -1,147 +1,125 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - -import java.util.ArrayList; -import java.util.List; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.animation.AnimationMove; -import de.bmotionstudio.gef.editor.internal.Animation; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverCSwitchCoordinates; - -public class SwitchChildCoordinates extends Observer { - - private List<ToggleObjectCoordinates> toggleObjects; - - // private transient AnimationListener animationListener; - - // private transient Boolean checked; - - public SwitchChildCoordinates() { - toggleObjects = new ArrayList<ToggleObjectCoordinates>(); - } - - public void check(final Animation animation, final BControl control) { - - // if (checked == null) - // checked = true; - // - // if (!checked) - // return; - // - // if (animationListener == null) { - // animationListener = new AnimationListener() { - // public void animationStopped(AnimationEvent evt) { - // setCallBack(true); - // // checked = true; - // } - // - // public void animationStarted(AnimationEvent evt) { - // setCallBack(false); - // checked = false; - // } - // }; - // } - - // Collect evaluate predicate objects in list - for (ToggleObjectCoordinates obj : toggleObjects) { - - obj.setHasError(false); - - // First evaluate predicate (predicate field) - String bolValue = "true"; - if (obj.getEval().length() > 0) { - bolValue = parsePredicate(obj.getEval(), control, animation, - obj); - } - - if (!obj.hasError() && Boolean.valueOf(bolValue)) { - - // Handle control field - BControl toggleControl = null; - String parsedControl = parseExpression(obj.getBcontrol(), - false, control, animation, obj, false); - toggleControl = control.getChild(parsedControl); - if (toggleControl == null) { - obj.setHasError(true); - addError(control, animation, "No such control: " - + parsedControl); - } - - Integer parsedX = 0; - Integer parsedY = 0; - // Handle X field - try { - parsedX = Integer.valueOf(parseExpression(obj.getX(), - false, control, animation, obj, false)); - } catch (NumberFormatException n) { - obj.setHasError(true); - addError(control, animation, "x is not a valid integer: " - + n.getMessage()); - } - // Handle Y field - try { - parsedY = Integer.valueOf(parseExpression(obj.getY(), - false, control, animation, obj, false)); - } catch (NumberFormatException n) { - obj.setHasError(true); - addError(control, animation, "y is not a valid integer: " - + n.getMessage()); - } - - if (!obj.hasError()) { - if (Boolean.valueOf(bolValue)) { // If true - if (obj.getAnimate()) { - - AnimationMove aMove = new AnimationMove(500, true, - toggleControl, parsedX, parsedY); - // aMove.addAnimationListener(animationListener); - aMove.start(); - - } else { - - toggleControl.setAttributeValue( - AttributeConstants.ATTRIBUTE_X, parsedX); - toggleControl.setAttributeValue( - AttributeConstants.ATTRIBUTE_Y, parsedY); - - } - } - } - - } - - } - - } - - public ObserverWizard getWizard(final BControl bcontrol) { - return new WizardObserverCSwitchCoordinates(bcontrol, this); - } - - public List<ToggleObjectCoordinates> getToggleObjects() { - return this.toggleObjects; - } - - public void setToggleObjects(final List<ToggleObjectCoordinates> list) { - this.toggleObjects = list; - } - - public Observer clone() throws CloneNotSupportedException { - SwitchChildCoordinates clonedObserver = (SwitchChildCoordinates) super - .clone(); - List<ToggleObjectCoordinates> list = new ArrayList<ToggleObjectCoordinates>(); - for (ToggleObjectCoordinates obj : getToggleObjects()) { - list.add(obj.clone()); - } - clonedObserver.setToggleObjects(list); - return clonedObserver; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + +import java.util.ArrayList; +import java.util.List; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverCSwitchCoordinates; +import de.bmotionstudio.gef.editor.util.BMSUtil; + +public class SwitchChildCoordinates extends Observer { + + private List<ToggleObjectCoordinates> toggleObjects; + + public SwitchChildCoordinates() { + toggleObjects = new ArrayList<ToggleObjectCoordinates>(); + } + + public void check(final Animation animation, final BControl control) { + + // Collect evaluate predicate objects in list + for (ToggleObjectCoordinates obj : toggleObjects) { + + obj.setHasError(false); + + // First evaluate predicate (predicate field) + String bolValue = "true"; + if (obj.getEval().length() > 0) { + bolValue = BMSUtil.parsePredicate(obj.getEval(), control, + animation); + } + + if (!obj.hasError() && Boolean.valueOf(bolValue)) { + + // Handle control field + BControl toggleControl = null; + String parsedControl = BMSUtil.parseExpression( + obj.getBcontrol(), control, animation, false); + toggleControl = control.getChild(parsedControl); + if (toggleControl == null) { + obj.setHasError(true); + // addError(control, animation, "No such control: " + // + parsedControl); + } + + Integer parsedX = 0; + Integer parsedY = 0; + // Handle X field + try { + parsedX = Integer.valueOf(BMSUtil.parseExpression( + obj.getX(), control, animation)); + } catch (NumberFormatException n) { + obj.setHasError(true); + // addError(control, animation, "x is not a valid integer: " + // + n.getMessage()); + } + // Handle Y field + try { + parsedY = Integer.valueOf(BMSUtil.parseExpression( + obj.getY(), control, animation)); + } catch (NumberFormatException n) { + obj.setHasError(true); + // addError(control, animation, "y is not a valid integer: " + // + n.getMessage()); + } + + if (!obj.hasError()) { + if (Boolean.valueOf(bolValue)) { // If true + // if (obj.getAnimate()) { + // + // AnimationMove aMove = new AnimationMove(500, true, + // toggleControl, parsedX, parsedY); + // // aMove.addAnimationListener(animationListener); + // aMove.start(); + // + // } else { + + toggleControl.setAttributeValue( + AttributeConstants.ATTRIBUTE_X, parsedX, true, + false); + toggleControl.setAttributeValue( + AttributeConstants.ATTRIBUTE_Y, parsedY, true, + false); + + // } + } + } + + } + + } + + } + + public ObserverWizard getWizard(final BControl bcontrol) { + return new WizardObserverCSwitchCoordinates(bcontrol, this); + } + + public List<ToggleObjectCoordinates> getToggleObjects() { + return this.toggleObjects; + } + + public void setToggleObjects(final List<ToggleObjectCoordinates> list) { + this.toggleObjects = list; + } + + public Observer clone() throws CloneNotSupportedException { + SwitchChildCoordinates clonedObserver = (SwitchChildCoordinates) super + .clone(); + List<ToggleObjectCoordinates> list = new ArrayList<ToggleObjectCoordinates>(); + for (ToggleObjectCoordinates obj : getToggleObjects()) { + list.add(obj.clone()); + } + clonedObserver.setToggleObjects(list); + return clonedObserver; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java index 10ec1ecce5a9f5337d31be76d23084352fd8b0dc..0f7733a383286e15814bb1321f7f0bc351fdc09d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchCoordinates.java @@ -1,159 +1,134 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - -import java.util.ArrayList; -import java.util.List; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.animation.AnimationMove; -import de.bmotionstudio.gef.editor.internal.Animation; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverSwitchCoordinates; - -public class SwitchCoordinates extends Observer { - - private List<ToggleObjectCoordinates> toggleObjects; - - // private transient AnimationListener animationListener; - - // private transient Boolean checked; - - public SwitchCoordinates() { - toggleObjects = new ArrayList<ToggleObjectCoordinates>(); - } - - public void check(final Animation animation, final BControl control) { - - boolean set = false; - - // if (checked == null) - // checked = true; - - // if (animationListener == null) { - // animationListener = new AnimationListener() { - // public void animationStopped(AnimationEvent evt) { - // setCallBack(true); - // checked = true; - // // System.out - // // .println("Animation stopped ---> Set callback to TRUE!"); - // } - // - // public void animationStarted(AnimationEvent evt) { - // setCallBack(false); - // checked = false; - // // System.out - // // .println("Animation started ---> Set callback to FALSE!"); - // } - // }; - // } - - // Collect evaluate predicate objects in list - for (ToggleObjectCoordinates obj : toggleObjects) { - - obj.setHasError(false); - - // First evaluate predicate (predicate field) - String bolValue = "true"; - if (obj.getEval().length() > 0) { - bolValue = parsePredicate(obj.getEval(), control, animation, - obj); - } - - if (!obj.hasError() && Boolean.valueOf(bolValue)) { - - int parsedX = 0; - int parsedY = 0; - // Handle X field - try { - parsedX = Integer.valueOf(parseExpression(obj.getX(), - false, control, animation, obj, false)); - } catch (NumberFormatException n) { - obj.setHasError(true); - addError(control, animation, "x is not a valid integer: " - + n.getMessage()); - } - // Handle Y field - try { - parsedY = Integer.valueOf(parseExpression(obj.getY(), - false, control, animation, obj, false)); - } catch (NumberFormatException n) { - obj.setHasError(true); - addError(control, animation, "y is not a valid integer: " - + n.getMessage()); - } - - int currentX = Integer.valueOf(control.getAttributeValue( - AttributeConstants.ATTRIBUTE_X).toString()); - int currentY = Integer.valueOf(control.getAttributeValue( - AttributeConstants.ATTRIBUTE_Y).toString()); - - if (currentX != parsedX || currentY != parsedY) { - - // setCallBack(false); - - // If true - if (obj.getAnimate()) { - - // if (!checked) - // return; - - AnimationMove aMove = new AnimationMove(5000, true, - control, parsedX, parsedY); - // aMove.addAnimationListener(animationListener); - aMove.start(); - - } else { - control.setAttributeValue( - AttributeConstants.ATTRIBUTE_X, parsedX); - control.setAttributeValue( - AttributeConstants.ATTRIBUTE_Y, parsedY); - // setCallBack(true); - // checked = false; - } - - } - // else { - // setCallBack(true); - // } - - set = true; - - } - - } - - if (!set) { - control.restoreDefaultValue(AttributeConstants.ATTRIBUTE_X); - control.restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y); - } - - } - - public ObserverWizard getWizard(final BControl bcontrol) { - return new WizardObserverSwitchCoordinates(bcontrol, this); - } - - public List<ToggleObjectCoordinates> getToggleObjects() { - return this.toggleObjects; - } - - public void setToggleObjects(final List<ToggleObjectCoordinates> list) { - this.toggleObjects = list; - } - - public Observer clone() throws CloneNotSupportedException { - SwitchCoordinates clonedObserver = (SwitchCoordinates) super.clone(); - List<ToggleObjectCoordinates> list = new ArrayList<ToggleObjectCoordinates>(); - for (ToggleObjectCoordinates obj : getToggleObjects()) { - list.add(obj.clone()); - } - clonedObserver.setToggleObjects(list); - return clonedObserver; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + +import java.util.ArrayList; +import java.util.List; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverSwitchCoordinates; +import de.bmotionstudio.gef.editor.util.BMSUtil; + +public class SwitchCoordinates extends Observer { + + private List<ToggleObjectCoordinates> toggleObjects; + + public SwitchCoordinates() { + toggleObjects = new ArrayList<ToggleObjectCoordinates>(); + } + + public void check(final Animation animation, final BControl control) { + + boolean set = false; + + // Collect evaluate predicate objects in list + for (ToggleObjectCoordinates obj : toggleObjects) { + + obj.setHasError(false); + + // First evaluate predicate (predicate field) + String bolValue = "true"; + if (obj.getEval().length() > 0) { + bolValue = BMSUtil.parsePredicate(obj.getEval(), control, + animation); + } + + if (!obj.hasError() && Boolean.valueOf(bolValue)) { + + int parsedX = 0; + int parsedY = 0; + // Handle X field + try { + parsedX = Integer.valueOf(BMSUtil.parseExpression( + obj.getX(), control, animation)); + } catch (NumberFormatException n) { + obj.setHasError(true); + // addError(control, animation, "x is not a valid integer: " + // + n.getMessage()); + } + // Handle Y field + try { + parsedY = Integer.valueOf(BMSUtil.parseExpression( + obj.getY(), control, animation)); + } catch (NumberFormatException n) { + obj.setHasError(true); + // addError(control, animation, "y is not a valid integer: " + // + n.getMessage()); + } + + int currentX = Integer.valueOf(control.getAttributeValue( + AttributeConstants.ATTRIBUTE_X).toString()); + int currentY = Integer.valueOf(control.getAttributeValue( + AttributeConstants.ATTRIBUTE_Y).toString()); + + if (currentX != parsedX || currentY != parsedY) { + + // setCallBack(false); + + // If true + // if (obj.getAnimate()) { + + // if (!checked) + // return; + + // AnimationMove aMove = new AnimationMove(5000, true, + // control, parsedX, parsedY); + // aMove.addAnimationListener(animationListener); + // aMove.start(); + + // } else { + control.setAttributeValue(AttributeConstants.ATTRIBUTE_X, + parsedX, true, false); + control.setAttributeValue(AttributeConstants.ATTRIBUTE_Y, + parsedY, true, false); + // setCallBack(true); + // checked = false; + // } + + } + // else { + // setCallBack(true); + // } + + set = true; + + } + + } + + if (!set) { + control.restoreDefaultValue(AttributeConstants.ATTRIBUTE_X); + control.restoreDefaultValue(AttributeConstants.ATTRIBUTE_Y); + } + + } + + public ObserverWizard getWizard(final BControl bcontrol) { + return new WizardObserverSwitchCoordinates(bcontrol, this); + } + + public List<ToggleObjectCoordinates> getToggleObjects() { + return this.toggleObjects; + } + + public void setToggleObjects(final List<ToggleObjectCoordinates> list) { + this.toggleObjects = list; + } + + public Observer clone() throws CloneNotSupportedException { + SwitchCoordinates clonedObserver = (SwitchCoordinates) super.clone(); + List<ToggleObjectCoordinates> list = new ArrayList<ToggleObjectCoordinates>(); + for (ToggleObjectCoordinates obj : getToggleObjects()) { + list.add(obj.clone()); + } + clonedObserver.setToggleObjects(list); + return clonedObserver; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java index 38bd1896e469f31c4b147662358ce619c0c799fe..4422c6182b1b5a1b1aab885e7b69650140c2c852 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/SwitchImage.java @@ -1,102 +1,104 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.resources.IFile; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.internal.Animation; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverSwitchImage; - -public class SwitchImage extends Observer { - - private List<ToggleObjectImage> toggleObjects; - - public SwitchImage() { - toggleObjects = new ArrayList<ToggleObjectImage>(); - } - - public void check(final Animation animation, final BControl control) { - - boolean set = false; - - // Collect evaluate predicate objects in list - for (ToggleObjectImage obj : toggleObjects) { - - obj.setHasError(false); - - // First evaluate predicate (predicate field) - String bolValue = "true"; - if (obj.getEval().length() > 0) { - bolValue = parsePredicate(obj.getEval(), control, animation, - obj); - } - - if (!obj.hasError() && Boolean.valueOf(bolValue)) { - - String fImage = obj.getImage(); - - if (obj.isExpressionMode()) { // Expression mode - fImage = parseExpression(obj.getImage(), control, - animation, obj); - } - - IFile pFile = control.getVisualization().getProjectFile(); - String myPath = (pFile.getProject().getLocation() + "/images/" + fImage) - .replace("file:", ""); - if (!new File(myPath).exists()) { - addError(control, animation, - "No such image in your library: " + fImage); - } - - if (!obj.hasError()) { - if (!control.getAttributeValue( - AttributeConstants.ATTRIBUTE_IMAGE).equals(fImage)) { - control.setAttributeValue( - AttributeConstants.ATTRIBUTE_IMAGE, fImage); - } - } - - set = true; - - } - - } - - if (!set) - control.restoreDefaultValue(AttributeConstants.ATTRIBUTE_IMAGE); - - } - - public ObserverWizard getWizard(final BControl bcontrol) { - return new WizardObserverSwitchImage(bcontrol, this); - } - - public List<ToggleObjectImage> getToggleObjects() { - return this.toggleObjects; - } - - public void setToggleObjects(final List<ToggleObjectImage> list) { - this.toggleObjects = list; - } - - public Observer clone() throws CloneNotSupportedException { - SwitchImage clonedObserver = (SwitchImage) super.clone(); - List<ToggleObjectImage> list = new ArrayList<ToggleObjectImage>(); - for (ToggleObjectImage obj : getToggleObjects()) { - list.add(obj.clone()); - } - clonedObserver.setToggleObjects(list); - return clonedObserver; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.resources.IFile; + +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverSwitchImage; +import de.bmotionstudio.gef.editor.util.BMSUtil; + +public class SwitchImage extends Observer { + + private List<ToggleObjectImage> toggleObjects; + + public SwitchImage() { + toggleObjects = new ArrayList<ToggleObjectImage>(); + } + + public void check(final Animation animation, final BControl control) { + + boolean set = false; + + // Collect evaluate predicate objects in list + for (ToggleObjectImage obj : toggleObjects) { + + obj.setHasError(false); + + // First evaluate predicate (predicate field) + String bolValue = "true"; + if (obj.getEval().length() > 0) { + bolValue = BMSUtil.parsePredicate(obj.getEval(), control, + animation); + } + + if (!obj.hasError() && Boolean.valueOf(bolValue)) { + + String fImage = obj.getImage(); + + if (obj.isExpressionMode()) { // Expression mode + fImage = BMSUtil.parseExpression(obj.getImage(), control, + animation); + } + + IFile pFile = control.getVisualization().getProjectFile(); + String myPath = (pFile.getProject().getLocation() + "/images/" + fImage) + .replace("file:", ""); + if (!new File(myPath).exists()) { + // addError(control, animation, + // "No such image in your library: " + fImage); + } + + if (!obj.hasError()) { + if (!control.getAttributeValue( + AttributeConstants.ATTRIBUTE_IMAGE).equals(fImage)) { + control.setAttributeValue( + AttributeConstants.ATTRIBUTE_IMAGE, fImage, + true, false); + } + } + + set = true; + + } + + } + + if (!set) + control.restoreDefaultValue(AttributeConstants.ATTRIBUTE_IMAGE); + + } + + public ObserverWizard getWizard(final BControl bcontrol) { + return new WizardObserverSwitchImage(bcontrol, this); + } + + public List<ToggleObjectImage> getToggleObjects() { + return this.toggleObjects; + } + + public void setToggleObjects(final List<ToggleObjectImage> list) { + this.toggleObjects = list; + } + + public Observer clone() throws CloneNotSupportedException { + SwitchImage clonedObserver = (SwitchImage) super.clone(); + List<ToggleObjectImage> list = new ArrayList<ToggleObjectImage>(); + for (ToggleObjectImage obj : getToggleObjects()) { + list.add(obj.clone()); + } + clonedObserver.setToggleObjects(list); + return clonedObserver; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java index 2d9bd952c607c2a18a8171f360314c089f2610d0..0ebd9af41725df1c3d7b59819f7534bfa0846886 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectCoordinates.java @@ -12,27 +12,28 @@ public class ToggleObjectCoordinates extends ObserverEvalObject implements private String bcontrol; private String x; private String y; - private Boolean animate; + + // private Boolean animate; public ToggleObjectCoordinates() { super(); this.x = ""; this.y = ""; - this.animate = false; + // this.animate = false; } public ToggleObjectCoordinates(String type, String bcontrol, String x, - String y, String eval, Boolean animate) { + String y, String eval) { super(type, eval); this.bcontrol = bcontrol; this.x = x; this.y = y; - this.animate = animate; + // this.animate = animate; } public ToggleObjectCoordinates(String type, String x, String y, - String eval, Boolean animate) { - this(type, null, x, y, eval, animate); + String eval) { + this(type, null, x, y, eval); } public String getBcontrol() { @@ -47,9 +48,9 @@ public class ToggleObjectCoordinates extends ObserverEvalObject implements return y; } - public Boolean getAnimate() { - return animate; - } + // public Boolean getAnimate() { + // return animate; + // } public void setBcontrol(String bcontrol) { Object oldValue = this.bcontrol; @@ -69,11 +70,11 @@ public class ToggleObjectCoordinates extends ObserverEvalObject implements firePropertyChange("y", oldValue, this.y); } - public void setAnimate(Boolean animate) { - Object oldValue = this.animate; - this.animate = animate; - firePropertyChange("animate", oldValue, this.animate); - } + // public void setAnimate(Boolean animate) { + // Object oldValue = this.animate; + // this.animate = animate; + // firePropertyChange("animate", oldValue, this.animate); + // } public ToggleObjectCoordinates clone() throws CloneNotSupportedException { return (ToggleObjectCoordinates) super.clone(); diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java index 5169e967a6ec6bf3c06612d5219e952bba40aff2..dcd321623e5df59845f339638bacee19a1b31cba 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/ToggleObjectImage.java @@ -1,36 +1,36 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer; - - -public class ToggleObjectImage extends ObserverEvalObject implements Cloneable { - - private String image; - - public ToggleObjectImage() { - } - - public ToggleObjectImage(String type, String image, String eval) { - super(type, eval); - this.image = image; - } - - public String getImage() { - return image; - } - - public void setImage(String image) { - Object oldValue = this.image; - this.image = image; - firePropertyChange("image", oldValue, this.image); - } - - public ToggleObjectImage clone() throws CloneNotSupportedException { - return (ToggleObjectImage) super.clone(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer; + + +public class ToggleObjectImage extends ObserverEvalObject implements Cloneable { + + private String image; + + public ToggleObjectImage() { + } + + public ToggleObjectImage(String type, String image, String eval) { + super(type, eval); + this.image = image; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + Object oldValue = this.image; + this.image = image; + firePropertyChange("image", oldValue, this.image); + } + + public ToggleObjectImage clone() throws CloneNotSupportedException { + return (ToggleObjectImage) super.clone(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java new file mode 100644 index 0000000000000000000000000000000000000000..04c3a5cd6d6850073f3666b70767eb971400eba6 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardColumnObserver.java @@ -0,0 +1,125 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer.wizard; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.beans.BeansObservables; +import org.eclipse.jface.databinding.swt.SWTObservables; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.ColumnObserver; +import de.bmotionstudio.gef.editor.observer.Observer; +import de.bmotionstudio.gef.editor.observer.ObserverWizard; + +public class WizardColumnObserver extends ObserverWizard { + + private class ColumnObserverPage extends WizardPage { + + private Text txtExpression; + private Text txtPredicate; + + public Text getTxtExpression() { + return txtExpression; + } + + protected ColumnObserverPage(final String pageName) { + super(pageName); + } + + public void createControl(final Composite parent) { + + final DataBindingContext dbc = new DataBindingContext(); + + Composite container = new Composite(parent, SWT.NONE); + + container.setLayoutData(new GridData(GridData.FILL_BOTH)); + container.setLayout(new GridLayout(2, false)); + + Label lb = new Label(container, SWT.NONE); + lb.setText("Predicate:"); + + txtPredicate = new Text(container, SWT.BORDER); + txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + txtPredicate.setFont(new Font(Display.getDefault(), new FontData( + "Arial", 10, SWT.NONE))); + + lb = new Label(container, SWT.NONE); + lb.setText("Expression:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + + txtExpression = new Text(container, SWT.BORDER | SWT.MULTI + | SWT.WRAP); + txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); + + initBindings(dbc); + + setControl(container); + + } + + private void initBindings(DataBindingContext dbc) { + + dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), + BeansObservables.observeValue( + (ColumnObserver) getObserver(), "predicate")); + + dbc.bindValue( + SWTObservables.observeText(txtExpression, SWT.Modify), + BeansObservables.observeValue( + (ColumnObserver) getObserver(), "expression")); + + } + + } + + public WizardColumnObserver(BControl bcontrol, + Observer bobserver) { + super(bcontrol, bobserver); + addPage(new ColumnObserverPage("ColumnObserverPage")); + } + + @Override + protected Boolean prepareToFinish() { + + ColumnObserverPage page = (ColumnObserverPage) getPage("ColumnObserverPage"); + + String errorStr = ""; + + if (page.getTxtExpression().getText().length() == 0) + errorStr += "Please enter an expression.\n"; + + if (page.getErrorMessage() != null) + errorStr += "Please check the syntax/parser error.\n"; + + if (errorStr.length() > 0) { + MessageDialog.openError(Display.getDefault().getActiveShell(), + "An Error occured", errorStr); + return false; + } + + return true; + + } + + @Override + public Point getSize() { + return new Point(600, 500); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java index 4b5d60ba5405ff3692fea523b69d5390958e838e..38305895ce7b0dc8bf14daf12637378cd77d9eb9 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverCSwitchCoordinates.java @@ -13,9 +13,6 @@ import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.CheckboxCellEditor; -import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableColorProvider; @@ -41,6 +38,7 @@ import org.eclipse.swt.widgets.Display; import de.be4.classicalb.core.parser.BParser; import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; @@ -51,8 +49,7 @@ import de.bmotionstudio.gef.editor.observer.ObserverEvalObject; import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.bmotionstudio.gef.editor.observer.SwitchChildCoordinates; import de.bmotionstudio.gef.editor.observer.ToggleObjectCoordinates; -import de.bmotionstudio.gef.editor.property.CheckboxCellEditorHelper; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverCSwitchCoordinates extends ObserverWizard { @@ -73,9 +70,9 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard { Composite container = new Composite(parent, SWT.NONE); container.setLayout(new GridLayout(1, true)); - tableViewer = WizardObserverUtil.createObserverWizardTableViewer( + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( container, ToggleObjectCoordinates.class, - (ObserverWizard) getWizard()); + ((BMotionAbstractWizard) getWizard()).getName()); tableViewer .addSelectionChangedListener(new ISelectionChangedListener() { @@ -97,8 +94,10 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard { .getBcontrol(); BControl bControl = control.getChild(controlID); if (bControl != null) { - bControl.setAttributeValue(attributeX, x); - bControl.setAttributeValue(attributeY, y); + bControl.setAttributeValue(attributeX, x, + true, false); + bControl.setAttributeValue(attributeY, y, + true, false); } lastChangedControlID = controlID; } @@ -131,38 +130,38 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard { column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "y")); - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Animate?"); - column.getColumn().setWidth(75); - column.setEditingSupport(new EditingSupport(tableViewer) { - - private CellEditor cellEditor = new CheckboxCellEditor( - (Composite) tableViewer.getControl()); - - @Override - protected void setValue(Object element, Object value) { - ((ToggleObjectCoordinates) element).setAnimate(Boolean - .valueOf(String.valueOf(value))); - } - - @Override - protected Object getValue(Object element) { - Boolean b = ((ToggleObjectCoordinates) element) - .getAnimate(); - return b != null ? b : false; - } - - @Override - protected CellEditor getCellEditor(Object element) { - return cellEditor; - } - - @Override - protected boolean canEdit(Object element) { - return true; - } - - }); + // column = new TableViewerColumn(tableViewer, SWT.NONE); + // column.getColumn().setText("Animate?"); + // column.getColumn().setWidth(75); + // column.setEditingSupport(new EditingSupport(tableViewer) { + // + // private CellEditor cellEditor = new CheckboxCellEditor( + // (Composite) tableViewer.getControl()); + // + // @Override + // protected void setValue(Object element, Object value) { + // ((ToggleObjectCoordinates) element).setAnimate(Boolean + // .valueOf(String.valueOf(value))); + // } + // + // @Override + // protected Object getValue(Object element) { + // Boolean b = ((ToggleObjectCoordinates) element) + // .getAnimate(); + // return b != null ? b : false; + // } + // + // @Override + // protected CellEditor getCellEditor(Object element) { + // return cellEditor; + // } + // + // @Override + // protected boolean canEdit(Object element) { + // return true; + // } + // + // }); ObservableListContentProvider contentProvider = new ObservableListContentProvider(); tableViewer.setContentProvider(contentProvider); @@ -206,7 +205,7 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard { @Override public void widgetSelected(SelectionEvent e) { ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates( - BParser.PREDICATE_PREFIX, "", "", "", "", false); + BParser.PREDICATE_PREFIX, "", "", "", ""); input.add(toggleObj); } }); @@ -288,11 +287,11 @@ public class WizardObserverCSwitchCoordinates extends ObserverWizard { @Override public Image getColumnImage(Object element, int columnIndex) { - if (columnIndex == 4) { - return CheckboxCellEditorHelper - .getCellEditorImage(((ToggleObjectCoordinates) element) - .getAnimate()); - } + // if (columnIndex == 4) { + // return CheckboxCellEditorHelper + // .getCellEditorImage(((ToggleObjectCoordinates) element) + // .getAnimate()); + // } return null; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverClone.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverClone.java deleted file mode 100644 index 9c17c7d43ac6589d3e3d727be449814df8b60b62..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverClone.java +++ /dev/null @@ -1,242 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer.wizard; - -import org.eclipse.core.databinding.DataBindingContext; -import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.core.databinding.observable.list.WritableList; -import org.eclipse.core.databinding.observable.map.IObservableMap; -import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; -import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITableColorProvider; -import org.eclipse.jface.viewers.ITableFontProvider; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; - -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.EditorImageRegistry; -import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; -import de.bmotionstudio.gef.editor.edit.TextEditingSupport; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.CloneObserver; -import de.bmotionstudio.gef.editor.observer.Observer; -import de.bmotionstudio.gef.editor.observer.ObserverCloneObject; -import de.bmotionstudio.gef.editor.observer.ObserverWizard; - -/** - * @author Lukas Ladenberger - * - */ -public class WizardObserverClone extends ObserverWizard { - - public WizardObserverClone(BControl control, Observer observer) { - super(control, observer); - addPage(new WizardObserverClonePage("WizardObserverClonePage")); - } - - private class WizardObserverClonePage extends WizardPage { - - private TableViewer tableViewer; - - protected WizardObserverClonePage(String pageName) { - super(pageName); - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt - * .widgets.Composite) - */ - @Override - public void createControl(Composite parent) { - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(new GridLayout(1, true)); - - setControl(container); - - tableViewer = new TableViewer(container, SWT.BORDER - | SWT.FULL_SELECTION); - tableViewer.getTable().setLinesVisible(true); - tableViewer.getTable().setHeaderVisible(true); - tableViewer.getTable().setLayoutData( - new GridData(GridData.FILL_BOTH)); - tableViewer.getTable().setFont( - new Font(Display.getDefault(), new FontData("Arial", 10, - SWT.NONE))); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Expression"); - column.getColumn().setWidth(200); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "eval", getBControl().getVisualization(), getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Control"); - column.getColumn().setWidth(175); - column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - "controlId")); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Count from"); - column.getColumn().setWidth(125); - column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - "counter")); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - tableViewer.setLabelProvider(new ObserverLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "eval", "controlId", "counter" }))); - - final WritableList input = new WritableList( - ((CloneObserver) getObserver()).getObserverCloneObjects(), - ObserverCloneObject.class); - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - ObserverCloneObject obj = (ObserverCloneObject) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(obj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_ADD)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - ObserverCloneObject obj = new ObserverCloneObject(); - input.add(obj); - } - }); - - } - - } - - /* - * (non-Javadoc) - * - * @see - * de.bmotionstudio.gef.editor.observer.ObserverWizard#prepareToFinish() - */ - @Override - protected Boolean prepareToFinish() { - if (((CloneObserver) getObserver()).getObserverCloneObjects().size() == 0) { - setObserverDelete(true); - } else { - for (ObserverCloneObject obj : ((CloneObserver) getObserver()) - .getObserverCloneObjects()) { - if (obj.getEval() == null || obj.getControlId() == null) { - MessageDialog - .openError(getShell(), "Please check your entries", - "Please check your entries. The eval and control field must not be empty."); - return false; - } - } - } - return true; - } - - /* - * (non-Javadoc) - * - * @see de.bmotionstudio.gef.editor.observer.ObserverWizard#getSize() - */ - @Override - public Point getSize() { - return new Point(700, 500); - } - - private static class ObserverLabelProvider extends - ObservableMapLabelProvider implements ITableLabelProvider, - ITableColorProvider, ITableFontProvider { - - public ObserverLabelProvider(IObservableMap[] attributeMaps) { - super(attributeMaps); - } - - private final Color errorColor = Display.getDefault().getSystemColor( - SWT.COLOR_INFO_BACKGROUND); - - @Override - public Image getColumnImage(Object element, int columnIndex) { - return null; - } - - @Override - public String getColumnText(Object element, int columnIndex) { - ObserverCloneObject obj = (ObserverCloneObject) element; - if (columnIndex == 0) { - return obj.getEval(); - } - if (columnIndex == 1) { - return obj.getControlId(); - } - return super.getColumnText(element, columnIndex); - } - - public Color getBackground(final Object element, final int column) { - ObserverCloneObject obj = (ObserverCloneObject) element; - if (obj.hasError()) - return errorColor; - return null; - } - - public Color getForeground(final Object element, final int column) { - return null; - } - - public Font getFont(final Object element, final int column) { - // return JFaceResources.getFontRegistry().get( - // BMotionStudioConstants.RODIN_FONT_KEY); - return null; - } - - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDragListener.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDragListener.java index 45b1c1addd31f3ce940c0a33f9dd31ffe5638491..69554add9f7ac05047108fba97e76f06dca4915f 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDragListener.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDragListener.java @@ -1,37 +1,37 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ -package de.bmotionstudio.gef.editor.observer.wizard; - -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.swt.dnd.DragSourceEvent; -import org.eclipse.swt.dnd.DragSourceListener; - -public class WizardObserverDragListener implements DragSourceListener { - - private final TableViewer viewer; - - public WizardObserverDragListener(TableViewer viewer) { - this.viewer = viewer; - } - - @Override - public void dragFinished(DragSourceEvent event) { - } - - @Override - public void dragSetData(DragSourceEvent event) { - IStructuredSelection selection = (IStructuredSelection) viewer - .getSelection(); - Object[] lobjects = selection.toArray(); - event.data = lobjects; - } - - @Override - public void dragStart(DragSourceEvent event) { - } - +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ +package de.bmotionstudio.gef.editor.observer.wizard; + +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.dnd.DragSourceEvent; +import org.eclipse.swt.dnd.DragSourceListener; + +public class WizardObserverDragListener implements DragSourceListener { + + private final TableViewer viewer; + + public WizardObserverDragListener(TableViewer viewer) { + this.viewer = viewer; + } + + @Override + public void dragFinished(DragSourceEvent event) { + } + + @Override + public void dragSetData(DragSourceEvent event) { + IStructuredSelection selection = (IStructuredSelection) viewer + .getSelection(); + Object[] lobjects = selection.toArray(); + event.data = lobjects; + } + + @Override + public void dragStart(DragSourceEvent event) { + } + } \ No newline at end of file diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDropListener.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDropListener.java index b9d4c121b3cf3185f749bc15d2a9444b2df990e9..60ddc0b7291b730cf45440468af27c5c8fe7a74b 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDropListener.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverDropListener.java @@ -1,94 +1,94 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ -package de.bmotionstudio.gef.editor.observer.wizard; - -import org.eclipse.core.databinding.observable.list.WritableList; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerDropAdapter; -import org.eclipse.swt.dnd.DropTargetEvent; -import org.eclipse.swt.dnd.TransferData; -import org.eclipse.swt.widgets.Display; - -import de.bmotionstudio.gef.editor.observer.ObserverEvalObject; - -public class WizardObserverDropListener extends ViewerDropAdapter { - - private String observerName; - - public WizardObserverDropListener(Viewer viewer, String observerName) { - super(viewer); - this.observerName = observerName; - } - - @Override - public void drop(DropTargetEvent event) { - - Object[] sourceSetAttributeObjects = (Object[]) event.data; - Object targetSetAttributeObject = determineTarget(event); - - Object input = getViewer().getInput(); - if (input instanceof WritableList) { - - WritableList list = (WritableList) input; - - for (Object sourceObject : sourceSetAttributeObjects) { - - if (sourceObject instanceof ObserverEvalObject) { - - ObserverEvalObject sourceEvalObject = (ObserverEvalObject) sourceObject; - - if (sourceObject.getClass().equals(list.getElementType())) { - - int indexOf = list.indexOf(targetSetAttributeObject); - if (indexOf == -1) - indexOf = 0; - ObserverEvalObject newElement = sourceEvalObject; - if (!list.remove(sourceEvalObject)) { - try { - newElement = sourceEvalObject.clone(); - } catch (CloneNotSupportedException e) { - e.printStackTrace(); - } - } - - list.add(indexOf, newElement); - - } else { - - MessageDialog.openInformation(Display.getDefault() - .getActiveShell(), - "Drag and Drop is not supported", - "It is not possible to add an item of the type " - + sourceEvalObject.getClass() - + " to the observer \"" + observerName - + "\"."); - - } - - } - - } - - } - - super.drop(event); - - } - - @Override - public boolean performDrop(Object data) { - return false; - } - - @Override - public boolean validateDrop(Object target, int operation, - TransferData transferType) { - return true; - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ +package de.bmotionstudio.gef.editor.observer.wizard; + +import org.eclipse.core.databinding.observable.list.WritableList; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerDropAdapter; +import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.swt.dnd.TransferData; +import org.eclipse.swt.widgets.Display; + +import de.bmotionstudio.gef.editor.observer.ObserverEvalObject; + +public class WizardObserverDropListener extends ViewerDropAdapter { + + private String observerName; + + public WizardObserverDropListener(Viewer viewer, String observerName) { + super(viewer); + this.observerName = observerName; + } + + @Override + public void drop(DropTargetEvent event) { + + Object[] sourceSetAttributeObjects = (Object[]) event.data; + Object targetSetAttributeObject = determineTarget(event); + + Object input = getViewer().getInput(); + if (input instanceof WritableList) { + + WritableList list = (WritableList) input; + + for (Object sourceObject : sourceSetAttributeObjects) { + + if (sourceObject instanceof ObserverEvalObject) { + + ObserverEvalObject sourceEvalObject = (ObserverEvalObject) sourceObject; + + if (sourceObject.getClass().equals(list.getElementType())) { + + int indexOf = list.indexOf(targetSetAttributeObject); + if (indexOf == -1) + indexOf = 0; + ObserverEvalObject newElement = sourceEvalObject; + if (!list.remove(sourceEvalObject)) { + try { + newElement = sourceEvalObject.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + } + + list.add(indexOf, newElement); + + } else { + + MessageDialog.openInformation(Display.getDefault() + .getActiveShell(), + "Drag and Drop is not supported", + "It is not possible to add an item of the type " + + sourceEvalObject.getClass() + + " to the observer \"" + observerName + + "\"."); + + } + + } + + } + + } + + super.drop(event); + + } + + @Override + public boolean performDrop(Object data) { + return false; + } + + @Override + public boolean validateDrop(Object target, int operation, + TransferData transferType) { + return true; + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java new file mode 100644 index 0000000000000000000000000000000000000000..9e4c0d4e57f8aaec0519b81a7afdb3c4d932616b --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverExternalObserverScript.java @@ -0,0 +1,111 @@ +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer.wizard; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.beans.BeansObservables; +import org.eclipse.jface.databinding.swt.SWTObservables; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.ExternalObserverScript; +import de.bmotionstudio.gef.editor.observer.Observer; +import de.bmotionstudio.gef.editor.observer.ObserverWizard; + +public class WizardObserverExternalObserverScript extends ObserverWizard { + + private class ObserverExternalObserverScriptPage extends WizardPage { + + private Text txtScriptPath; + + protected ObserverExternalObserverScriptPage(final String pageName) { + super(pageName); + } + + public Text getTxtScriptPath() { + return txtScriptPath; + } + + public void createControl(final Composite parent) { + + final DataBindingContext dbc = new DataBindingContext(); + + Composite container = new Composite(parent, SWT.NONE); + container.setLayoutData(new GridData(GridData.FILL_BOTH)); + container.setLayout(new GridLayout(2, false)); + + Label lb = new Label(container, SWT.NONE); + lb.setText("Script File:"); + + txtScriptPath = new Text(container, SWT.BORDER); + txtScriptPath.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + txtScriptPath.setFont(new Font(Display.getDefault(), new FontData( + "Arial", 10, SWT.NONE))); + + initBindings(dbc); + + setControl(container); + + } + + private void initBindings(DataBindingContext dbc) { + + dbc.bindValue( + SWTObservables.observeText(txtScriptPath, SWT.Modify), + BeansObservables.observeValue( + (ExternalObserverScript) getObserver(), + "scriptPath")); + + } + + + } + + public WizardObserverExternalObserverScript(BControl bcontrol, + Observer bobserver) { + super(bcontrol, bobserver); + addPage(new ObserverExternalObserverScriptPage( + "ObserverExternalObserverScriptPage")); + } + + @Override + protected Boolean prepareToFinish() { + + ObserverExternalObserverScriptPage page = (ObserverExternalObserverScriptPage) getPage("ObserverExternalObserverScriptPage"); + + String errorStr = ""; + + if (page.getTxtScriptPath().getText().length() == 0) + errorStr += "Please enter a path for a script file.\n"; + + if (errorStr.length() > 0) { + MessageDialog.openError(Display.getDefault().getActiveShell(), + "An Error occured", errorStr); + return false; + } + + return true; + + } + + @Override + public Point getSize() { + return new Point(600, 500); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java index fc8c82ee37d87c542bb75f3a76c6daa2b2182e4d..e5bf19cf76510f3bfe7df16a056fc6c5a3239c65 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverListenOperationByPredicate.java @@ -20,11 +20,13 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ComboBoxViewerCellEditor; import org.eclipse.jface.viewers.EditingSupport; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableColorProvider; import org.eclipse.jface.viewers.ITableFontProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; @@ -45,6 +47,7 @@ import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; @@ -55,13 +58,16 @@ import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.observer.ListenOperationByPredicate; import de.bmotionstudio.gef.editor.observer.Observer; +import de.bmotionstudio.gef.editor.observer.ObserverEvalObject; import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.bmotionstudio.gef.editor.property.CheckboxCellEditorHelper; import de.bmotionstudio.gef.editor.scheduler.PredicateOperation; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverListenOperationByPredicate extends ObserverWizard { + private String lastChangedAttributeID; + private class ObserverListenOperationByPredicatePage extends WizardPage { private TableViewer tableViewer; @@ -79,9 +85,38 @@ public class WizardObserverListenOperationByPredicate extends ObserverWizard { setControl(container); - tableViewer = WizardObserverUtil.createObserverWizardTableViewer( + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( container, PredicateOperation.class, - (ObserverWizard) getWizard()); + ((BMotionAbstractWizard) getWizard()).getName()); + tableViewer + .addSelectionChangedListener(new ISelectionChangedListener() { + + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection selection = (IStructuredSelection) event + .getSelection(); + Object firstElement = selection.getFirstElement(); + if (firstElement instanceof ObserverEvalObject) { + + ObserverEvalObject observerEvalObject = (ObserverEvalObject) firstElement; + BControl control = getBControl(); + + if (lastChangedAttributeID != null) + control.restoreDefaultValue(lastChangedAttributeID); + + PredicateOperation obj = (PredicateOperation) observerEvalObject; + String attribute = obj + .getAttribute(); + Object value = obj.getValue(); + control.setAttributeValue(attribute, value, + true, false); + + lastChangedAttributeID = attribute; + + } + } + + }); TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); @@ -222,7 +257,7 @@ public class WizardObserverListenOperationByPredicate extends ObserverWizard { @Override protected boolean canEdit(Object element) { - return WizardObserverUtil.isEditElement(getViewer()); + return BMotionWizardUtil.isEditElement(getViewer()); } @Override @@ -314,8 +349,15 @@ public class WizardObserverListenOperationByPredicate extends ObserverWizard { "ObserverListenOperationByPredicatePage")); } + @Override + public boolean performCancel() { + getBControl().restoreDefaultValue(lastChangedAttributeID); + return super.performCancel(); + } + @Override protected Boolean prepareToFinish() { + getBControl().restoreDefaultValue(lastChangedAttributeID); if (((ListenOperationByPredicate) getObserver()).getList().size() == 0) { setObserverDelete(true); } else { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java index 67cf0e0d8415260bf5bba7b79081fa38144805ae..fae15b93d5eb8f872d7481ec19c451c0a67c2588 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSetAttribute.java @@ -48,6 +48,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import de.be4.classicalb.core.parser.BParser; +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.attribute.AbstractAttribute; @@ -61,7 +62,7 @@ import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.bmotionstudio.gef.editor.observer.SetAttribute; import de.bmotionstudio.gef.editor.observer.SetAttributeObject; import de.bmotionstudio.gef.editor.property.CheckboxCellEditorHelper; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSetAttribute extends ObserverWizard { @@ -90,9 +91,9 @@ public class WizardObserverSetAttribute extends ObserverWizard { Composite container = new Composite(parent, SWT.NONE); container.setLayout(gl); - tableViewer = WizardObserverUtil.createObserverWizardTableViewer( + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( container, SetAttributeObject.class, - (ObserverWizard) getWizard()); + ((BMotionAbstractWizard) getWizard()).getName()); tableViewer .addSelectionChangedListener(new ISelectionChangedListener() { @@ -114,7 +115,8 @@ public class WizardObserverSetAttribute extends ObserverWizard { String attribute = setAttributeObj .getAttribute(); Object value = setAttributeObj.getValue(); - control.setAttributeValue(attribute, value); + control.setAttributeValue(attribute, value, + true, false); lastChangedAttributeID = attribute; @@ -216,7 +218,7 @@ public class WizardObserverSetAttribute extends ObserverWizard { @Override protected boolean canEdit(Object element) { - return WizardObserverUtil.isEditElement(getViewer()); + return BMotionWizardUtil.isEditElement(getViewer()); } @Override diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java index 25c9eeea409159ca248eb48c4c0261ab196873e3..f8a7040057b65872931d09c65190837f27bd4c36 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSimpleValueDisplay.java @@ -1,142 +1,142 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.observer.wizard; - -import org.eclipse.core.databinding.DataBindingContext; -import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.jface.databinding.swt.SWTObservables; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.observer.Observer; -import de.bmotionstudio.gef.editor.observer.ObserverWizard; -import de.bmotionstudio.gef.editor.observer.SimpleValueDisplay; - -public class WizardObserverSimpleValueDisplay extends ObserverWizard { - - private class ObserverSimpleValueDisplayPage extends WizardPage { - - private Text txtReplacementString; - private Text txtExpression; - private Text txtPredicate; - - public Text getTxtExpression() { - return txtExpression; - } - - protected ObserverSimpleValueDisplayPage(final String pageName) { - super(pageName); - } - - public void createControl(final Composite parent) { - - final DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - - container.setLayoutData(new GridData(GridData.FILL_BOTH)); - container.setLayout(new GridLayout(2, false)); - - Label lb = new Label(container, SWT.NONE); - lb.setText("Predicate:"); - - txtPredicate = new Text(container, SWT.BORDER); - txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - txtPredicate.setFont(new Font(Display.getDefault(), new FontData( - "Arial", 10, SWT.NONE))); - - lb = new Label(container, SWT.NONE); - lb.setText("Expression:"); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - - txtExpression = new Text(container, SWT.BORDER | SWT.MULTI - | SWT.WRAP); - txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); - // txtExpression.setFont(JFaceResources.getFontRegistry().get( - // BMotionStudioConstants.RODIN_FONT_KEY)); - - lb = new Label(container, SWT.NONE); - lb.setText("Replacement String:"); - - txtReplacementString = new Text(container, SWT.BORDER); - txtReplacementString.setLayoutData(new GridData( - GridData.FILL_HORIZONTAL)); - txtReplacementString.setFont(new Font(Display.getDefault(), - new FontData("Arial", 10, SWT.NONE))); - - initBindings(dbc); - - setControl(container); - - } - - private void initBindings(DataBindingContext dbc) { - - dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), - BeansObservables.observeValue( - (SimpleValueDisplay) getObserver(), "predicate")); - - dbc.bindValue( - SWTObservables.observeText(txtExpression, SWT.Modify), - BeansObservables.observeValue( - (SimpleValueDisplay) getObserver(), "eval")); - - dbc.bindValue(SWTObservables.observeText(txtReplacementString, - SWT.Modify), BeansObservables.observeValue( - (SimpleValueDisplay) getObserver(), "replacementString")); - - } - - } - - public WizardObserverSimpleValueDisplay(BControl bcontrol, - Observer bobserver) { - super(bcontrol, bobserver); - addPage(new ObserverSimpleValueDisplayPage( - "ObserverSimpleValueDisplayPage")); - } - - @Override - protected Boolean prepareToFinish() { - - ObserverSimpleValueDisplayPage page = (ObserverSimpleValueDisplayPage) getPage("ObserverSimpleValueDisplayPage"); - - String errorStr = ""; - - if (page.getTxtExpression().getText().length() == 0) - errorStr += "Please enter an expression.\n"; - - if (page.getErrorMessage() != null) - errorStr += "Please check the syntax/parser error.\n"; - - if (errorStr.length() > 0) { - MessageDialog.openError(Display.getDefault().getActiveShell(), - "An Error occured", errorStr); - return false; - } - - return true; - - } - - @Override - public Point getSize() { - return new Point(600, 500); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.observer.wizard; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.beans.BeansObservables; +import org.eclipse.jface.databinding.swt.SWTObservables; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.observer.Observer; +import de.bmotionstudio.gef.editor.observer.ObserverWizard; +import de.bmotionstudio.gef.editor.observer.SimpleValueDisplay; + +public class WizardObserverSimpleValueDisplay extends ObserverWizard { + + private class ObserverSimpleValueDisplayPage extends WizardPage { + + private Text txtReplacementString; + private Text txtExpression; + private Text txtPredicate; + + public Text getTxtExpression() { + return txtExpression; + } + + protected ObserverSimpleValueDisplayPage(final String pageName) { + super(pageName); + } + + public void createControl(final Composite parent) { + + final DataBindingContext dbc = new DataBindingContext(); + + Composite container = new Composite(parent, SWT.NONE); + + container.setLayoutData(new GridData(GridData.FILL_BOTH)); + container.setLayout(new GridLayout(2, false)); + + Label lb = new Label(container, SWT.NONE); + lb.setText("Predicate:"); + + txtPredicate = new Text(container, SWT.BORDER); + txtPredicate.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + txtPredicate.setFont(new Font(Display.getDefault(), new FontData( + "Arial", 10, SWT.NONE))); + + lb = new Label(container, SWT.NONE); + lb.setText("Expression:"); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + + txtExpression = new Text(container, SWT.BORDER | SWT.MULTI + | SWT.WRAP); + txtExpression.setLayoutData(new GridData(GridData.FILL_BOTH)); + // txtExpression.setFont(JFaceResources.getFontRegistry().get( + // BMotionStudioConstants.RODIN_FONT_KEY)); + + lb = new Label(container, SWT.NONE); + lb.setText("Replacement String:"); + + txtReplacementString = new Text(container, SWT.BORDER); + txtReplacementString.setLayoutData(new GridData( + GridData.FILL_HORIZONTAL)); + txtReplacementString.setFont(new Font(Display.getDefault(), + new FontData("Arial", 10, SWT.NONE))); + + initBindings(dbc); + + setControl(container); + + } + + private void initBindings(DataBindingContext dbc) { + + dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), + BeansObservables.observeValue( + (SimpleValueDisplay) getObserver(), "predicate")); + + dbc.bindValue( + SWTObservables.observeText(txtExpression, SWT.Modify), + BeansObservables.observeValue( + (SimpleValueDisplay) getObserver(), "eval")); + + dbc.bindValue(SWTObservables.observeText(txtReplacementString, + SWT.Modify), BeansObservables.observeValue( + (SimpleValueDisplay) getObserver(), "replacementString")); + + } + + } + + public WizardObserverSimpleValueDisplay(BControl bcontrol, + Observer bobserver) { + super(bcontrol, bobserver); + addPage(new ObserverSimpleValueDisplayPage( + "ObserverSimpleValueDisplayPage")); + } + + @Override + protected Boolean prepareToFinish() { + + ObserverSimpleValueDisplayPage page = (ObserverSimpleValueDisplayPage) getPage("ObserverSimpleValueDisplayPage"); + + String errorStr = ""; + + if (page.getTxtExpression().getText().length() == 0) + errorStr += "Please enter an expression.\n"; + + if (page.getErrorMessage() != null) + errorStr += "Please check the syntax/parser error.\n"; + + if (errorStr.length() > 0) { + MessageDialog.openError(Display.getDefault().getActiveShell(), + "An Error occured", errorStr); + return false; + } + + return true; + + } + + @Override + public Point getSize() { + return new Point(600, 500); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java index b5f0ddce18b852b4de05161a07b19ac4ca91be7d..b0082eefde87049d99f7c320587a2c3916b47636 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchCoordinates.java @@ -13,9 +13,6 @@ import org.eclipse.core.databinding.observable.map.IObservableMap; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.CheckboxCellEditor; -import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITableColorProvider; @@ -42,6 +39,7 @@ import org.eclipse.swt.widgets.Display; import de.be4.classicalb.core.parser.BParser; import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; @@ -52,8 +50,7 @@ import de.bmotionstudio.gef.editor.observer.ObserverEvalObject; import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.bmotionstudio.gef.editor.observer.SwitchCoordinates; import de.bmotionstudio.gef.editor.observer.ToggleObjectCoordinates; -import de.bmotionstudio.gef.editor.property.CheckboxCellEditorHelper; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSwitchCoordinates extends ObserverWizard { @@ -72,9 +69,9 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { Composite container = new Composite(parent, SWT.NONE); container.setLayout(new GridLayout(1, true)); - tableViewer = WizardObserverUtil.createObserverWizardTableViewer( + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( container, ToggleObjectCoordinates.class, - (ObserverWizard) getWizard()); + ((BMotionAbstractWizard) getWizard()).getName()); tableViewer .addSelectionChangedListener(new ISelectionChangedListener() { @@ -92,8 +89,10 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { String attributeY = AttributeConstants.ATTRIBUTE_Y; String x = toggleObjectCoordinates.getX(); String y = toggleObjectCoordinates.getY(); - control.setAttributeValue(attributeX, x); - control.setAttributeValue(attributeY, y); + control.setAttributeValue(attributeX, x, true, + false); + control.setAttributeValue(attributeY, y, true, + false); } } @@ -118,45 +117,45 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, "y")); - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Animate?"); - column.getColumn().setWidth(75); - column.setEditingSupport(new EditingSupport(tableViewer) { - - private CellEditor cellEditor = new CheckboxCellEditor( - (Composite) tableViewer.getControl()); - - @Override - protected void setValue(Object element, Object value) { - ((ToggleObjectCoordinates) element).setAnimate(Boolean - .valueOf(String.valueOf(value))); - } - - @Override - protected Object getValue(Object element) { - Boolean b = ((ToggleObjectCoordinates) element) - .getAnimate(); - return b != null ? b : false; - } - - @Override - protected CellEditor getCellEditor(Object element) { - return cellEditor; - } - - @Override - protected boolean canEdit(Object element) { - return true; - } - - }); + // column = new TableViewerColumn(tableViewer, SWT.NONE); + // column.getColumn().setText("Animate?"); + // column.getColumn().setWidth(75); + // column.setEditingSupport(new EditingSupport(tableViewer) { + // + // private CellEditor cellEditor = new CheckboxCellEditor( + // (Composite) tableViewer.getControl()); + // + // @Override + // protected void setValue(Object element, Object value) { + // ((ToggleObjectCoordinates) element).setAnimate(Boolean + // .valueOf(String.valueOf(value))); + // } + // + // @Override + // protected Object getValue(Object element) { + // Boolean b = ((ToggleObjectCoordinates) element) + // .getAnimate(); + // return b != null ? b : false; + // } + // + // @Override + // protected CellEditor getCellEditor(Object element) { + // return cellEditor; + // } + // + // @Override + // protected boolean canEdit(Object element) { + // return true; + // } + // + // }); ObservableListContentProvider contentProvider = new ObservableListContentProvider(); tableViewer.setContentProvider(contentProvider); tableViewer.setLabelProvider(new ObserverLabelProvider( BeansObservables.observeMaps( contentProvider.getKnownElements(), new String[] { - "eval", "x", "y", "animate" }))); + "eval", "x", "y" }))); final WritableList input = new WritableList( ((SwitchCoordinates) getObserver()).getToggleObjects(), @@ -191,7 +190,9 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { @Override public void widgetSelected(SelectionEvent e) { ToggleObjectCoordinates toggleObj = new ToggleObjectCoordinates( - BParser.PREDICATE_PREFIX, "", "", "", false); + BParser.PREDICATE_PREFIX, "", String + .valueOf(getBControl().getLayout().x), + String.valueOf(getBControl().getLayout().y), ""); input.add(toggleObj); tableViewer .setSelection(new StructuredSelection(toggleObj)); @@ -266,11 +267,11 @@ public class WizardObserverSwitchCoordinates extends ObserverWizard { @Override public Image getColumnImage(Object element, int columnIndex) { - if (columnIndex == 3) { - return CheckboxCellEditorHelper - .getCellEditorImage(((ToggleObjectCoordinates) element) - .getAnimate()); - } + // if (columnIndex == 3) { + // return CheckboxCellEditorHelper + // .getCellEditorImage(((ToggleObjectCoordinates) element) + // .getAnimate()); + // } return null; } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java index 169266c1efe1e2cf25d81988369e5c3b5afdb56e..b9e689f1bb1cbeb0da42dc59d61602594492e33a 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/observer/wizard/WizardObserverSwitchImage.java @@ -39,6 +39,7 @@ import org.eclipse.swt.widgets.Display; import de.be4.classicalb.core.parser.BParser; import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.EditorImageRegistry; import de.bmotionstudio.gef.editor.edit.AttributeExpressionEdittingSupport; @@ -51,7 +52,7 @@ import de.bmotionstudio.gef.editor.observer.ObserverWizard; import de.bmotionstudio.gef.editor.observer.SwitchImage; import de.bmotionstudio.gef.editor.observer.ToggleObjectImage; import de.bmotionstudio.gef.editor.property.CheckboxCellEditorHelper; -import de.bmotionstudio.gef.editor.util.WizardObserverUtil; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; public class WizardObserverSwitchImage extends ObserverWizard { @@ -70,9 +71,9 @@ public class WizardObserverSwitchImage extends ObserverWizard { Composite container = new Composite(parent, SWT.NONE); container.setLayout(new GridLayout(1, true)); - tableViewer = WizardObserverUtil.createObserverWizardTableViewer( + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( container, ToggleObjectImage.class, - (ObserverWizard) getWizard()); + ((BMotionAbstractWizard) getWizard()).getName()); tableViewer .addSelectionChangedListener(new ISelectionChangedListener() { @@ -87,7 +88,8 @@ public class WizardObserverSwitchImage extends ObserverWizard { ToggleObjectImage toggleObjImage = (ToggleObjectImage) observerEvalObject; String attribute = AttributeConstants.ATTRIBUTE_IMAGE; String image = toggleObjImage.getImage(); - control.setAttributeValue(attribute, image); + control.setAttributeValue(attribute, image, + true, false); } } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppAbstractEditPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppAbstractEditPart.java index 91e73bff97e9777486da75c13b95de080b142937..91a5bc5ac8126ea58d40898cac1c77e759e5f432 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppAbstractEditPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppAbstractEditPart.java @@ -195,12 +195,12 @@ public abstract class AppAbstractEditPart extends AbstractGraphicalEditPart } else if (Arrays.asList(layoutAttributes).contains(propName)) { // Layout attribute if (isRunning()) { - Display.getDefault().asyncExec(new Runnable() { - @Override - public void run() { + // Display.getDefault().asyncExec(new Runnable() { + // @Override + // public void run() { refreshEditLayout(figure, model); - } - }); + // } + // }); } else { refreshEditLayout(figure, model); } @@ -208,12 +208,12 @@ public abstract class AppAbstractEditPart extends AbstractGraphicalEditPart // Custom attribute if (isRunning()) { - Display.getDefault().asyncExec(new Runnable() { - @Override - public void run() { + // Display.getDefault().asyncExec(new Runnable() { + // @Override + // public void run() { refreshEditFigure(figure, model, evt); - } - }); + // } + // }); } else { refreshEditFigure(figure, model, evt); } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppAbstractTreeEditPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppAbstractTreeEditPart.java index d1a5aa44614294ac08b22607eacf2bda477b676d..598d5f6bef4f92f5d7c2d4c703bf311331ed999d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppAbstractTreeEditPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppAbstractTreeEditPart.java @@ -1,58 +1,58 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.beans.PropertyChangeListener; - -import org.eclipse.gef.EditPolicy; -import org.eclipse.gef.Request; -import org.eclipse.gef.RequestConstants; -import org.eclipse.gef.editparts.AbstractTreeEditPart; -import org.eclipse.ui.IPageLayout; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; - -import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; -import de.bmotionstudio.gef.editor.model.BControl; - -public abstract class AppAbstractTreeEditPart extends AbstractTreeEditPart - implements PropertyChangeListener { - - public void activate() { - if (!isActive()) { - super.activate(); - ((BControl) getModel()).addPropertyChangeListener(this); - } - } - - public void deactivate() { - if (isActive()) { - super.deactivate(); - ((BControl) getModel()).removePropertyChangeListener(this); - } - } - - @Override - public void performRequest(Request req) { - if (req.getType().equals(RequestConstants.REQ_OPEN)) { - try { - IWorkbenchPage page = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - page.showView(IPageLayout.ID_PROP_SHEET); - } catch (PartInitException e) { - e.printStackTrace(); - } - } - } - - @Override - protected void createEditPolicies() { - installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeListener; + +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.RequestConstants; +import org.eclipse.gef.editparts.AbstractTreeEditPart; +import org.eclipse.ui.IPageLayout; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; + +import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; +import de.bmotionstudio.gef.editor.model.BControl; + +public abstract class AppAbstractTreeEditPart extends AbstractTreeEditPart + implements PropertyChangeListener { + + public void activate() { + if (!isActive()) { + super.activate(); + ((BControl) getModel()).addPropertyChangeListener(this); + } + } + + public void deactivate() { + if (isActive()) { + super.deactivate(); + ((BControl) getModel()).removePropertyChangeListener(this); + } + } + + @Override + public void performRequest(Request req) { + if (req.getType().equals(RequestConstants.REQ_OPEN)) { + try { + IWorkbenchPage page = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow().getActivePage(); + page.showView(IPageLayout.ID_PROP_SHEET); + } catch (PartInitException e) { + e.printStackTrace(); + } + } + } + + @Override + protected void createEditPolicies() { + installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppEditPartFactory.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppEditPartFactory.java index 392ad3670b169c3666385f3b91c512dfa0404ec8..ed44ebee49f3f665eec1254841f206e51380b760 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppEditPartFactory.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppEditPartFactory.java @@ -1,49 +1,53 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.gef.EditPart; -import org.eclipse.gef.EditPartFactory; -import org.eclipse.gef.editparts.AbstractGraphicalEditPart; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.IBControlService; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.Visualization; - -public class AppEditPartFactory implements EditPartFactory { - - @Override - public EditPart createEditPart(EditPart context, Object model) { - - AbstractGraphicalEditPart part = null; - - BControl control = (BControl) model; - - if (control instanceof Visualization) { - part = new VisualizationPart(); - } else { - try { - IBControlService service = (IBControlService) BMotionEditorPlugin - .getControlServices().get(control.getType()) - .createExecutableExtension("service"); - part = service.createEditPart(); - } catch (CoreException e) { - e.printStackTrace(); - } - } - - if (part != null) - part.setModel(control); - - // TODO: check if part == null - return part; - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.EditPartFactory; +import org.eclipse.gef.editparts.AbstractGraphicalEditPart; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.IBControlService; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.Visualization; + +public class AppEditPartFactory implements EditPartFactory { + + @Override + public EditPart createEditPart(EditPart context, Object model) { + + AbstractGraphicalEditPart part = null; + + BControl control = (BControl) model; + + if (control instanceof Visualization) { + part = new VisualizationPart(); + } else { + try { + IConfigurationElement configElement = BMotionEditorPlugin + .getControlServices().get(control.getType()); + if (configElement != null) { + IBControlService service = (IBControlService) configElement + .createExecutableExtension("service"); + part = service.createEditPart(); + } + } catch (CoreException e) { + e.printStackTrace(); + } + } + + if (part != null) + part.setModel(control); + + // TODO: check if part == null + return part; + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppTreeEditPartFactory.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppTreeEditPartFactory.java index 4a0001172af51b81a6a6bcda1f2f7e5878d98fc4..42aa2bc89431930956047e78a6a921b167517199 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppTreeEditPartFactory.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/AppTreeEditPartFactory.java @@ -1,26 +1,26 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import org.eclipse.gef.EditPart; -import org.eclipse.gef.EditPartFactory; - -import de.bmotionstudio.gef.editor.model.BControl; - -public class AppTreeEditPartFactory implements EditPartFactory { - - public EditPart createEditPart(EditPart context, Object model) { - BControlTreeEditPart part = null; - if (model instanceof BControl) { - part = new BControlTreeEditPart(); - if (part != null) - part.setModel(model); - } - return part; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import org.eclipse.gef.EditPart; +import org.eclipse.gef.EditPartFactory; + +import de.bmotionstudio.gef.editor.model.BControl; + +public class AppTreeEditPartFactory implements EditPartFactory { + + public EditPart createEditPart(EditPart context, Object model) { + BControlTreeEditPart part = null; + if (model instanceof BControl) { + part = new BControlTreeEditPart(); + if (part != null) + part.setModel(model); + } + return part; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BButtonPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BButtonPart.java index e242ca8dc02bfff5fa940dba6389aa55ef1da197..9b8a4ab84fba92da177f7b4fec5002e82b208c26 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BButtonPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BButtonPart.java @@ -1,86 +1,86 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.beans.PropertyChangeEvent; - -import org.eclipse.draw2d.IFigure; -import org.eclipse.gef.EditPolicy; -import org.eclipse.gef.Request; -import org.eclipse.gef.RequestConstants; -import org.eclipse.swt.graphics.RGB; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.edit.TextCellEditorLocator; -import de.bmotionstudio.gef.editor.edit.TextEditManager; -import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; -import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; -import de.bmotionstudio.gef.editor.editpolicy.CustomDirectEditPolicy; -import de.bmotionstudio.gef.editor.editpolicy.RenamePolicy; -import de.bmotionstudio.gef.editor.figure.ButtonFigure; -import de.bmotionstudio.gef.editor.model.BControl; - -public class BButtonPart extends AppAbstractEditPart { - - @Override - public void refreshEditFigure(IFigure figure, BControl model, - PropertyChangeEvent evt) { - - Object value = evt.getNewValue(); - String aID = evt.getPropertyName(); - - if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT)) - ((ButtonFigure) figure).setText(value.toString()); - - if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) - ((ButtonFigure) figure).setBackgroundColor((RGB) value); - - if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT_COLOR)) - ((ButtonFigure) figure).setTextColor((RGB) value); - - if (aID.equals(AttributeConstants.ATTRIBUTE_ENABLED)) - ((ButtonFigure) figure).setBtEnabled(Boolean.valueOf(value.toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_VISIBLE)) - ((ButtonFigure) figure).setVisible(Boolean.valueOf(value.toString())); - - } - - @Override - protected IFigure createEditFigure() { - IFigure figure = new ButtonFigure(); - return figure; - } - - private void performDirectEdit() { - new TextEditManager(this, new TextCellEditorLocator( - (IFigure) getFigure())).show(); - } - - @Override - public void performRequest(Request request) { - super.performRequest(request); - if (request.getType() == RequestConstants.REQ_DIRECT_EDIT - && !isRunning()) - performDirectEdit(); - } - - @Override - protected void prepareEditPolicies() { - installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); - installEditPolicy(EditPolicy.NODE_ROLE, new RenamePolicy()); - installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, - new CustomDirectEditPolicy()); - installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, - new BMotionNodeEditPolicy()); - } - - @Override - protected void prepareRunPolicies() { - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.RequestConstants; +import org.eclipse.swt.graphics.RGB; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.edit.TextCellEditorLocator; +import de.bmotionstudio.gef.editor.edit.TextEditManager; +import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; +import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; +import de.bmotionstudio.gef.editor.editpolicy.CustomDirectEditPolicy; +import de.bmotionstudio.gef.editor.editpolicy.RenamePolicy; +import de.bmotionstudio.gef.editor.figure.ButtonFigure; +import de.bmotionstudio.gef.editor.model.BControl; + +public class BButtonPart extends AppAbstractEditPart { + + @Override + public void refreshEditFigure(IFigure figure, BControl model, + PropertyChangeEvent evt) { + + Object value = evt.getNewValue(); + String aID = evt.getPropertyName(); + + if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT)) + ((ButtonFigure) figure).setText(value.toString()); + + if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) + ((ButtonFigure) figure).setBackgroundColor((RGB) value); + + if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT_COLOR)) + ((ButtonFigure) figure).setTextColor((RGB) value); + + if (aID.equals(AttributeConstants.ATTRIBUTE_ENABLED)) + ((ButtonFigure) figure).setBtEnabled(Boolean.valueOf(value.toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_VISIBLE)) + ((ButtonFigure) figure).setVisible(Boolean.valueOf(value.toString())); + + } + + @Override + protected IFigure createEditFigure() { + IFigure figure = new ButtonFigure(); + return figure; + } + + private void performDirectEdit() { + new TextEditManager(this, new TextCellEditorLocator( + (IFigure) getFigure())).show(); + } + + @Override + public void performRequest(Request request) { + super.performRequest(request); + if (request.getType() == RequestConstants.REQ_DIRECT_EDIT + && !isRunning()) + performDirectEdit(); + } + + @Override + protected void prepareEditPolicies() { + installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); + installEditPolicy(EditPolicy.NODE_ROLE, new RenamePolicy()); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, + new CustomDirectEditPolicy()); + installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, + new BMotionNodeEditPolicy()); + } + + @Override + protected void prepareRunPolicies() { + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BCanisterPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BCanisterPart.java deleted file mode 100644 index 51cacf5bbc729897b50d93ea37d97da0e3dc1960..0000000000000000000000000000000000000000 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BCanisterPart.java +++ /dev/null @@ -1,60 +0,0 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.beans.PropertyChangeEvent; - -import org.eclipse.draw2d.IFigure; -import org.eclipse.swt.graphics.RGB; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.figure.CanisterFigure; -import de.bmotionstudio.gef.editor.model.BControl; - -public class BCanisterPart extends AppAbstractEditPart { - - @Override - protected IFigure createEditFigure() { - IFigure figure = new CanisterFigure(); - return figure; - } - - @Override - public void refreshEditFigure(IFigure figure, BControl model, - PropertyChangeEvent evt) { - ((CanisterFigure) figure).setAlpha(Integer.valueOf(model - .getAttributeValue(AttributeConstants.ATTRIBUTE_ALPHA) - .toString())); - ((CanisterFigure) figure).setFillColor((RGB) model - .getAttributeValue(AttributeConstants.ATTRIBUTE_FILL_COLOR)); - ((CanisterFigure) figure).setFillHeight(Integer.valueOf(model - .getAttributeValue(AttributeConstants.ATTRIBUTE_FILL_HEIGHT) - .toString())); - ((CanisterFigure) figure).setMaxPos(Integer.valueOf(model - .getAttributeValue(AttributeConstants.ATTRIBUTE_MEASURE_MAXPOS) - .toString())); - ((CanisterFigure) figure).setInterval(Integer.valueOf(model - .getAttributeValue( - AttributeConstants.ATTRIBUTE_MEASURE_INTERVAL) - .toString())); - ((CanisterFigure) figure).setMeasure(Boolean.valueOf(model - .getAttributeValue(AttributeConstants.ATTRIBUTE_SHOWS_MEASURE) - .toString())); - ((CanisterFigure) figure) - .setBackgroundColor((RGB) model - .getAttributeValue(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)); - } - - @Override - protected void prepareEditPolicies() { - } - - @Override - protected void prepareRunPolicies() { - } - -} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BCompositePart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BCompositePart.java index 9774726354aefa07bf454f483e16b8dfaf89923e..1e363ea954bbba36b1c44bdcbfcda3c26a06294d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BCompositePart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BCompositePart.java @@ -1,147 +1,147 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.beans.PropertyChangeEvent; -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.draw2d.IFigure; -import org.eclipse.gef.CompoundSnapToHelper; -import org.eclipse.gef.EditPolicy; -import org.eclipse.gef.SnapToGeometry; -import org.eclipse.gef.SnapToGrid; -import org.eclipse.gef.SnapToGuides; -import org.eclipse.gef.SnapToHelper; -import org.eclipse.gef.editpolicies.SnapFeedbackPolicy; -import org.eclipse.gef.rulers.RulerProvider; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; -import de.bmotionstudio.gef.editor.editpolicy.AppEditLayoutPolicy; -import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; -import de.bmotionstudio.gef.editor.editpolicy.ChangeAttributePolicy; -import de.bmotionstudio.gef.editor.figure.CompositeFigure; -import de.bmotionstudio.gef.editor.library.AbstractLibraryCommand; -import de.bmotionstudio.gef.editor.library.AttributeRequest; -import de.bmotionstudio.gef.editor.library.LibraryImageCommand; -import de.bmotionstudio.gef.editor.library.LibraryVariableCommand; -import de.bmotionstudio.gef.editor.model.BControl; - -public class BCompositePart extends AppAbstractEditPart { - - @Override - protected IFigure createEditFigure() { - IFigure figure = new CompositeFigure(); - return figure; - } - - @Override - public void refreshEditFigure(IFigure figure, BControl model, - PropertyChangeEvent evt) { - - Object value = evt.getNewValue(); - String aID = evt.getPropertyName(); - - if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) - ((CompositeFigure) figure).setBackgroundColor((RGB) value); - - // if (aID.equals(AttributeConstants.ATTRIBUTE_ALPHA)) - // ((BComposite) figure).setAlpha(Integer.valueOf(value.toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_IMAGE)) { - if (value != null) { - String imgPath = value.toString(); - if (imgPath.length() > 0) { - IFile pFile = model.getVisualization().getProjectFile(); - String myPath = (pFile.getProject().getLocation() - + "/images/" + imgPath).replace("file:", ""); - if (new File(myPath).exists()) { - ((CompositeFigure) figure).setImage(new Image(Display - .getDefault(), myPath)); - } - } - } - - } - - if (aID.equals(AttributeConstants.ATTRIBUTE_VISIBLE)) - ((CompositeFigure) figure).setVisible(Boolean.valueOf(value - .toString())); - - } - - @Override - public List<BControl> getModelChildren() { - return ((BControl) getModel()).getChildrenArray(); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public Object getAdapter(Class adapter) { - if (adapter == SnapToHelper.class) { - List snapStrategies = new ArrayList(); - Boolean val = (Boolean) getViewer().getProperty( - RulerProvider.PROPERTY_RULER_VISIBILITY); - if (val != null && val.booleanValue()) - snapStrategies.add(new SnapToGuides(this)); - val = (Boolean) getViewer().getProperty( - SnapToGeometry.PROPERTY_SNAP_ENABLED); - if (val != null && val.booleanValue()) - snapStrategies.add(new SnapToGeometry(this)); - val = (Boolean) getViewer().getProperty( - SnapToGrid.PROPERTY_GRID_ENABLED); - if (val != null && val.booleanValue()) - snapStrategies.add(new SnapToGrid(this)); - - if (snapStrategies.size() == 0) - return null; - if (snapStrategies.size() == 1) - return snapStrategies.get(0); - - SnapToHelper ss[] = new SnapToHelper[snapStrategies.size()]; - for (int i = 0; i < snapStrategies.size(); i++) - ss[i] = (SnapToHelper) snapStrategies.get(i); - return new CompoundSnapToHelper(ss); - } - return super.getAdapter(adapter); - } - - @Override - public AbstractLibraryCommand getLibraryCommand(AttributeRequest request) { - AbstractLibraryCommand command = null; - if (request.getAttributeTransferObject().getLibraryObject().getType() - .equals("variable")) { - command = new LibraryVariableCommand(); - } else if (request.getAttributeTransferObject().getLibraryObject() - .getType().equals("image")) { - command = new LibraryImageCommand(); - } - return command; - } - - @Override - protected void prepareEditPolicies() { - installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); - installEditPolicy(EditPolicy.LAYOUT_ROLE, new AppEditLayoutPolicy()); - installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null); - installEditPolicy(EditPolicy.CONTAINER_ROLE, new SnapFeedbackPolicy()); - installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, - new BMotionNodeEditPolicy()); - installEditPolicy(ChangeAttributePolicy.CHANGE_ATTRIBUTE_POLICY, - new ChangeAttributePolicy()); - } - - @Override - protected void prepareRunPolicies() { - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.resources.IFile; +import org.eclipse.draw2d.IFigure; +import org.eclipse.gef.CompoundSnapToHelper; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.SnapToGeometry; +import org.eclipse.gef.SnapToGrid; +import org.eclipse.gef.SnapToGuides; +import org.eclipse.gef.SnapToHelper; +import org.eclipse.gef.editpolicies.SnapFeedbackPolicy; +import org.eclipse.gef.rulers.RulerProvider; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; +import de.bmotionstudio.gef.editor.editpolicy.AppEditLayoutPolicy; +import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; +import de.bmotionstudio.gef.editor.editpolicy.ChangeAttributePolicy; +import de.bmotionstudio.gef.editor.figure.CompositeFigure; +import de.bmotionstudio.gef.editor.library.AbstractLibraryCommand; +import de.bmotionstudio.gef.editor.library.AttributeRequest; +import de.bmotionstudio.gef.editor.library.LibraryImageCommand; +import de.bmotionstudio.gef.editor.library.LibraryVariableCommand; +import de.bmotionstudio.gef.editor.model.BControl; + +public class BCompositePart extends AppAbstractEditPart { + + @Override + protected IFigure createEditFigure() { + IFigure figure = new CompositeFigure(); + return figure; + } + + @Override + public void refreshEditFigure(IFigure figure, BControl model, + PropertyChangeEvent evt) { + + Object value = evt.getNewValue(); + String aID = evt.getPropertyName(); + + if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) + ((CompositeFigure) figure).setBackgroundColor((RGB) value); + + // if (aID.equals(AttributeConstants.ATTRIBUTE_ALPHA)) + // ((BComposite) figure).setAlpha(Integer.valueOf(value.toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_IMAGE)) { + if (value != null) { + String imgPath = value.toString(); + if (imgPath.length() > 0) { + IFile pFile = model.getVisualization().getProjectFile(); + String myPath = (pFile.getProject().getLocation() + + "/images/" + imgPath).replace("file:", ""); + if (new File(myPath).exists()) { + ((CompositeFigure) figure).setImage(new Image(Display + .getDefault(), myPath)); + } + } + } + + } + + if (aID.equals(AttributeConstants.ATTRIBUTE_VISIBLE)) + ((CompositeFigure) figure).setVisible(Boolean.valueOf(value + .toString())); + + } + + @Override + public List<BControl> getModelChildren() { + return ((BControl) getModel()).getChildrenArray(); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public Object getAdapter(Class adapter) { + if (adapter == SnapToHelper.class) { + List snapStrategies = new ArrayList(); + Boolean val = (Boolean) getViewer().getProperty( + RulerProvider.PROPERTY_RULER_VISIBILITY); + if (val != null && val.booleanValue()) + snapStrategies.add(new SnapToGuides(this)); + val = (Boolean) getViewer().getProperty( + SnapToGeometry.PROPERTY_SNAP_ENABLED); + if (val != null && val.booleanValue()) + snapStrategies.add(new SnapToGeometry(this)); + val = (Boolean) getViewer().getProperty( + SnapToGrid.PROPERTY_GRID_ENABLED); + if (val != null && val.booleanValue()) + snapStrategies.add(new SnapToGrid(this)); + + if (snapStrategies.size() == 0) + return null; + if (snapStrategies.size() == 1) + return snapStrategies.get(0); + + SnapToHelper ss[] = new SnapToHelper[snapStrategies.size()]; + for (int i = 0; i < snapStrategies.size(); i++) + ss[i] = (SnapToHelper) snapStrategies.get(i); + return new CompoundSnapToHelper(ss); + } + return super.getAdapter(adapter); + } + + @Override + public AbstractLibraryCommand getLibraryCommand(AttributeRequest request) { + AbstractLibraryCommand command = null; + if (request.getAttributeTransferObject().getLibraryObject().getType() + .equals("variable")) { + command = new LibraryVariableCommand(); + } else if (request.getAttributeTransferObject().getLibraryObject() + .getType().equals("image")) { + command = new LibraryImageCommand(); + } + return command; + } + + @Override + protected void prepareEditPolicies() { + installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); + installEditPolicy(EditPolicy.LAYOUT_ROLE, new AppEditLayoutPolicy()); + installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null); + installEditPolicy(EditPolicy.CONTAINER_ROLE, new SnapFeedbackPolicy()); + installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, + new BMotionNodeEditPolicy()); + installEditPolicy(ChangeAttributePolicy.CHANGE_ATTRIBUTE_POLICY, + new ChangeAttributePolicy()); + } + + @Override + protected void prepareRunPolicies() { + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java index fd40016a6ab3a0a302bcff1cb29efdc381db59b5..74522c772573b325aa2e4779a577f256327334f1 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BControlTreeEditPart.java @@ -1,65 +1,62 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.beans.PropertyChangeEvent; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.model.BConnection; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.Visualization; - -public class BControlTreeEditPart extends AppAbstractTreeEditPart { - - @Override - protected List<BControl> getModelChildren() { - Set<BControl> toShowElements = new HashSet<BControl>(); - for (BControl control : ((BControl) getModel()).getChildrenArray()) { - if (control.showInOutlineView()) - toShowElements.add(control); - List<BConnection> sourceConnections = control - .getSourceConnections(); - for (BConnection con : sourceConnections) { - if (con.showInOutlineView()) - toShowElements.add(con); - } - List<BConnection> targetConnections = control - .getTargetConnections(); - for (BConnection con : targetConnections) { - if (con.showInOutlineView()) - toShowElements.add(con); - } - } - return new ArrayList<BControl>(toShowElements); - } - - public void propertyChange(final PropertyChangeEvent evt) { - if (evt.getPropertyName().equals(BControl.PROPERTY_ADD) - || evt.getPropertyName().equals(BControl.PROPERTY_REMOVE)) { - refreshChildren(); - } - if (evt.getPropertyName().equals(AttributeConstants.ATTRIBUTE_ID)) - refreshVisuals(); - } - - @Override - public void refreshVisuals() { - BControl bcontrol = (BControl) getModel(); - if (!(bcontrol instanceof Visualization)) { - setWidgetText(bcontrol.getAttributeValue( - AttributeConstants.ATTRIBUTE_ID).toString()); - setWidgetImage(BMotionStudioImage.getBControlImage(bcontrol - .getType())); - } - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BConnection; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.Visualization; + +public class BControlTreeEditPart extends AppAbstractTreeEditPart { + + @Override + protected List<BControl> getModelChildren() { + Set<BControl> toShowElements = new HashSet<BControl>(); + for (BControl control : ((BControl) getModel()).getChildrenArray()) { + if (control.showInOutlineView()) + toShowElements.add(control); + List<BConnection> sourceConnections = control + .getSourceConnections(); + for (BConnection con : sourceConnections) { + if (con.showInOutlineView()) + toShowElements.add(con); + } + List<BConnection> targetConnections = control + .getTargetConnections(); + for (BConnection con : targetConnections) { + if (con.showInOutlineView()) + toShowElements.add(con); + } + } + return new ArrayList<BControl>(toShowElements); + } + + public void propertyChange(final PropertyChangeEvent evt) { + if (evt.getPropertyName().equals(BControl.PROPERTY_ADD) + || evt.getPropertyName().equals(BControl.PROPERTY_REMOVE)) { + refreshChildren(); + } + refreshVisuals(); + } + + @Override + public void refreshVisuals() { + BControl bcontrol = (BControl) getModel(); + if (!(bcontrol instanceof Visualization)) { + setWidgetText(bcontrol.getAttributeValue( + AttributeConstants.ATTRIBUTE_ID).toString()); + setWidgetImage(bcontrol.getIcon()); + } + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BShapePart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BShapePart.java index 247e9c658eda973343d6627c8a5763525645a401..1ffe72f87ae2e019e9b5e5fb9265e615c88b5596 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BShapePart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BShapePart.java @@ -1,129 +1,129 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.beans.PropertyChangeEvent; -import java.io.File; - -import org.eclipse.core.resources.IFile; -import org.eclipse.draw2d.IFigure; -import org.eclipse.gef.EditPolicy; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; -import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; -import de.bmotionstudio.gef.editor.figure.ShapeFigure; -import de.bmotionstudio.gef.editor.model.BControl; - -public class BShapePart extends AppAbstractEditPart { - - @Override - public void refreshEditFigure(IFigure figure, BControl model, - PropertyChangeEvent evt) { - - Object value = evt.getNewValue(); - String aID = evt.getPropertyName(); - - if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) - ((ShapeFigure) figure).setBackgroundColor((RGB) value); - - if (aID.equals(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR)) - ((ShapeFigure) figure).setForegroundColor((RGB) value); - - if (aID.equals(AttributeConstants.ATTRIBUTE_ALPHA)) - ((ShapeFigure) figure).setAlpha(Integer.valueOf(value.toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_OUTLINEALPHA)) - ((ShapeFigure) figure) - .setOutlineAlpha(Integer.valueOf(value.toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_VISIBLE)) - ((ShapeFigure) figure).setVisible(Boolean.valueOf(value.toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_SHAPE)) - ((ShapeFigure) figure).setShape(Integer.valueOf(value.toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_ORIENTATION)) - ((ShapeFigure) figure).setOrientation(Integer.valueOf(value.toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_FILLTYPE)) - ((ShapeFigure) figure).setFillType(Integer.valueOf(value.toString())); - - // /** North */ - // int NORTH = 1; - // /** South */ - // int SOUTH = 4; - // /** West */ - // int WEST = 8; - // /** East */ - // int EAST = 16; - - if (aID.equals(AttributeConstants.ATTRIBUTE_DIRECTION)) { - - int direction = Integer.valueOf(value.toString()); - int fval = 1; - - switch (direction) { - case 0: - fval = 1; - break; - case 1: - fval = 4; - break; - case 2: - fval = 8; - break; - case 3: - fval = 16; - break; - default: - break; - } - - ((ShapeFigure) figure).setDirection(fval); - - } - - if (aID.equals(AttributeConstants.ATTRIBUTE_IMAGE)) { - Image img = null; - if (value != null) { - String imgPath = value.toString(); - if (imgPath.length() > 0) { - IFile pFile = model.getVisualization().getProjectFile(); - String myPath = (pFile.getProject().getLocation() - + "/images/" + imgPath).replace("file:", ""); - if (new File(myPath).exists()) { - img = new Image(Display.getDefault(), myPath); - } - } - } - ((ShapeFigure) figure).setImage(img); - } - - } - - @Override - protected IFigure createEditFigure() { - IFigure figure = new ShapeFigure(); - return figure; - } - - @Override - protected void prepareEditPolicies() { - installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); - installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, - new BMotionNodeEditPolicy()); - } - - @Override - protected void prepareRunPolicies() { - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; +import java.io.File; + +import org.eclipse.core.resources.IFile; +import org.eclipse.draw2d.IFigure; +import org.eclipse.gef.EditPolicy; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; +import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; +import de.bmotionstudio.gef.editor.figure.ShapeFigure; +import de.bmotionstudio.gef.editor.model.BControl; + +public class BShapePart extends AppAbstractEditPart { + + @Override + public void refreshEditFigure(IFigure figure, BControl model, + PropertyChangeEvent evt) { + + Object value = evt.getNewValue(); + String aID = evt.getPropertyName(); + + if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) + ((ShapeFigure) figure).setBackgroundColor((RGB) value); + + if (aID.equals(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR)) + ((ShapeFigure) figure).setForegroundColor((RGB) value); + + if (aID.equals(AttributeConstants.ATTRIBUTE_ALPHA)) + ((ShapeFigure) figure).setAlpha(Integer.valueOf(value.toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_OUTLINEALPHA)) + ((ShapeFigure) figure) + .setOutlineAlpha(Integer.valueOf(value.toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_VISIBLE)) + ((ShapeFigure) figure).setVisible(Boolean.valueOf(value.toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_SHAPE)) + ((ShapeFigure) figure).setShape(Integer.valueOf(value.toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_ORIENTATION)) + ((ShapeFigure) figure).setOrientation(Integer.valueOf(value.toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_FILLTYPE)) + ((ShapeFigure) figure).setFillType(Integer.valueOf(value.toString())); + + // /** North */ + // int NORTH = 1; + // /** South */ + // int SOUTH = 4; + // /** West */ + // int WEST = 8; + // /** East */ + // int EAST = 16; + + if (aID.equals(AttributeConstants.ATTRIBUTE_DIRECTION)) { + + int direction = Integer.valueOf(value.toString()); + int fval = 1; + + switch (direction) { + case 0: + fval = 1; + break; + case 1: + fval = 4; + break; + case 2: + fval = 8; + break; + case 3: + fval = 16; + break; + default: + break; + } + + ((ShapeFigure) figure).setDirection(fval); + + } + + if (aID.equals(AttributeConstants.ATTRIBUTE_IMAGE)) { + Image img = null; + if (value != null) { + String imgPath = value.toString(); + if (imgPath.length() > 0) { + IFile pFile = model.getVisualization().getProjectFile(); + String myPath = (pFile.getProject().getLocation() + + "/images/" + imgPath).replace("file:", ""); + if (new File(myPath).exists()) { + img = new Image(Display.getDefault(), myPath); + } + } + } + ((ShapeFigure) figure).setImage(img); + } + + } + + @Override + protected IFigure createEditFigure() { + IFigure figure = new ShapeFigure(); + return figure; + } + + @Override + protected void prepareEditPolicies() { + installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); + installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, + new BMotionNodeEditPolicy()); + } + + @Override + protected void prepareRunPolicies() { + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTableCellPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTableCellPart.java new file mode 100644 index 0000000000000000000000000000000000000000..dba8ecf10865c8195fb1d48a36b55ac813c4d0e2 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTableCellPart.java @@ -0,0 +1,77 @@ +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.RequestConstants; +import org.eclipse.swt.graphics.RGB; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.edit.TextCellEditorLocator; +import de.bmotionstudio.gef.editor.edit.TextEditManager; +import de.bmotionstudio.gef.editor.editpolicy.CustomDirectEditPolicy; +import de.bmotionstudio.gef.editor.editpolicy.RenamePolicy; +import de.bmotionstudio.gef.editor.figure.TableCellFigure; +import de.bmotionstudio.gef.editor.model.BControl; + +public class BTableCellPart extends AppAbstractEditPart { + + @Override + protected IFigure createEditFigure() { + return new TableCellFigure(); + } + + @Override + protected void prepareEditPolicies() { + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, + new CustomDirectEditPolicy()); + installEditPolicy(EditPolicy.NODE_ROLE, new RenamePolicy()); + } + + @Override + protected void prepareRunPolicies() { + } + + @Override + public void refreshEditFigure(IFigure figure, BControl model, + PropertyChangeEvent evt) { + + Object value = evt.getNewValue(); + String aID = evt.getPropertyName(); + + if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT)) { + ((TableCellFigure) figure).setText(value.toString()); + } + + if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) { + ((TableCellFigure) figure).setBackgroundColor((RGB) value); + } + + if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT_COLOR)) { + ((TableCellFigure) figure).setTextColor((RGB) value); + } + + if (aID.equals(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR)) { + ((TableCellFigure) figure).setForegroundColor((RGB) value); + } + + if (aID.equals(AttributeConstants.ATTRIBUTE_FONT)) + ((TableCellFigure) figure).setFont((value.toString())); + + } + + private void performDirectEdit() { + new TextEditManager(this, new TextCellEditorLocator( + (IFigure) getFigure())).show(); + } + + @Override + public void performRequest(Request request) { + super.performRequest(request); + if (request.getType() == RequestConstants.REQ_DIRECT_EDIT) + performDirectEdit(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTableColumnPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTableColumnPart.java new file mode 100644 index 0000000000000000000000000000000000000000..49cfccce4221d7aea645ef752e40062d925e844c --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTableColumnPart.java @@ -0,0 +1,83 @@ +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.gef.EditPolicy; +import org.eclipse.swt.graphics.RGB; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; +import de.bmotionstudio.gef.editor.editpolicy.BMotionStudioFlowEditPolicy; +import de.bmotionstudio.gef.editor.figure.TableColumnFigure; +import de.bmotionstudio.gef.editor.model.BControl; + +public class BTableColumnPart extends AppAbstractEditPart { + + @Override + protected IFigure createEditFigure() { + return new TableColumnFigure(); + } + + @Override + protected void prepareEditPolicies() { + installEditPolicy(EditPolicy.LAYOUT_ROLE, + new BMotionStudioFlowEditPolicy()); + installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, + new BMotionNodeEditPolicy()); + } + + @Override + protected void prepareRunPolicies() { + } + + @Override + public void refreshEditFigure(IFigure figure, BControl model, + PropertyChangeEvent evt) { + + Object value = evt.getNewValue(); + String aID = evt.getPropertyName(); + + // if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) { + // for (BControl cell : model.getChildrenArray()) + // cell.setAttributeValue( + // AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR, value); + // } + // + if (aID.equals(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR)) { + ((TableColumnFigure) figure).setForegroundColor((RGB) value); + for (BControl cell : model.getChildrenArray()) + cell.setAttributeValue( + AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR, value); + } + // + // if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT_COLOR)) { + // for (BControl cell : model.getChildrenArray()) + // cell.setAttributeValue(AttributeConstants.ATTRIBUTE_TEXT_COLOR, + // value); + // } + // + // if (aID.equals(AttributeConstants.ATTRIBUTE_FONT)) { + // for (BControl cell : model.getChildrenArray()) + // cell.setAttributeValue(AttributeConstants.ATTRIBUTE_FONT, value); + // } + + } + + @Override + protected void refreshEditLayout(IFigure figure, BControl control) { + if (getParent() instanceof AppAbstractEditPart) { + AppAbstractEditPart tablePart = (AppAbstractEditPart) getParent(); + tablePart.refreshEditLayout(tablePart.getFigure(), + control.getParent()); + } + super.refreshEditLayout(figure, control); + } + + @Override + public List<BControl> getModelChildren() { + return ((BControl) getModel()).getChildrenArray(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTablePart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTablePart.java new file mode 100644 index 0000000000000000000000000000000000000000..78d6bc0d12c7319ffd0c67d1dfdebe50b1fb0fa1 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTablePart.java @@ -0,0 +1,151 @@ +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; +import java.util.List; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.draw2d.geometry.Rectangle; +import org.eclipse.gef.EditPolicy; +import org.eclipse.swt.graphics.RGB; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.command.CreateCommand; +import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; +import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; +import de.bmotionstudio.gef.editor.editpolicy.BMotionStudioFlowEditPolicy; +import de.bmotionstudio.gef.editor.figure.TableFigure; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BTableCell; +import de.bmotionstudio.gef.editor.model.BTableColumn; + +public class BTablePart extends AppAbstractEditPart { + + @Override + protected IFigure createEditFigure() { + return new TableFigure(); + } + + @Override + protected void prepareEditPolicies() { + installEditPolicy(EditPolicy.LAYOUT_ROLE, + new BMotionStudioFlowEditPolicy()); + installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); + installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, + new BMotionNodeEditPolicy()); + } + + @Override + protected void prepareRunPolicies() { + } + + @Override + protected void refreshEditLayout(IFigure figure, BControl control) { + + int width = 0; + + int rows = Integer.valueOf(control.getAttributeValue( + AttributeConstants.ATTRIBUTE_ROWS).toString()); + + for (BControl column : control.getChildrenArray()) { + width = width + column.getLayout().width; + } + + // Set the correct size of the table + figure.getParent().setConstraint( + figure, + new Rectangle(control.getLocation().x, control.getLocation().y, + width + 1, (rows * 20) + 1)); + + } + + @Override + public void refreshEditFigure(IFigure figure, BControl model, + PropertyChangeEvent evt) { + + Object value = evt.getNewValue(); + Object oldValue = evt.getOldValue(); + String aID = evt.getPropertyName(); + + if (aID.equals(AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR)) { + ((TableFigure) figure).setForegroundColor((RGB) value); + for (BControl child : model.getChildrenArray()) + child.setAttributeValue( + AttributeConstants.ATTRIBUTE_FOREGROUND_COLOR, value); + } + + if (aID.equals(AttributeConstants.ATTRIBUTE_COLUMNS)) { + + if (oldValue == null || value.equals(oldValue)) + return; + + // Create columns + Integer numberOfColumns = Integer.valueOf(value.toString()); + Integer numberOfCurrentColumns = Integer.valueOf(oldValue + .toString()); + + if (numberOfColumns < numberOfCurrentColumns) { + for (int i = numberOfCurrentColumns - 1; i >= numberOfColumns; i--) { + model.removeChild(i); + } + } + + for (int i = numberOfCurrentColumns; i < numberOfColumns; i++) { + BTableColumn bTableColumn = new BTableColumn( + model.getVisualization()); + CreateCommand cmd = new CreateCommand(bTableColumn, model); + cmd.setLayout(new Rectangle(0, 0, 50, 25)); + cmd.execute(); + Integer numberOfRows = Integer.valueOf(model.getAttributeValue( + AttributeConstants.ATTRIBUTE_ROWS).toString()); + refreshRows(bTableColumn, numberOfRows); + } + + refreshEditLayout(figure, model); + + } + + if (aID.equals(AttributeConstants.ATTRIBUTE_ROWS)) { + + if (oldValue == null || value.equals(oldValue)) + return; + + // Create rows + + Integer numberOfRows = Integer.valueOf(value.toString()); + + List<BControl> columnChildren = model.getChildrenArray(); + for (BControl column : columnChildren) { + refreshRows(column, numberOfRows); + } + + refreshEditLayout(figure, model); + + } + + } + + private void refreshRows(BControl column, int numberOfRows) { + + Integer numberOfCurrentRows = column.getChildrenArray().size(); + + if (numberOfRows < numberOfCurrentRows) { + for (int i = numberOfCurrentRows - 1; i >= numberOfRows; i--) { + column.removeChild(i); + } + } + + for (int i = numberOfCurrentRows; i < numberOfRows; i++) { + CreateCommand cmd = new CreateCommand(new BTableCell( + column.getVisualization()), column); + cmd.setLayout(new Rectangle(0, 0, 50, 20)); + cmd.execute(); + } + + } + + @Override + public List<BControl> getModelChildren() { + return ((BControl) getModel()).getChildrenArray(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTextPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTextPart.java index eeead135623a30523879ed597afe3d8c3cb2627d..5de397b03f7d9a59b8da669bc3a0256c769d3ef6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTextPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/BTextPart.java @@ -1,114 +1,114 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.beans.PropertyChangeEvent; - -import org.eclipse.draw2d.IFigure; -import org.eclipse.gef.EditPolicy; -import org.eclipse.gef.Request; -import org.eclipse.gef.RequestConstants; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.widgets.Display; - -import de.bmotionstudio.gef.editor.AttributeConstants; -import de.bmotionstudio.gef.editor.edit.TextCellEditorLocator; -import de.bmotionstudio.gef.editor.edit.TextEditManager; -import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; -import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; -import de.bmotionstudio.gef.editor.editpolicy.ChangeAttributePolicy; -import de.bmotionstudio.gef.editor.editpolicy.CustomDirectEditPolicy; -import de.bmotionstudio.gef.editor.editpolicy.RenamePolicy; -import de.bmotionstudio.gef.editor.figure.TextFigure; -import de.bmotionstudio.gef.editor.library.AbstractLibraryCommand; -import de.bmotionstudio.gef.editor.library.AttributeRequest; -import de.bmotionstudio.gef.editor.library.LibraryVariableCommand; -import de.bmotionstudio.gef.editor.model.BControl; - -public class BTextPart extends AppAbstractEditPart { - - @Override - public void refreshEditFigure(IFigure figure, BControl model, - PropertyChangeEvent evt) { - - Object value = evt.getNewValue(); - String aID = evt.getPropertyName(); - - if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT)) - ((TextFigure) figure).setText(value.toString()); - - if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) - ((TextFigure) figure) - .setBackgroundColor(new org.eclipse.swt.graphics.Color( - Display.getDefault(), (RGB) value)); - - if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT_COLOR)) - ((TextFigure) figure).setTextColor(((RGB) value)); - - if (aID.equals(AttributeConstants.ATTRIBUTE_FONT)) - ((TextFigure) figure).setFont((value.toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_VISIBLE)) - ((TextFigure) figure).setBackgroundVisible(Boolean.valueOf(value - .toString())); - - if (aID.equals(AttributeConstants.ATTRIBUTE_VISIBLE)) - ((TextFigure) figure).setVisible(Boolean.valueOf(value.toString())); - - } - - @Override - protected IFigure createEditFigure() { - IFigure figure = new TextFigure(); - return figure; - } - - private void performDirectEdit() { - new TextEditManager(this, new TextCellEditorLocator( - (IFigure) getFigure())).show(); - } - - @Override - public void performRequest(Request request) { - super.performRequest(request); - if (request.getType() == RequestConstants.REQ_DIRECT_EDIT) - performDirectEdit(); - } - - // @Override - // public String getValueOfData() { - // return ((BControl) getModel()).getAttributeValue( - // AttributeConstants.ATTRIBUTE_CUSTOM).toString(); - // } - - @Override - public AbstractLibraryCommand getLibraryCommand(AttributeRequest request) { - AbstractLibraryCommand command = null; - if (request.getAttributeTransferObject().getLibraryObject().getType() - .equals("variable")) { - command = new LibraryVariableCommand(); - } - return command; - } - - @Override - protected void prepareEditPolicies() { - installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); - installEditPolicy(EditPolicy.NODE_ROLE, new RenamePolicy()); - installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, - new CustomDirectEditPolicy()); - installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, - new BMotionNodeEditPolicy()); - installEditPolicy(ChangeAttributePolicy.CHANGE_ATTRIBUTE_POLICY, - new ChangeAttributePolicy()); - } - - @Override - protected void prepareRunPolicies() { - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; + +import org.eclipse.draw2d.IFigure; +import org.eclipse.gef.EditPolicy; +import org.eclipse.gef.Request; +import org.eclipse.gef.RequestConstants; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.swt.widgets.Display; + +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.edit.TextCellEditorLocator; +import de.bmotionstudio.gef.editor.edit.TextEditManager; +import de.bmotionstudio.gef.editor.editpolicy.AppDeletePolicy; +import de.bmotionstudio.gef.editor.editpolicy.BMotionNodeEditPolicy; +import de.bmotionstudio.gef.editor.editpolicy.ChangeAttributePolicy; +import de.bmotionstudio.gef.editor.editpolicy.CustomDirectEditPolicy; +import de.bmotionstudio.gef.editor.editpolicy.RenamePolicy; +import de.bmotionstudio.gef.editor.figure.TextFigure; +import de.bmotionstudio.gef.editor.library.AbstractLibraryCommand; +import de.bmotionstudio.gef.editor.library.AttributeRequest; +import de.bmotionstudio.gef.editor.library.LibraryVariableCommand; +import de.bmotionstudio.gef.editor.model.BControl; + +public class BTextPart extends AppAbstractEditPart { + + @Override + public void refreshEditFigure(IFigure figure, BControl model, + PropertyChangeEvent evt) { + + Object value = evt.getNewValue(); + String aID = evt.getPropertyName(); + + if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT)) + ((TextFigure) figure).setText(value.toString()); + + if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_COLOR)) + ((TextFigure) figure) + .setBackgroundColor(new org.eclipse.swt.graphics.Color( + Display.getDefault(), (RGB) value)); + + if (aID.equals(AttributeConstants.ATTRIBUTE_TEXT_COLOR)) + ((TextFigure) figure).setTextColor(((RGB) value)); + + if (aID.equals(AttributeConstants.ATTRIBUTE_FONT)) + ((TextFigure) figure).setFont((value.toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_BACKGROUND_VISIBLE)) + ((TextFigure) figure).setBackgroundVisible(Boolean.valueOf(value + .toString())); + + if (aID.equals(AttributeConstants.ATTRIBUTE_VISIBLE)) + ((TextFigure) figure).setVisible(Boolean.valueOf(value.toString())); + + } + + @Override + protected IFigure createEditFigure() { + IFigure figure = new TextFigure(); + return figure; + } + + private void performDirectEdit() { + new TextEditManager(this, new TextCellEditorLocator( + (IFigure) getFigure())).show(); + } + + @Override + public void performRequest(Request request) { + super.performRequest(request); + if (request.getType() == RequestConstants.REQ_DIRECT_EDIT) + performDirectEdit(); + } + + // @Override + // public String getValueOfData() { + // return ((BControl) getModel()).getAttributeValue( + // AttributeConstants.ATTRIBUTE_CUSTOM).toString(); + // } + + @Override + public AbstractLibraryCommand getLibraryCommand(AttributeRequest request) { + AbstractLibraryCommand command = null; + if (request.getAttributeTransferObject().getLibraryObject().getType() + .equals("variable")) { + command = new LibraryVariableCommand(); + } + return command; + } + + @Override + protected void prepareEditPolicies() { + installEditPolicy(EditPolicy.COMPONENT_ROLE, new AppDeletePolicy()); + installEditPolicy(EditPolicy.NODE_ROLE, new RenamePolicy()); + installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, + new CustomDirectEditPolicy()); + installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, + new BMotionNodeEditPolicy()); + installEditPolicy(ChangeAttributePolicy.CHANGE_ATTRIBUTE_POLICY, + new ChangeAttributePolicy()); + } + + @Override + protected void prepareRunPolicies() { + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/UnknownPart.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/UnknownPart.java index 4e2c15c13f0025e9d23598a4ffd37c1ac31a17ca..5b18e42c3141e42b02b961b8e7180e199242df9d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/UnknownPart.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/part/UnknownPart.java @@ -1,46 +1,46 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.part; - -import java.beans.PropertyChangeEvent; - -import org.eclipse.draw2d.IFigure; - -import de.bmotionstudio.gef.editor.figure.UnknownBControl; -import de.bmotionstudio.gef.editor.model.BControl; - -public class UnknownPart extends AppAbstractEditPart { - - public static String ID = "de.bmotionstudio.gef.editor.unknown"; - - private String type; - - @Override - protected IFigure createEditFigure() { - IFigure figure = new UnknownBControl(); - return figure; - } - - @Override - public void refreshEditFigure(IFigure figure, BControl model, - PropertyChangeEvent evt) { - ((UnknownBControl) figure).setMessage(type); - } - - public void setType(String type) { - this.type = type; - } - - @Override - protected void prepareEditPolicies() { - } - - @Override - protected void prepareRunPolicies() { - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.part; + +import java.beans.PropertyChangeEvent; + +import org.eclipse.draw2d.IFigure; + +import de.bmotionstudio.gef.editor.figure.UnknownBControl; +import de.bmotionstudio.gef.editor.model.BControl; + +public class UnknownPart extends AppAbstractEditPart { + + public static String ID = "de.bmotionstudio.gef.editor.unknown"; + + private String type; + + @Override + protected IFigure createEditFigure() { + IFigure figure = new UnknownBControl(); + return figure; + } + + @Override + public void refreshEditFigure(IFigure figure, BControl model, + PropertyChangeEvent evt) { + ((UnknownBControl) figure).setMessage(type); + } + + public void setType(String type) { + this.type = type; + } + + @Override + protected void prepareEditPolicies() { + } + + @Override + protected void prepareRunPolicies() { + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/CheckboxPropertyDescriptor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/CheckboxPropertyDescriptor.java index defac1f00ea74370dad46c99c2c1b3f880679e89..ba76140953e6836fae17247a15ecca721684c936 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/CheckboxPropertyDescriptor.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/CheckboxPropertyDescriptor.java @@ -1,55 +1,59 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.property; - -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.CheckboxCellEditor; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.views.properties.PropertyDescriptor; - -public class CheckboxPropertyDescriptor extends PropertyDescriptor { - /** - * @param id - * @param displayName - */ - public CheckboxPropertyDescriptor(Object id, String displayName) { - super(id, displayName); - init(); - } - - protected void init() { - setLabelProvider(new LabelProvider() { - @Override - public Image getImage(Object element) { - if (element instanceof Boolean) { - boolean b = (Boolean) element; - return CheckboxCellEditorHelper.getCellEditorImage(b); - } - return super.getImage(element); - } - - @Override - public String getText(Object element) { - return ""; //$NON-NLS-1$ - } - }); - } - - /* - * @see - * org.eclipse.ui.views.properties.IPropertyDescriptor#createPropertyEditor - * (org.eclipse.swt.widgets.Composite) - */ - @Override - public CellEditor createPropertyEditor(Composite parent) { - CellEditor editor = new CheckboxCellEditor(parent); - return editor; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.property; + +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.CheckboxCellEditor; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.views.properties.PropertyDescriptor; + +public class CheckboxPropertyDescriptor extends PropertyDescriptor { + /** + * @param id + * @param displayName + */ + public CheckboxPropertyDescriptor(Object id, String displayName) { + super(id, displayName); + init(); + } + + protected void init() { + setLabelProvider(new LabelProvider() { + @Override + public Image getImage(Object element) { + if (element instanceof Boolean) { + boolean b = (Boolean) element; + return CheckboxCellEditorHelper.getCellEditorImage(b); + } + return super.getImage(element); + } + + @Override + public String getText(Object element) { + if (element instanceof Boolean) { + Boolean b = (Boolean) element; + return b.toString(); + } + return ""; + } + }); + } + + /* + * @see + * org.eclipse.ui.views.properties.IPropertyDescriptor#createPropertyEditor + * (org.eclipse.swt.widgets.Composite) + */ + @Override + public CellEditor createPropertyEditor(Composite parent) { + CellEditor editor = new CheckboxCellEditor(parent); + return editor; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/FontDialogCellEditor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/FontDialogCellEditor.java index 0bc590b12885319bd10f2ce6f627c27bc3625bb2..b9c6bfeb6f24bdee6a7bcd0f46062f2a6067de72 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/FontDialogCellEditor.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/FontDialogCellEditor.java @@ -1,60 +1,60 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -/******************************************************************************* - * Copyright (c) 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package de.bmotionstudio.gef.editor.property; - -import org.eclipse.jface.viewers.DialogCellEditor; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.FontDialog; -import org.eclipse.ui.PlatformUI; - -public class FontDialogCellEditor extends DialogCellEditor { - - /** - * Creates a new Font dialog cell editor parented under the given control. - * The cell editor value is <code>null</code> initially, and has no - * validator. - * - * @param parent - * the parent control - */ - protected FontDialogCellEditor(Composite parent) { - super(parent); - } - - /** - * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control) - */ - protected Object openDialogBox(Control cellEditorWindow) { - FontDialog ftDialog = new FontDialog(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell()); - - String value = (String) getValue(); - - if ((value != null) && (value.length() > 0)) { - ftDialog.setFontList(new FontData[] { new FontData(value) }); - } - FontData fData = ftDialog.open(); - - if (fData != null) { - value = fData.toString(); - } - return value; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +/******************************************************************************* + * Copyright (c) 2006 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package de.bmotionstudio.gef.editor.property; + +import org.eclipse.jface.viewers.DialogCellEditor; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.FontDialog; +import org.eclipse.ui.PlatformUI; + +public class FontDialogCellEditor extends DialogCellEditor { + + /** + * Creates a new Font dialog cell editor parented under the given control. + * The cell editor value is <code>null</code> initially, and has no + * validator. + * + * @param parent + * the parent control + */ + protected FontDialogCellEditor(Composite parent) { + super(parent); + } + + /** + * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control) + */ + protected Object openDialogBox(Control cellEditorWindow) { + FontDialog ftDialog = new FontDialog(PlatformUI.getWorkbench() + .getActiveWorkbenchWindow().getShell()); + + String value = (String) getValue(); + + if ((value != null) && (value.length() > 0)) { + ftDialog.setFontList(new FontData[] { new FontData(value) }); + } + FontData fData = ftDialog.open(); + + if (fData != null) { + value = fData.toString(); + } + return value; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/FontPropertyDescriptor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/FontPropertyDescriptor.java index 74061a30c31126cb37c254dd1ee1adc9afe36b5a..bc4eb2213e317ebe3f2e651a157ee0122063e717 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/FontPropertyDescriptor.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/FontPropertyDescriptor.java @@ -1,54 +1,54 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -/******************************************************************************* - * Copyright (c) 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package de.bmotionstudio.gef.editor.property; - -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.views.properties.PropertyDescriptor; - -public class FontPropertyDescriptor extends PropertyDescriptor { - - /** - * Creates an property descriptor with the given id and display name. - * - * @param id - * the id of the property - * @param displayName - * the name to display for the property - */ - public FontPropertyDescriptor(Object id, String displayName) { - super(id, displayName); - setLabelProvider(new LabelProvider() { - @Override - public String getText(Object element) { - return super.getText(element); - } - }); - } - - /** - * @see org.eclipse.ui.views.properties.IPropertyDescriptor#createPropertyEditor(Composite) - */ - public CellEditor createPropertyEditor(Composite parent) { - CellEditor editor = new FontDialogCellEditor(parent); - if (getValidator() != null) - editor.setValidator(getValidator()); - return editor; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +/******************************************************************************* + * Copyright (c) 2006 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package de.bmotionstudio.gef.editor.property; + +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.views.properties.PropertyDescriptor; + +public class FontPropertyDescriptor extends PropertyDescriptor { + + /** + * Creates an property descriptor with the given id and display name. + * + * @param id + * the id of the property + * @param displayName + * the name to display for the property + */ + public FontPropertyDescriptor(Object id, String displayName) { + super(id, displayName); + setLabelProvider(new LabelProvider() { + @Override + public String getText(Object element) { + return super.getText(element); + } + }); + } + + /** + * @see org.eclipse.ui.views.properties.IPropertyDescriptor#createPropertyEditor(Composite) + */ + public CellEditor createPropertyEditor(Composite parent) { + CellEditor editor = new FontDialogCellEditor(parent); + if (getValidator() != null) + editor.setValidator(getValidator()); + return editor; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialog.java index 09ed8db26d1af112aa1ffb118672b9e978a6bb03..5fc1c992937aaf8192ea2ab7e25e9a78b041af29 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialog.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialog.java @@ -1,242 +1,242 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.property; - -import java.io.File; -import java.io.FilenameFilter; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.databinding.observable.list.WritableList; -import org.eclipse.core.resources.IFile; -import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.viewers.CellLabelProvider; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.jface.viewers.ViewerCell; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.PaintEvent; -import org.eclipse.swt.events.PaintListener; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Canvas; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.EditorImageRegistry; -import de.bmotionstudio.gef.editor.library.LibraryImageObject; -import de.bmotionstudio.gef.editor.library.LibraryObject; - -public class ImageDialog extends Dialog { - - private TableViewer tvLibrary; - private Image previewImage; - private Composite preContainer; - private Canvas previewCanvas; - private final ImageDialogCellEditor imageDialogCellEditor; - - protected ImageDialog(final Shell parentShell, - final ImageDialogCellEditor imageDialogCellEditor) { - super(parentShell); - this.imageDialogCellEditor = imageDialogCellEditor; - } - - @Override - protected Control createDialogArea(final Composite parent) { - - Composite container = (Composite) super.createDialogArea(parent); - - GridLayout gl = new GridLayout(1, true); - gl.horizontalSpacing = 0; - container.setLayout(gl); - - GridData gd = new GridData(GridData.FILL_BOTH); - gd.horizontalIndent = 0; - - preContainer = new Composite(container, SWT.NONE); - preContainer.setLayoutData(gd); - preContainer.setLayout(new FillLayout()); - - previewCanvas = new Canvas(preContainer, SWT.BORDER); - previewCanvas.addPaintListener(new PaintListener() { - public void paintControl(final PaintEvent e) { - if (previewImage == null) { - e.gc.drawString("No image selected ...", 0, 0); - } else { - e.gc.drawImage(previewImage, 0, 0); - } - } - }); - - final Composite libContainer = new Composite(container, SWT.NONE); - libContainer.setLayoutData(gd); - libContainer.setLayout(new FillLayout()); - - tvLibrary = new TableViewer(libContainer, SWT.FULL_SELECTION - | SWT.V_SCROLL); - tvLibrary.getTable().setLayoutData(gd); - tvLibrary.addSelectionChangedListener(new ISelectionChangedListener() { - - public void selectionChanged(final SelectionChangedEvent event) { - - IStructuredSelection selection = (IStructuredSelection) event - .getSelection(); - - LibraryObject obj = (LibraryObject) selection.getFirstElement(); - - if (previewImage != null) { - previewImage.dispose(); - } - - previewImage = null; - - if (obj != null) { - if (!obj.getName().equals("noimage")) { - IFile pFile = BMotionEditorPlugin.getActiveEditor() - .getVisualization().getProjectFile(); - if (pFile != null) { - String myPath = (pFile.getProject() - .getLocationURI() + "/images/" + obj - .getName()).replace("file:", ""); - previewImage = new Image(Display.getDefault(), - myPath); - } - } - } - - previewCanvas.redraw(); - - } - - }); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tvLibrary.setContentProvider(contentProvider); - - tvLibrary.getTable().setLinesVisible(true); - tvLibrary.getTable().setHeaderVisible(true); - - final TableViewerColumn column1 = new TableViewerColumn(tvLibrary, - SWT.NONE); - column1.getColumn().setText("Name"); - column1.getColumn().setWidth(390); - column1.setLabelProvider(new CellLabelProvider() { - @Override - public void update(final ViewerCell cell) { - cell.setText(((LibraryObject) cell.getElement()).getName()); - cell.setImage(((LibraryObject) cell.getElement()).getImage()); - } - }); - - final TableViewerColumn column2 = new TableViewerColumn(tvLibrary, - SWT.NONE); - column2.getColumn().setText("Type"); - column2.getColumn().setWidth(60); - column2.setLabelProvider(new CellLabelProvider() { - @Override - public void update(final ViewerCell cell) { - cell.setText(((LibraryObject) cell.getElement()).getType()); - } - }); - - WritableList input = new WritableList(getLibraryObjects(), - LibraryObject.class); - tvLibrary.setInput(input); - - return container; - - } - - private List<LibraryObject> getLibraryObjects() { - - List<LibraryObject> tmpList = new ArrayList<LibraryObject>(); - tmpList.add(new LibraryObject("noimage", "", BMotionStudioImage - .getImageDescriptor("org.eclipse.ui", - "$nl$/icons/full/etool16/delete_edit.gif") - .createImage())); - - if (BMotionEditorPlugin.getActiveEditor() != null) { - - String basePath = (BMotionEditorPlugin.getActiveEditor() - .getVisualization().getProjectFile().getProject() - .getLocation().toString()).replace("file:", ""); - File dir = new File(basePath + "/images"); - File[] fileList = dir.listFiles(new FilenameFilter() { - public boolean accept(final File dir, final String name) { - if (name.toLowerCase().endsWith(".jpg") - || name.toLowerCase().endsWith(".gif") - || name.toLowerCase().endsWith(".png")) { - return true; - } - return false; - } - }); - if (fileList != null) { - for (File f : fileList) { - Image img = null; - if (f.getName().toLowerCase().endsWith(".jpg")) { - img = BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_JPG); - } else { - img = BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_GIF); - } - tmpList.add(new LibraryImageObject(f.getName(), "image", - img)); - } - } - - } - - return tmpList; - - } - - LibraryObject getSelectedObject() { - IStructuredSelection sel = (IStructuredSelection) tvLibrary - .getSelection(); - LibraryObject lobj = (LibraryObject) sel.getFirstElement(); - return lobj; - } - - @Override - protected Point getInitialSize() { - return new Point(500, 500); - } - - @Override - protected void okPressed() { - LibraryObject sel = getSelectedObject(); - if (sel != null) { - if (!sel.getName().equals("noimage")) { - this.imageDialogCellEditor.setValue(sel.getName()); - } else { - this.imageDialogCellEditor.setValue(""); - } - - } - close(); - } - - @Override - protected void configureShell(final Shell newShell) { - super.configureShell(newShell); - newShell.setText("BMotion Studio - Select image dialog"); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.property; + +import java.io.File; +import java.io.FilenameFilter; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.databinding.observable.list.WritableList; +import org.eclipse.core.resources.IFile; +import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.CellLabelProvider; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.viewers.ViewerCell; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; + +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.BMotionStudioImage; +import de.bmotionstudio.gef.editor.EditorImageRegistry; +import de.bmotionstudio.gef.editor.library.LibraryImageObject; +import de.bmotionstudio.gef.editor.library.LibraryObject; + +public class ImageDialog extends Dialog { + + private TableViewer tvLibrary; + private Image previewImage; + private Composite preContainer; + private Canvas previewCanvas; + private final ImageDialogCellEditor imageDialogCellEditor; + + protected ImageDialog(final Shell parentShell, + final ImageDialogCellEditor imageDialogCellEditor) { + super(parentShell); + this.imageDialogCellEditor = imageDialogCellEditor; + } + + @Override + protected Control createDialogArea(final Composite parent) { + + Composite container = (Composite) super.createDialogArea(parent); + + GridLayout gl = new GridLayout(1, true); + gl.horizontalSpacing = 0; + container.setLayout(gl); + + GridData gd = new GridData(GridData.FILL_BOTH); + gd.horizontalIndent = 0; + + preContainer = new Composite(container, SWT.NONE); + preContainer.setLayoutData(gd); + preContainer.setLayout(new FillLayout()); + + previewCanvas = new Canvas(preContainer, SWT.BORDER); + previewCanvas.addPaintListener(new PaintListener() { + public void paintControl(final PaintEvent e) { + if (previewImage == null) { + e.gc.drawString("No image selected ...", 0, 0); + } else { + e.gc.drawImage(previewImage, 0, 0); + } + } + }); + + final Composite libContainer = new Composite(container, SWT.NONE); + libContainer.setLayoutData(gd); + libContainer.setLayout(new FillLayout()); + + tvLibrary = new TableViewer(libContainer, SWT.FULL_SELECTION + | SWT.V_SCROLL); + tvLibrary.getTable().setLayoutData(gd); + tvLibrary.addSelectionChangedListener(new ISelectionChangedListener() { + + public void selectionChanged(final SelectionChangedEvent event) { + + IStructuredSelection selection = (IStructuredSelection) event + .getSelection(); + + LibraryObject obj = (LibraryObject) selection.getFirstElement(); + + if (previewImage != null) { + previewImage.dispose(); + } + + previewImage = null; + + if (obj != null) { + if (!obj.getName().equals("noimage")) { + IFile pFile = BMotionEditorPlugin.getActiveEditor() + .getVisualization().getProjectFile(); + if (pFile != null) { + String myPath = (pFile.getProject() + .getLocationURI() + "/images/" + obj + .getName()).replace("file:", ""); + previewImage = new Image(Display.getDefault(), + myPath); + } + } + } + + previewCanvas.redraw(); + + } + + }); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tvLibrary.setContentProvider(contentProvider); + + tvLibrary.getTable().setLinesVisible(true); + tvLibrary.getTable().setHeaderVisible(true); + + final TableViewerColumn column1 = new TableViewerColumn(tvLibrary, + SWT.NONE); + column1.getColumn().setText("Name"); + column1.getColumn().setWidth(390); + column1.setLabelProvider(new CellLabelProvider() { + @Override + public void update(final ViewerCell cell) { + cell.setText(((LibraryObject) cell.getElement()).getName()); + cell.setImage(((LibraryObject) cell.getElement()).getImage()); + } + }); + + final TableViewerColumn column2 = new TableViewerColumn(tvLibrary, + SWT.NONE); + column2.getColumn().setText("Type"); + column2.getColumn().setWidth(60); + column2.setLabelProvider(new CellLabelProvider() { + @Override + public void update(final ViewerCell cell) { + cell.setText(((LibraryObject) cell.getElement()).getType()); + } + }); + + WritableList input = new WritableList(getLibraryObjects(), + LibraryObject.class); + tvLibrary.setInput(input); + + return container; + + } + + private List<LibraryObject> getLibraryObjects() { + + List<LibraryObject> tmpList = new ArrayList<LibraryObject>(); + tmpList.add(new LibraryObject("noimage", "", BMotionStudioImage + .getImageDescriptor("org.eclipse.ui", + "$nl$/icons/full/etool16/delete_edit.gif") + .createImage())); + + if (BMotionEditorPlugin.getActiveEditor() != null) { + + String basePath = (BMotionEditorPlugin.getActiveEditor() + .getVisualization().getProjectFile().getProject() + .getLocation().toString()).replace("file:", ""); + File dir = new File(basePath + "/images"); + File[] fileList = dir.listFiles(new FilenameFilter() { + public boolean accept(final File dir, final String name) { + if (name.toLowerCase().endsWith(".jpg") + || name.toLowerCase().endsWith(".gif") + || name.toLowerCase().endsWith(".png")) { + return true; + } + return false; + } + }); + if (fileList != null) { + for (File f : fileList) { + Image img = null; + if (f.getName().toLowerCase().endsWith(".jpg")) { + img = BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_JPG); + } else { + img = BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_GIF); + } + tmpList.add(new LibraryImageObject(f.getName(), "image", + img)); + } + } + + } + + return tmpList; + + } + + LibraryObject getSelectedObject() { + IStructuredSelection sel = (IStructuredSelection) tvLibrary + .getSelection(); + LibraryObject lobj = (LibraryObject) sel.getFirstElement(); + return lobj; + } + + @Override + protected Point getInitialSize() { + return new Point(500, 500); + } + + @Override + protected void okPressed() { + LibraryObject sel = getSelectedObject(); + if (sel != null) { + if (!sel.getName().equals("noimage")) { + this.imageDialogCellEditor.setValue(sel.getName()); + } else { + this.imageDialogCellEditor.setValue(""); + } + + } + close(); + } + + @Override + protected void configureShell(final Shell newShell) { + super.configureShell(newShell); + newShell.setText("BMotion Studio - Select image dialog"); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialogCellEditor.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialogCellEditor.java index fb88890ec12650af160ae1b33131b4dade7b260d..ec77332f939ab0c106bb4d0de6ad3589e5f1bc5d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialogCellEditor.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/property/ImageDialogCellEditor.java @@ -1,42 +1,42 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.property; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.viewers.DialogCellEditor; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.PlatformUI; - -public class ImageDialogCellEditor extends DialogCellEditor { - - /** - * Creates a new Image dialog cell editor parented under the given control. - * The cell editor value is <code>null</code> initially, and has no - * validator. - * - * @param parent - * the parent control - */ - protected ImageDialogCellEditor(Composite parent) { - super(parent); - } - - /** - * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control) - */ - @Override - protected Object openDialogBox(Control arg) { - ImageDialog dialog = new ImageDialog(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), this); - if (dialog.open() == Dialog.OK) { - return getValue(); - } - return null; - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.property; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.DialogCellEditor; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.PlatformUI; + +public class ImageDialogCellEditor extends DialogCellEditor { + + /** + * Creates a new Image dialog cell editor parented under the given control. + * The cell editor value is <code>null</code> initially, and has no + * validator. + * + * @param parent + * the parent control + */ + protected ImageDialogCellEditor(Composite parent) { + super(parent); + } + + /** + * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(Control) + */ + @Override + protected Object openDialogBox(Control arg) { + ImageDialog dialog = new ImageDialog(PlatformUI.getWorkbench() + .getActiveWorkbenchWindow().getShell(), this); + if (dialog.open() == Dialog.OK) { + return getValue(); + } + return null; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/AnimationScriptObject.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/AnimationScriptObject.java index 332a0ffad16ec57344b33dba42c7e9c43da89c86..00e57c45a0df64e0488889047607f3aaf52079c6 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/AnimationScriptObject.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/AnimationScriptObject.java @@ -16,6 +16,9 @@ public class AnimationScriptObject extends BindingObject implements Cloneable { private String predicate; + public AnimationScriptObject() { + } + public AnimationScriptObject(String predicate) { this(predicate, new Vector<AnimationScriptStep>()); } diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java index 3b8d16f6086330968b7ed87274a724f4d7c64ae6..20a3c505bb4d594fe051a8be9c882774a7147878 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteAnimationScript.java @@ -10,9 +10,10 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import de.bmotionstudio.gef.editor.internal.Animation; +import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.scheduler.wizard.WizardExecuteAnimationScript; +import de.bmotionstudio.gef.editor.scheduler.wizard.WizardExecuteScheduler; +import de.bmotionstudio.gef.editor.util.BMSUtil; import de.prob.core.Animator; import de.prob.core.command.ExecuteOperationCommand; import de.prob.core.command.GetCurrentStateIdCommand; @@ -45,8 +46,8 @@ public class ExecuteAnimationScript extends SchedulerEvent { // First evaluate predicate (predicate field) // If true (execute operation sequence) - if (Boolean.valueOf(parsePredicate(obj.getPredicate(), control, - animation, null))) { + if (Boolean.valueOf(BMSUtil.parsePredicate(obj.getPredicate(), + control, animation))) { for (AnimationScriptStep step : obj.getSteps()) { @@ -55,7 +56,7 @@ public class ExecuteAnimationScript extends SchedulerEvent { String currentState = GetCurrentStateIdCommand .getID(animator); - List<Operation> operations = parseOperation( + List<Operation> operations = BMSUtil.parseOperation( step.getCommand(), step.getParameter(), step.getMaxrandom(), animation, currentState, control); @@ -97,7 +98,7 @@ public class ExecuteAnimationScript extends SchedulerEvent { @Override public SchedulerWizard getWizard(final BControl bcontrol) { - return new WizardExecuteAnimationScript(bcontrol, this); + return new WizardExecuteScheduler(bcontrol, this); } public ExecuteAnimationScript clone() throws CloneNotSupportedException { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java index 23d2a1c1c60a8cf83dc8da6ee73c2fdb8e59d3b8..c9114041dd765a0295d88fd92576e5e6278d4090 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicate.java @@ -9,9 +9,10 @@ package de.bmotionstudio.gef.editor.scheduler; import java.util.List; import java.util.Random; -import de.bmotionstudio.gef.editor.internal.Animation; +import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.scheduler.wizard.WizardSchedulerExecuteOperationByPredicate; +import de.bmotionstudio.gef.editor.scheduler.wizard.WizardExecuteOperationByPredicate; +import de.bmotionstudio.gef.editor.util.BMSUtil; import de.prob.core.Animator; import de.prob.core.command.ExecuteOperationCommand; import de.prob.core.command.GetCurrentStateIdCommand; @@ -39,7 +40,7 @@ public class ExecuteOperationByPredicate extends SchedulerEvent { String currentState = GetCurrentStateIdCommand .getID(animator); - List<Operation> operations = parseOperation( + List<Operation> operations = BMSUtil.parseOperation( predicateOperation.getOperationName(), predicateOperation.getPredicate(), predicateOperation.getMaxrandom(), animation, @@ -75,7 +76,7 @@ public class ExecuteOperationByPredicate extends SchedulerEvent { @Override public SchedulerWizard getWizard(BControl bcontrol) { - return new WizardSchedulerExecuteOperationByPredicate(bcontrol, this); + return new WizardExecuteOperationByPredicate(bcontrol, this); } public void setPredicateOperation(PredicateOperation predicateOperation) { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java index 064189f6fd125e410c1bf0c287e54c040fa144a5..eb2b2c88cd131ae74a22c58507c38db5f2564beb 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/ExecuteOperationByPredicateMulti.java @@ -2,10 +2,11 @@ package de.bmotionstudio.gef.editor.scheduler; import java.util.ArrayList; +import de.bmotionstudio.gef.editor.Animation; import de.bmotionstudio.gef.editor.BindingObject; -import de.bmotionstudio.gef.editor.internal.Animation; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.scheduler.wizard.WizardExecuteOperationByPredicateMulti; +import de.bmotionstudio.gef.editor.util.BMSUtil; public class ExecuteOperationByPredicateMulti extends SchedulerEvent { @@ -27,8 +28,8 @@ public class ExecuteOperationByPredicateMulti extends SchedulerEvent { .getExecutePredicate(); if (executePredicate.length() > 0) { - bolValue = parsePredicate(executePredicate, control, animation, - null); + bolValue = BMSUtil.parsePredicate(executePredicate, control, + animation); } if (Boolean.valueOf(bolValue)) { // If true diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java index c83a6510ffbf326af0990ce77a5f553651c1ca1f..acc22a77cfb4ce228782038c422420071bde5da9 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerEvent.java @@ -1,90 +1,90 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.scheduler; - -import org.eclipse.core.runtime.IConfigurationElement; - -import de.bmotionstudio.gef.editor.AbstractExpressionControl; -import de.bmotionstudio.gef.editor.BMotionEditorPlugin; -import de.bmotionstudio.gef.editor.internal.Animation; -import de.bmotionstudio.gef.editor.model.BControl; - -/** - * - * Scheduler Events are assigned to events (i.e. on-click event) or to - * schedulers. A scheduler is an independent thread attempting to execute a set - * of scheduler events. It is very useful when the user does not want to execute - * each scheduler event by hand during an animation. - * - * @author Lukas Ladenberger - * - */ -public abstract class SchedulerEvent extends AbstractExpressionControl - implements Cloneable { - - private transient String eventID; - - public SchedulerEvent() { - init(); - } - - protected Object readResolve() { - init(); - return this; - } - - /** - * Method to initialize the scheduler event. Gets the ID, name and - * description from the corresponding extension point - */ - private void init() { - IConfigurationElement configElement = BMotionEditorPlugin - .getSchedulerExtension(getClass().getName()); - if (configElement != null) { - this.ID = configElement.getAttribute("class"); - this.name = configElement.getAttribute("name"); - this.description = configElement.getAttribute("description"); - } - } - - public void setEventID(String eventID) { - this.eventID = eventID; - } - - public String getEventID() { - return eventID; - } - - /** - * Executes the scheduler event (i.e. execute operation). - * - * @param animation - * The running animation - * @param bcontrol - * The corresponding control - */ - public abstract void execute(Animation animation, BControl bcontrol); - - /** - * Returns a corresponding wizard for the scheduler event. - * - * @param bcontrol - * The corresponding control - * @return the corresponding wizard - */ - public abstract SchedulerWizard getWizard(BControl bcontrol); - - /** - * Makes a copy of the scheduler event - * - * @return the cloned scheduler event - */ - public SchedulerEvent clone() throws CloneNotSupportedException { - return (SchedulerEvent) super.clone(); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.scheduler; + +import org.eclipse.core.runtime.IConfigurationElement; + +import de.bmotionstudio.gef.editor.AbstractExpressionControl; +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.BMotionEditorPlugin; +import de.bmotionstudio.gef.editor.model.BControl; + +/** + * + * Scheduler Events are assigned to events (i.e. on-click event) or to + * schedulers. A scheduler is an independent thread attempting to execute a set + * of scheduler events. It is very useful when the user does not want to execute + * each scheduler event by hand during an animation. + * + * @author Lukas Ladenberger + * + */ +public abstract class SchedulerEvent extends AbstractExpressionControl + implements Cloneable { + + private transient String eventID; + + public SchedulerEvent() { + init(); + } + + protected Object readResolve() { + init(); + return this; + } + + /** + * Method to initialize the scheduler event. Gets the ID, name and + * description from the corresponding extension point + */ + private void init() { + IConfigurationElement configElement = BMotionEditorPlugin + .getSchedulerExtension(getClass().getName()); + if (configElement != null) { + this.ID = configElement.getAttribute("class"); + this.name = configElement.getAttribute("name"); + this.description = configElement.getAttribute("description"); + } + } + + public void setEventID(String eventID) { + this.eventID = eventID; + } + + public String getEventID() { + return eventID; + } + + /** + * Executes the scheduler event (i.e. execute operation). + * + * @param animation + * The running animation + * @param bcontrol + * The corresponding control + */ + public abstract void execute(Animation animation, BControl bcontrol); + + /** + * Returns a corresponding wizard for the scheduler event. + * + * @param bcontrol + * The corresponding control + * @return the corresponding wizard + */ + public abstract SchedulerWizard getWizard(BControl bcontrol); + + /** + * Makes a copy of the scheduler event + * + * @return the cloned scheduler event + */ + public SchedulerEvent clone() throws CloneNotSupportedException { + return (SchedulerEvent) super.clone(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java index 61cd3a464efda46d1de02480cce6afa177cabcc0..11cdbb4316faab8776c1911c7af9e1b776a2f6ff 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/SchedulerWizard.java @@ -1,60 +1,60 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.scheduler; - -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.swt.graphics.Point; - -import de.bmotionstudio.gef.editor.model.BControl; - -/** - * - * The BMotion Studio provides an easy way to handle Scheduler Events. For this, - * Scheduler Events can have a corresponding dialog. The user can open it by - * calling the context menu of a B-Control. - * - * @author Lukas Ladenberger - * - */ -public abstract class SchedulerWizard extends Wizard { - - private BControl bcontrol; - private SchedulerEvent event; - - protected Boolean eventDelete = false; - - public SchedulerWizard(BControl bcontrol, SchedulerEvent scheduler) { - this.bcontrol = bcontrol; - this.event = scheduler; - } - - public BControl getBControl() { - return this.bcontrol; - } - - public SchedulerEvent getScheduler() { - return this.event; - } - - protected abstract Boolean prepareToFinish(); - - @Override - public boolean performFinish() { - return prepareToFinish(); - } - - protected void setEventDelete(Boolean b) { - this.eventDelete = b; - } - - public Boolean isEventDelete() { - return this.eventDelete; - } - - public abstract Point getSize(); - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.scheduler; + +import org.eclipse.swt.graphics.Point; + +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; +import de.bmotionstudio.gef.editor.model.BControl; + +/** + * + * The BMotion Studio provides an easy way to handle Scheduler Events. For this, + * Scheduler Events can have a corresponding dialog. The user can open it by + * calling the context menu of a B-Control. + * + * @author Lukas Ladenberger + * + */ +public abstract class SchedulerWizard extends BMotionAbstractWizard { + + private SchedulerEvent event; + + protected Boolean eventDelete = false; + + public SchedulerWizard(BControl control, SchedulerEvent scheduler) { + super(control); + this.event = scheduler; + } + + public SchedulerEvent getScheduler() { + return this.event; + } + + protected abstract Boolean prepareToFinish(); + + @Override + public boolean performFinish() { + return prepareToFinish(); + } + + protected void setEventDelete(Boolean b) { + this.eventDelete = b; + } + + public Boolean isEventDelete() { + return this.eventDelete; + } + + public abstract Point getSize(); + + @Override + public String getName() { + return event.getName(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java index aa06b77236e917a94b64527e61ac52f97732b565..568c5f0922ff44ead8f3173c40249ec7e669bf41 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/ObserverCallBackDialog.java @@ -1,335 +1,335 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.scheduler.wizard; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.core.databinding.observable.list.ComputedList; -import org.eclipse.core.databinding.observable.list.WritableList; -import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; -import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.ComboBoxViewerCellEditor; -import org.eclipse.jface.viewers.EditingSupport; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CCombo; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.FocusListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.EditorImageRegistry; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep; -import de.bmotionstudio.gef.editor.scheduler.ObserverCallBackObject; - -@Deprecated -public class ObserverCallBackDialog extends Dialog { - - private TableViewer tableViewer; - - private final AnimationScriptStep animationScriptStep; - - private final BControl control; - - // private IObservableValue controlObservable; - - public ObserverCallBackDialog(final Shell parentShell, - final AnimationScriptStep animationScriptStep, - final BControl control) { - super(parentShell); - this.animationScriptStep = animationScriptStep; - this.control = control; - } - - @Override - protected Control createDialogArea(final Composite parent) { - - // DataBindingContext dbc = new DataBindingContext(); - - Composite container = (Composite) super.createDialogArea(parent); - container.setLayout(new GridLayout(1, true)); - - tableViewer = new TableViewer(container, SWT.BORDER - | SWT.FULL_SELECTION); - tableViewer.getTable().setLinesVisible(true); - tableViewer.getTable().setHeaderVisible(true); - tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); - tableViewer.getTable().setFont( - new Font(Display.getDefault(), new FontData("Arial", 10, - SWT.NONE))); - - TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Control"); - column.getColumn().setWidth(225); - column.setEditingSupport(new ControlValueEditing(tableViewer, control)); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Observer"); - column.getColumn().setWidth(150); - // column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, - // "observerID")); - column.setEditingSupport(new ObserverValueEditing(tableViewer, control)); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - tableViewer.setLabelProvider(new ObservableMapLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "control", "observerID" })) { - - @Override - public String getColumnText(final Object element, - final int columnIndex) { - if (columnIndex == 0) { - - ObserverCallBackObject obj = (ObserverCallBackObject) element; - - if (obj.getControl() != null) { - return obj.getControl().getID(); - } - } - return super.getColumnText(element, columnIndex); - } - - @Override - public Image getColumnImage(final Object element, - final int columnIndex) { - return null; - } - - }); - - final WritableList input = new WritableList( - animationScriptStep.getCallBackList(), - ObserverCallBackObject.class); - - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - ObserverCallBackObject obj = (ObserverCallBackObject) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(obj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_ADD)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - ObserverCallBackObject obj = new ObserverCallBackObject(); - input.add(obj); - } - }); - - return container; - - } - - @Override - protected Point getInitialSize() { - return new Point(600, 500); - } - - @Override - protected void okPressed() { - close(); - } - - @Override - protected void configureShell(final Shell newShell) { - super.configureShell(newShell); - newShell.setText("BMotion Studio - Observer Callback Editor"); - } - - private class ControlValueEditing extends EditingSupport { - - private ComboBoxViewerCellEditor cellEditor = null; - - private final BControl control; - - public ControlValueEditing(final TableViewer cv, final BControl control) { - super(cv); - this.control = control; - } - - @Override - protected boolean canEdit(final Object element) { - return true; - } - - @Override - protected Object getValue(final Object element) { - if (((ObserverCallBackObject) element).getControl() != null) { - return ((ObserverCallBackObject) element).getControl().getID(); - } else { - return ""; - } - } - - @Override - protected void setValue(final Object element, final Object value) { - if (value != null) { - ((ObserverCallBackObject) element).setControl(control - .getVisualization().getBControl(value.toString())); - } - } - - @Override - protected CellEditor getCellEditor(final Object element) { - if (cellEditor == null) { - cellEditor = new ComboBoxViewerCellEditor( - (Composite) getViewer().getControl(), SWT.READ_ONLY); - cellEditor - .setContenProvider(new ObservableListContentProvider()); - cellEditor.setInput(new ComputedList() { - @Override - protected List<String> calculate() { - ArrayList<String> tmpList = new ArrayList<String>(); - for (String controlID : control.getVisualization() - .getAllBControlIDs()) { - tmpList.add(controlID); - } - return tmpList; - } - }); - ((CCombo) cellEditor.getControl()) - .addFocusListener(new FocusListener() { - - String oldValue; - - public void focusGained(final FocusEvent e) { - oldValue = ((CCombo) cellEditor.getControl()) - .getText(); - - } - - public void focusLost(final FocusEvent e) { - - if (!oldValue.equals(((CCombo) cellEditor - .getControl()).getText())) { - - IStructuredSelection selection = (IStructuredSelection) getViewer() - .getSelection(); - - ObserverCallBackObject obj = (ObserverCallBackObject) selection - .getFirstElement(); - obj.setObserverID(""); - tableViewer.refresh(); - - } - } - - }); - } - return cellEditor; - } - } - - private static class ObserverValueEditing extends EditingSupport { - - private ComboBoxViewerCellEditor cellEditor = null; - - // private final BControl control; - - public ObserverValueEditing(final TableViewer cv, final BControl control) { - super(cv); - // this.control = control; - } - - @Override - protected boolean canEdit(final Object element) { - return true; - } - - @Override - protected Object getValue(final Object element) { - if (((ObserverCallBackObject) element).getObserverID() != null) { - return ((ObserverCallBackObject) element).getObserverID(); - } else { - return ""; - } - } - - @Override - protected void setValue(final Object element, final Object value) { - if (value != null) { - ((ObserverCallBackObject) element).setObserverID(value - .toString()); - } - } - - @Override - protected CellEditor getCellEditor(final Object element) { - - if (cellEditor == null) { - cellEditor = new ComboBoxViewerCellEditor( - (Composite) getViewer().getControl(), SWT.READ_ONLY); - cellEditor - .setContenProvider(new ObservableListContentProvider()); - } - // cellEditor.setInput(new ComputedList() { - // @Override - // protected List<String> calculate() { - // - // ArrayList<String> tmpList = new ArrayList<String>(); - // - // ObserverCallBackObject obj = (ObserverCallBackObject) element; - // BControl control = obj.getControl(); - // if (control != null) { - // - // for (String id : control.getObservers().keySet()) { - // tmpList.add(id); - // } - // - // } - // - // return tmpList; - // - // } - // }); - - return cellEditor; - } - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.scheduler.wizard; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.databinding.beans.BeansObservables; +import org.eclipse.core.databinding.observable.list.ComputedList; +import org.eclipse.core.databinding.observable.list.WritableList; +import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; +import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.ComboBoxViewerCellEditor; +import org.eclipse.jface.viewers.EditingSupport; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CCombo; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.events.FocusListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.layout.RowLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; + +import de.bmotionstudio.gef.editor.BMotionStudioImage; +import de.bmotionstudio.gef.editor.EditorImageRegistry; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep; +import de.bmotionstudio.gef.editor.scheduler.ObserverCallBackObject; + +@Deprecated +public class ObserverCallBackDialog extends Dialog { + + private TableViewer tableViewer; + + private final AnimationScriptStep animationScriptStep; + + private final BControl control; + + // private IObservableValue controlObservable; + + public ObserverCallBackDialog(final Shell parentShell, + final AnimationScriptStep animationScriptStep, + final BControl control) { + super(parentShell); + this.animationScriptStep = animationScriptStep; + this.control = control; + } + + @Override + protected Control createDialogArea(final Composite parent) { + + // DataBindingContext dbc = new DataBindingContext(); + + Composite container = (Composite) super.createDialogArea(parent); + container.setLayout(new GridLayout(1, true)); + + tableViewer = new TableViewer(container, SWT.BORDER + | SWT.FULL_SELECTION); + tableViewer.getTable().setLinesVisible(true); + tableViewer.getTable().setHeaderVisible(true); + tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); + tableViewer.getTable().setFont( + new Font(Display.getDefault(), new FontData("Arial", 10, + SWT.NONE))); + + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Control"); + column.getColumn().setWidth(225); + column.setEditingSupport(new ControlValueEditing(tableViewer, control)); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Observer"); + column.getColumn().setWidth(150); + // column.setEditingSupport(new TextEditingSupport(tableViewer, dbc, + // "observerID")); + column.setEditingSupport(new ObserverValueEditing(tableViewer, control)); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + tableViewer.setLabelProvider(new ObservableMapLabelProvider( + BeansObservables.observeMaps( + contentProvider.getKnownElements(), new String[] { + "control", "observerID" })) { + + @Override + public String getColumnText(final Object element, + final int columnIndex) { + if (columnIndex == 0) { + + ObserverCallBackObject obj = (ObserverCallBackObject) element; + + if (obj.getControl() != null) { + return obj.getControl().getID(); + } + } + return super.getColumnText(element, columnIndex); + } + + @Override + public Image getColumnImage(final Object element, + final int columnIndex) { + return null; + } + + }); + + final WritableList input = new WritableList( + animationScriptStep.getCallBackList(), + ObserverCallBackObject.class); + + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; + } + ObserverCallBackObject obj = (ObserverCallBackObject) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(obj); + } + }); + + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_ADD)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + ObserverCallBackObject obj = new ObserverCallBackObject(); + input.add(obj); + } + }); + + return container; + + } + + @Override + protected Point getInitialSize() { + return new Point(600, 500); + } + + @Override + protected void okPressed() { + close(); + } + + @Override + protected void configureShell(final Shell newShell) { + super.configureShell(newShell); + newShell.setText("BMotion Studio - Observer Callback Editor"); + } + + private class ControlValueEditing extends EditingSupport { + + private ComboBoxViewerCellEditor cellEditor = null; + + private final BControl control; + + public ControlValueEditing(final TableViewer cv, final BControl control) { + super(cv); + this.control = control; + } + + @Override + protected boolean canEdit(final Object element) { + return true; + } + + @Override + protected Object getValue(final Object element) { + if (((ObserverCallBackObject) element).getControl() != null) { + return ((ObserverCallBackObject) element).getControl().getID(); + } else { + return ""; + } + } + + @Override + protected void setValue(final Object element, final Object value) { + if (value != null) { + ((ObserverCallBackObject) element).setControl(control + .getVisualization().getBControl(value.toString())); + } + } + + @Override + protected CellEditor getCellEditor(final Object element) { + if (cellEditor == null) { + cellEditor = new ComboBoxViewerCellEditor( + (Composite) getViewer().getControl(), SWT.READ_ONLY); + cellEditor + .setContenProvider(new ObservableListContentProvider()); + cellEditor.setInput(new ComputedList() { + @Override + protected List<String> calculate() { + ArrayList<String> tmpList = new ArrayList<String>(); + for (String controlID : control.getVisualization() + .getAllBControlIDs()) { + tmpList.add(controlID); + } + return tmpList; + } + }); + ((CCombo) cellEditor.getControl()) + .addFocusListener(new FocusListener() { + + String oldValue; + + public void focusGained(final FocusEvent e) { + oldValue = ((CCombo) cellEditor.getControl()) + .getText(); + + } + + public void focusLost(final FocusEvent e) { + + if (!oldValue.equals(((CCombo) cellEditor + .getControl()).getText())) { + + IStructuredSelection selection = (IStructuredSelection) getViewer() + .getSelection(); + + ObserverCallBackObject obj = (ObserverCallBackObject) selection + .getFirstElement(); + obj.setObserverID(""); + tableViewer.refresh(); + + } + } + + }); + } + return cellEditor; + } + } + + private static class ObserverValueEditing extends EditingSupport { + + private ComboBoxViewerCellEditor cellEditor = null; + + // private final BControl control; + + public ObserverValueEditing(final TableViewer cv, final BControl control) { + super(cv); + // this.control = control; + } + + @Override + protected boolean canEdit(final Object element) { + return true; + } + + @Override + protected Object getValue(final Object element) { + if (((ObserverCallBackObject) element).getObserverID() != null) { + return ((ObserverCallBackObject) element).getObserverID(); + } else { + return ""; + } + } + + @Override + protected void setValue(final Object element, final Object value) { + if (value != null) { + ((ObserverCallBackObject) element).setObserverID(value + .toString()); + } + } + + @Override + protected CellEditor getCellEditor(final Object element) { + + if (cellEditor == null) { + cellEditor = new ComboBoxViewerCellEditor( + (Composite) getViewer().getControl(), SWT.READ_ONLY); + cellEditor + .setContenProvider(new ObservableListContentProvider()); + } + // cellEditor.setInput(new ComputedList() { + // @Override + // protected List<String> calculate() { + // + // ArrayList<String> tmpList = new ArrayList<String>(); + // + // ObserverCallBackObject obj = (ObserverCallBackObject) element; + // BControl control = obj.getControl(); + // if (control != null) { + // + // for (String id : control.getObservers().keySet()) { + // tmpList.add(id); + // } + // + // } + // + // return tmpList; + // + // } + // }); + + return cellEditor; + } + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/AnimationScriptObjectDialog.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java similarity index 63% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/AnimationScriptObjectDialog.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java index 614a93d8fad62dfee190e40e4e9249ff8400788d..af904c2fb0b042b4581c3df6c17ace2d41fa8111 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/AnimationScriptObjectDialog.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/SchedulerObjectDialog.java @@ -1,407 +1,287 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.scheduler.wizard; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Vector; - -import org.eclipse.core.databinding.DataBindingContext; -import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.core.databinding.observable.list.ComputedList; -import org.eclipse.core.databinding.observable.list.WritableList; -import org.eclipse.core.resources.IFile; -import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; -import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.ColumnViewer; -import org.eclipse.jface.viewers.ComboBoxViewerCellEditor; -import org.eclipse.jface.viewers.EditingSupport; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; -import org.eventb.core.IMachineRoot; -import org.eventb.core.ISCEvent; -import org.eventb.core.ISCGuard; -import org.eventb.core.ISCMachineRoot; -import org.eventb.core.ISCParameter; -import org.rodinp.core.IRodinFile; -import org.rodinp.core.IRodinProject; -import org.rodinp.core.RodinCore; -import org.rodinp.core.RodinDBException; - -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.EditorImageRegistry; -import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; -import de.bmotionstudio.gef.editor.eventb.EventBHelper; -import de.bmotionstudio.gef.editor.eventb.MachineContentObject; -import de.bmotionstudio.gef.editor.eventb.MachineOperation; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.model.Visualization; -import de.bmotionstudio.gef.editor.property.IntegerCellEditor; -import de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject; -import de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep; -import de.prob.logging.Logger; - -public class AnimationScriptObjectDialog extends Dialog { - - private ISCMachineRoot getCorrespondingFile(IFile file, - String machineFileName) { - IRodinProject myProject = RodinCore.valueOf(file.getProject()); - IRodinFile rodinSource = myProject.getRodinFile(machineFileName); - ISCMachineRoot machineRoot = ((IMachineRoot) rodinSource.getRoot()) - .getSCMachineRoot(); - return machineRoot; - } - - public List<MachineContentObject> getOperations(Visualization visualization) { - - ISCMachineRoot machineRoot = null; - - machineRoot = getCorrespondingFile(visualization.getProjectFile(), - visualization.getMachineName()); - - ISCEvent[] events = null; - ArrayList<MachineContentObject> tmpSet = new ArrayList<MachineContentObject>(); - - try { - events = machineRoot.getSCEvents(); - - for (ISCEvent event : events) { - - Vector<String> parSet = new Vector<String>(); - Vector<String> guardSet = new Vector<String>(); - - for (ISCParameter par : event.getSCParameters()) { - parSet.insertElementAt(par.getIdentifierString(), - parSet.size()); - } - - for (ISCGuard guard : event.getSCGuards()) { - guardSet.insertElementAt(guard.getPredicateString(), - guardSet.size()); - } - - MachineOperation op = new MachineOperation(event.getLabel(), - parSet, guardSet); - tmpSet.add(op); - - } - } catch (RodinDBException e) { - String message = "Rodin DB Exception while getting operations: " - + e.getLocalizedMessage(); - Logger.notifyUser(message, e); - return Collections - .unmodifiableList(new ArrayList<MachineContentObject>()); - } - - return tmpSet; - - } - - private TableViewer tableViewer; - - private final BControl control; - - private AnimationScriptObject animationScriptObject; - - public AnimationScriptObjectDialog(Shell parentShell, BControl control, - AnimationScriptObject animationScriptObject) { - super(parentShell); - this.control = control; - this.animationScriptObject = animationScriptObject; - } - - @Override - protected Control createDialogArea(final Composite parent) { - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = (Composite) super.createDialogArea(parent); - container.setLayout(new GridLayout(1, true)); - - tableViewer = new TableViewer(container, SWT.BORDER - | SWT.FULL_SELECTION); - tableViewer.getTable().setLinesVisible(true); - tableViewer.getTable().setHeaderVisible(true); - tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); - tableViewer.getTable().setFont( - new Font(Display.getDefault(), new FontData("Arial", 10, - SWT.NONE))); - - TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Operation"); - column.getColumn().setWidth(175); - column.setEditingSupport(new OperationValueEditing(tableViewer, control)); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Predicate"); - column.getColumn().setWidth(300); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc, - "parameter", control.getVisualization(), getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Random Ops"); - column.getColumn().setWidth(100); - column.setEditingSupport(new RandomModeEditingSupport(tableViewer)); - - // column = new TableViewerColumn(tableViewer, SWT.NONE); - // column.getColumn().setText("Callback"); - // column.getColumn().setWidth(100); - // column - // .setEditingSupport(new ObserverCallbackEditingSupport( - // tableViewer)); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - tableViewer.setLabelProvider(new ObservableMapLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), new String[] { - "command", "parameter", "maxrandom" })) { - - @Override - public String getColumnText(final Object element, - final int columnIndex) { - // if (columnIndex == 2) { - // return "Edit"; - // } - return super.getColumnText(element, columnIndex); - } - - @Override - public Image getColumnImage(final Object element, - final int columnIndex) { - return null; - } - - }); - - final WritableList input = new WritableList( - animationScriptObject.getSteps(), AnimationScriptStep.class); - - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - AnimationScriptStep obj = (AnimationScriptStep) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(obj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_ADD)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(final SelectionEvent e) { - AnimationScriptStep obj = new AnimationScriptStep(); - input.add(obj); - } - }); - - return container; - - } - - @Override - protected Point getInitialSize() { - return new Point(600, 500); - } - - @Override - protected void okPressed() { - close(); - } - - @Override - protected void configureShell(final Shell newShell) { - super.configureShell(newShell); - newShell.setText("BMotion Studio - Scheduler Editor"); - } - - public void setAnimationScriptObject( - final AnimationScriptObject animationScriptObject) { - this.animationScriptObject = animationScriptObject; - } - - public AnimationScriptObject getAnimationScriptObject() { - return animationScriptObject; - } - - // private class ObserverCallbackEditingSupport extends EditingSupport { - // - // public ObserverCallbackEditingSupport(ColumnViewer viewer) { - // super(viewer); - // } - // - // @Override - // protected boolean canEdit(Object element) { - // return true; - // } - // - // @Override - // protected CellEditor getCellEditor(Object element) { - // return new ObserverCallbackCellEditor((Composite) getViewer() - // .getControl(), (AnimationScriptStep) element); - // } - // - // @Override - // protected Object getValue(Object element) { - // return "Edit"; - // } - // - // @Override - // protected void setValue(Object element, Object value) { - // } - // - // } - - // private class ObserverCallbackCellEditor extends DialogCellEditor { - // - // private final AnimationScriptStep step; - // - // public ObserverCallbackCellEditor(final Composite parent, - // final AnimationScriptStep step) { - // super(parent); - // this.step = step; - // } - // - // @Override - // protected Object openDialogBox(final Control cellEditorWindow) { - // ObserverCallBackDialog dialog = new ObserverCallBackDialog( - // PlatformUI.getWorkbench().getActiveWorkbenchWindow() - // .getShell(), step, control); - // if (dialog.open() == Dialog.OK) { - // return getValue(); - // } - // return null; - // } - // - // } - - private static class OperationValueEditing extends EditingSupport { - - private ComboBoxViewerCellEditor cellEditor = null; - - private final BControl control; - - public OperationValueEditing(final TableViewer cv, - final BControl control) { - super(cv); - this.control = control; - } - - @Override - protected boolean canEdit(final Object element) { - return true; - } - - @Override - protected Object getValue(final Object element) { - return ((AnimationScriptStep) element).getCommand(); - } - - @Override - protected void setValue(final Object element, final Object value) { - if (value != null) { - ((AnimationScriptStep) element).setCommand(value.toString()); - } - } - - @Override - protected CellEditor getCellEditor(final Object element) { - if (cellEditor == null) { - cellEditor = new ComboBoxViewerCellEditor( - (Composite) getViewer().getControl(), SWT.READ_ONLY); - cellEditor - .setContentProvider(new ObservableListContentProvider()); - cellEditor.setInput(new ComputedList() { - @Override - protected List<String> calculate() { - ArrayList<String> tmpList = new ArrayList<String>(); - for (MachineContentObject op : EventBHelper - .getOperations(control.getVisualization())) { - tmpList.add(((MachineOperation) op).getLabel()); - } - return tmpList; - } - }); - } - return cellEditor; - } - } - - private static class RandomModeEditingSupport extends EditingSupport { - - private CellEditor cellEditor; - - public RandomModeEditingSupport(ColumnViewer viewer) { - super(viewer); - } - - @Override - protected void setValue(Object element, Object value) { - if (value != null) { - Integer maxnr = Integer.valueOf(value.toString()); - AnimationScriptStep obj = (AnimationScriptStep) element; - obj.setMaxrandom(maxnr); - } - } - - @Override - protected Object getValue(Object element) { - return ((AnimationScriptStep) element).getMaxrandom(); - } - - @Override - protected CellEditor getCellEditor(Object element) { - if (cellEditor == null) { - cellEditor = new IntegerCellEditor((Composite) getViewer() - .getControl()); - } - return cellEditor; - } - - @Override - protected boolean canEdit(Object element) { - return true; - } - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.scheduler.wizard; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.beans.BeansObservables; +import org.eclipse.core.databinding.observable.list.WritableList; +import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; +import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.ColumnViewer; +import org.eclipse.jface.viewers.EditingSupport; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.layout.RowLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; + +import de.bmotionstudio.gef.editor.BMotionStudioImage; +import de.bmotionstudio.gef.editor.EditorImageRegistry; +import de.bmotionstudio.gef.editor.edit.OperationValueEditingSupport; +import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.property.IntegerCellEditor; +import de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject; +import de.bmotionstudio.gef.editor.scheduler.AnimationScriptStep; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; + +public class SchedulerObjectDialog extends Dialog { + + private TableViewer tableViewer; + + private final BControl control; + + private AnimationScriptObject animationScriptObject; + + public SchedulerObjectDialog(Shell parentShell, BControl control, + AnimationScriptObject animationScriptObject) { + super(parentShell); + this.control = control; + this.animationScriptObject = animationScriptObject; + } + + @Override + protected Control createDialogArea(final Composite parent) { + + DataBindingContext dbc = new DataBindingContext(); + + Composite container = (Composite) super.createDialogArea(parent); + container.setLayout(new GridLayout(1, true)); + + tableViewer = BMotionWizardUtil + .createBMotionWizardTableViewer(container, + AnimationScriptStep.class, "Scheduler Object Dialog"); + + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Operation"); + column.getColumn().setWidth(175); + column.setEditingSupport(new OperationValueEditingSupport(tableViewer, + control) { + + @Override + protected Object getValue(Object element) { + return ((AnimationScriptStep) element).getCommand(); + } + + @Override + protected void setValue(Object element, Object value) { + if (value != null) + ((AnimationScriptStep) element).setCommand(value.toString()); + } + + }); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Predicate"); + column.getColumn().setWidth(300); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, dbc, + "parameter", control.getVisualization(), getShell())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Random Ops"); + column.getColumn().setWidth(100); + column.setEditingSupport(new RandomModeEditingSupport(tableViewer)); + + // column = new TableViewerColumn(tableViewer, SWT.NONE); + // column.getColumn().setText("Callback"); + // column.getColumn().setWidth(100); + // column + // .setEditingSupport(new ObserverCallbackEditingSupport( + // tableViewer)); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + tableViewer.setLabelProvider(new ObservableMapLabelProvider( + BeansObservables.observeMaps( + contentProvider.getKnownElements(), new String[] { + "command", "parameter", "maxrandom" })) { + + @Override + public String getColumnText(final Object element, + final int columnIndex) { + // if (columnIndex == 2) { + // return "Edit"; + // } + return super.getColumnText(element, columnIndex); + } + + @Override + public Image getColumnImage(final Object element, + final int columnIndex) { + return null; + } + + }); + + final WritableList input = new WritableList( + animationScriptObject.getSteps(), AnimationScriptStep.class); + + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; + } + AnimationScriptStep obj = (AnimationScriptStep) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(obj); + } + }); + + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_ADD)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(final SelectionEvent e) { + AnimationScriptStep obj = new AnimationScriptStep(); + input.add(obj); + } + }); + + return container; + + } + + @Override + protected Point getInitialSize() { + return new Point(600, 500); + } + + @Override + protected void okPressed() { + close(); + } + + @Override + protected void configureShell(final Shell newShell) { + super.configureShell(newShell); + newShell.setText("BMotion Studio - Scheduler Editor"); + } + + public void setAnimationScriptObject( + final AnimationScriptObject animationScriptObject) { + this.animationScriptObject = animationScriptObject; + } + + public AnimationScriptObject getAnimationScriptObject() { + return animationScriptObject; + } + + // private class ObserverCallbackEditingSupport extends EditingSupport { + // + // public ObserverCallbackEditingSupport(ColumnViewer viewer) { + // super(viewer); + // } + // + // @Override + // protected boolean canEdit(Object element) { + // return true; + // } + // + // @Override + // protected CellEditor getCellEditor(Object element) { + // return new ObserverCallbackCellEditor((Composite) getViewer() + // .getControl(), (AnimationScriptStep) element); + // } + // + // @Override + // protected Object getValue(Object element) { + // return "Edit"; + // } + // + // @Override + // protected void setValue(Object element, Object value) { + // } + // + // } + + // private class ObserverCallbackCellEditor extends DialogCellEditor { + // + // private final AnimationScriptStep step; + // + // public ObserverCallbackCellEditor(final Composite parent, + // final AnimationScriptStep step) { + // super(parent); + // this.step = step; + // } + // + // @Override + // protected Object openDialogBox(final Control cellEditorWindow) { + // ObserverCallBackDialog dialog = new ObserverCallBackDialog( + // PlatformUI.getWorkbench().getActiveWorkbenchWindow() + // .getShell(), step, control); + // if (dialog.open() == Dialog.OK) { + // return getValue(); + // } + // return null; + // } + // + // } + + private static class RandomModeEditingSupport extends EditingSupport { + + private CellEditor cellEditor; + + public RandomModeEditingSupport(ColumnViewer viewer) { + super(viewer); + } + + @Override + protected void setValue(Object element, Object value) { + if (value != null) { + Integer maxnr = Integer.valueOf(value.toString()); + AnimationScriptStep obj = (AnimationScriptStep) element; + obj.setMaxrandom(maxnr); + } + } + + @Override + protected Object getValue(Object element) { + return ((AnimationScriptStep) element).getMaxrandom(); + } + + @Override + protected CellEditor getCellEditor(Object element) { + if (cellEditor == null) { + cellEditor = new IntegerCellEditor((Composite) getViewer() + .getControl()); + } + return cellEditor; + } + + @Override + protected boolean canEdit(Object element) { + return true; + } + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardSchedulerExecuteOperationByPredicate.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java similarity index 95% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardSchedulerExecuteOperationByPredicate.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java index c1bc11d03e21e65717db4536a2dc3c0b29f9a846..b30b1e9da463f67e424610302dd529e9e330a08c 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardSchedulerExecuteOperationByPredicate.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicate.java @@ -1,323 +1,323 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.scheduler.wizard; - -import org.eclipse.core.databinding.DataBindingContext; -import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.core.databinding.observable.list.WritableList; -import org.eclipse.core.databinding.observable.map.IObservableMap; -import org.eclipse.core.databinding.observable.value.IObservableValue; -import org.eclipse.core.databinding.observable.value.IValueChangeListener; -import org.eclipse.core.databinding.observable.value.ValueChangeEvent; -import org.eclipse.jface.databinding.swt.SWTObservables; -import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; -import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.databinding.viewers.ViewersObservables; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ComboViewer; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.events.VerifyEvent; -import org.eclipse.swt.events.VerifyListener; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -import de.bmotionstudio.gef.editor.eventb.EventBHelper; -import de.bmotionstudio.gef.editor.eventb.MachineContentObject; -import de.bmotionstudio.gef.editor.eventb.MachineOperation; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate; -import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; -import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; - -public class WizardSchedulerExecuteOperationByPredicate extends SchedulerWizard { - - private class SchedulerExecuteOperationByPredicatePage extends WizardPage { - - private ComboViewer cbOperation; - - private Text txtPredicate; - - private Text txtMaxRandomOperations; - - private Label lbMaxRandomOperations; - - private Composite container; - - private Composite guardContainer; - - private Button checkboxRandomMode; - - public ComboViewer getCbOperation() { - return cbOperation; - } - - public Text getTxtMaxRandomOperations() { - return txtMaxRandomOperations; - } - - protected SchedulerExecuteOperationByPredicatePage(String pageName) { - super(pageName); - } - - public void createControl(final Composite parent) { - - final DataBindingContext dbc = new DataBindingContext(); - - container = new Composite(parent, SWT.NONE); - GridLayout gl = new GridLayout(2, false); - container.setLayout(gl); - - Label lb = new Label(container, SWT.NONE); - lb.setText("Select an operation: "); - - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.heightHint = 50; - - cbOperation = new ComboViewer(container, SWT.NONE); - cbOperation.getCombo().setLayoutData(new GridData(300, 50)); - - lb = new Label(container, SWT.NONE); - lb.setText("Predicate: "); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - txtPredicate = new Text(container, SWT.BORDER | SWT.WRAP - | SWT.V_SCROLL); - txtPredicate.setLayoutData(gd); - - lb = new Label(container, SWT.NONE); - lb.setText("Random mode: "); - lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - checkboxRandomMode = new Button(container, SWT.CHECK); - checkboxRandomMode.addSelectionListener(new SelectionListener() { - @Override - public void widgetSelected(SelectionEvent e) { - setRandomVisibility(checkboxRandomMode.getSelection()); - } - - @Override - public void widgetDefaultSelected(SelectionEvent e) { - } - }); - - lbMaxRandomOperations = new Label(container, SWT.NONE); - lbMaxRandomOperations.setText("Max Random Operations: "); - lbMaxRandomOperations.setLayoutData(new GridData( - GridData.VERTICAL_ALIGN_BEGINNING)); - txtMaxRandomOperations = new Text(container, SWT.BORDER); - txtMaxRandomOperations.setLayoutData(new GridData( - GridData.FILL_HORIZONTAL)); - txtMaxRandomOperations.addVerifyListener(new VerifyListener() { - @Override - public void verifyText(VerifyEvent e) { - String string = e.text; - char[] chars = new char[string.length()]; - string.getChars(0, chars.length, chars, 0); - for (int i = 0; i < chars.length; i++) { - if (!('0' <= chars[i] && chars[i] <= '9')) { - e.doit = false; - return; - } - } - } - }); - setRandomVisibility(((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation().isRandom()); - - initBindings(dbc); - - IStructuredSelection structuredSelection = (IStructuredSelection) cbOperation - .getSelection(); - - if (!structuredSelection.isEmpty()) { - createGuardContainer((MachineOperation) structuredSelection - .getFirstElement()); - } - - setControl(container); - - } - - private void setRandomVisibility(boolean b) { - if (lbMaxRandomOperations == null || txtMaxRandomOperations == null) - return; - lbMaxRandomOperations.setVisible(b); - txtMaxRandomOperations.setVisible(b); - } - - private void initBindings(DataBindingContext dbc) { - - // MachineContentList operationList = BMotionEditorPlugin - // .getActiveEditor().getVisualization().getOperationList(); - // operationList.getMap().remove("INITIALISATION"); - - ObservableListContentProvider cbOpContentProvider = new ObservableListContentProvider(); - cbOperation.setContentProvider(cbOpContentProvider); - IObservableMap[] attributeMaps = BeansObservables.observeMaps( - cbOpContentProvider.getKnownElements(), - MachineContentObject.class, new String[] { "label" }); - cbOperation.setLabelProvider(new ObservableMapLabelProvider( - attributeMaps)); - cbOperation.setInput(new WritableList(EventBHelper - .getOperations(getBControl().getVisualization()), - MachineOperation.class)); - cbOperation.getCombo().setFont( - new Font(Display.getDefault(), new FontData("Arial", 10, - SWT.NONE))); - - final IObservableValue observeSelection = ViewersObservables - .observeSingleSelection(cbOperation); - - dbc.bindValue(SWTObservables.observeSelection(cbOperation - .getCombo()), BeansObservables.observeValue( - ((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation(), "operationName"), null, - null); - - dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), - BeansObservables.observeValue( - ((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation(), "predicate")); - - observeSelection.addValueChangeListener(new IValueChangeListener() { - public void handleValueChange(ValueChangeEvent event) { - Object sel = event.getObservableValue().getValue(); - createGuardContainer((MachineOperation) sel); - } - }); - - dbc.bindValue(SWTObservables.observeSelection(checkboxRandomMode), - BeansObservables.observeValue( - ((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation(), "random")); - - dbc.bindValue(SWTObservables.observeText(txtMaxRandomOperations, - SWT.Modify), BeansObservables.observeValue( - ((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation(), "maxrandom")); - - } - - private void createGuardContainer(MachineOperation op) { - - if (guardContainer != null) - guardContainer.dispose(); - - final StringBuilder allGuardString = new StringBuilder(); - - if (op != null) { - - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalSpan = 2; - - GridLayout gl = new GridLayout(2, false); - - guardContainer = new Composite(container, SWT.NONE); - guardContainer.setLayoutData(gd); - guardContainer.setLayout(gl); - - for (String guard : op.getGuards()) { - - if (allGuardString.length() == 0) - allGuardString.append(guard); - else - allGuardString.append(" & " + guard); - - Label lb = new Label(guardContainer, SWT.NONE); - lb.setText("Guard: "); - lb.setLayoutData(new GridData(100, 15)); - - final Text txt = new Text(guardContainer, SWT.BORDER - | SWT.READ_ONLY); - txt.setText(guard); - txt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - // txt.setFont(JFaceResources.getFontRegistry().get( - // BMotionStudioConstants.RODIN_FONT_KEY)); - - } - - container.layout(); - - } - - } - - } - - public WizardSchedulerExecuteOperationByPredicate(BControl bcontrol, - SchedulerEvent scheduler) { - super(bcontrol, scheduler); - addPage(new SchedulerExecuteOperationByPredicatePage( - "SchedulerExecuteOperationByPredicatePage")); - } - - @Override - protected Boolean prepareToFinish() { - - SchedulerExecuteOperationByPredicatePage page = (SchedulerExecuteOperationByPredicatePage) getPage("SchedulerExecuteOperationByPredicatePage"); - - String errorStr = ""; - - if (((ExecuteOperationByPredicate) getScheduler()) - .getPredicateOperation().isRandom() - && !(Integer - .valueOf(page.getTxtMaxRandomOperations().getText()) > 0)) - errorStr += "Max Random Operations must be greater than 0.\n"; - - if (page.getCbOperation().getCombo().getSelectionIndex() == -1) - errorStr += "Please select an operation.\n"; - - if (errorStr.length() > 0) { - MessageDialog.openError(Display.getDefault().getActiveShell(), - "An Error occured", errorStr); - return false; - } - - // PredicateOperation predicateOperation = - // ((ExecuteOperationByPredicate) getScheduler()) - // .getPredicateOperation(); - // - // Observer observer = getBControl().getObserver( - // ListenOperationByPredicate.ID); - // ListenOperationByPredicate listenObserver; - // - // if (observer != null) { - // listenObserver = (ListenOperationByPredicate) observer; - // listenObserver - // .removePredicateOperationByUniqueID(predicateOperation - // .getUniqueID()); - // } else { - // listenObserver = new ListenOperationByPredicate(); - // getBControl().addObserver(listenObserver); - // } - // - // try { - // listenObserver.addPredicateOperation(predicateOperation.clone()); - // } catch (CloneNotSupportedException e) { - // e.printStackTrace(); - // } - - return true; - - } - - @Override - public Point getSize() { - return new Point(600, 600); - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.scheduler.wizard; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.beans.BeansObservables; +import org.eclipse.core.databinding.observable.list.WritableList; +import org.eclipse.core.databinding.observable.map.IObservableMap; +import org.eclipse.core.databinding.observable.value.IObservableValue; +import org.eclipse.core.databinding.observable.value.IValueChangeListener; +import org.eclipse.core.databinding.observable.value.ValueChangeEvent; +import org.eclipse.jface.databinding.swt.SWTObservables; +import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; +import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; +import org.eclipse.jface.databinding.viewers.ViewersObservables; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.events.VerifyEvent; +import org.eclipse.swt.events.VerifyListener; +import org.eclipse.swt.graphics.Font; +import org.eclipse.swt.graphics.FontData; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +import de.bmotionstudio.gef.editor.eventb.EventBHelper; +import de.bmotionstudio.gef.editor.eventb.MachineContentObject; +import de.bmotionstudio.gef.editor.eventb.MachineOperation; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicate; +import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; +import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; + +public class WizardExecuteOperationByPredicate extends SchedulerWizard { + + private class SchedulerExecuteOperationByPredicatePage extends WizardPage { + + private ComboViewer cbOperation; + + private Text txtPredicate; + + private Text txtMaxRandomOperations; + + private Label lbMaxRandomOperations; + + private Composite container; + + private Composite guardContainer; + + private Button checkboxRandomMode; + + public ComboViewer getCbOperation() { + return cbOperation; + } + + public Text getTxtMaxRandomOperations() { + return txtMaxRandomOperations; + } + + protected SchedulerExecuteOperationByPredicatePage(String pageName) { + super(pageName); + } + + public void createControl(final Composite parent) { + + final DataBindingContext dbc = new DataBindingContext(); + + container = new Composite(parent, SWT.NONE); + GridLayout gl = new GridLayout(2, false); + container.setLayout(gl); + + Label lb = new Label(container, SWT.NONE); + lb.setText("Select an operation: "); + + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.heightHint = 50; + + cbOperation = new ComboViewer(container, SWT.NONE); + cbOperation.getCombo().setLayoutData(new GridData(300, 50)); + + lb = new Label(container, SWT.NONE); + lb.setText("Predicate: "); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + txtPredicate = new Text(container, SWT.BORDER | SWT.WRAP + | SWT.V_SCROLL); + txtPredicate.setLayoutData(gd); + + lb = new Label(container, SWT.NONE); + lb.setText("Random mode: "); + lb.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); + checkboxRandomMode = new Button(container, SWT.CHECK); + checkboxRandomMode.addSelectionListener(new SelectionListener() { + @Override + public void widgetSelected(SelectionEvent e) { + setRandomVisibility(checkboxRandomMode.getSelection()); + } + + @Override + public void widgetDefaultSelected(SelectionEvent e) { + } + }); + + lbMaxRandomOperations = new Label(container, SWT.NONE); + lbMaxRandomOperations.setText("Max Random Operations: "); + lbMaxRandomOperations.setLayoutData(new GridData( + GridData.VERTICAL_ALIGN_BEGINNING)); + txtMaxRandomOperations = new Text(container, SWT.BORDER); + txtMaxRandomOperations.setLayoutData(new GridData( + GridData.FILL_HORIZONTAL)); + txtMaxRandomOperations.addVerifyListener(new VerifyListener() { + @Override + public void verifyText(VerifyEvent e) { + String string = e.text; + char[] chars = new char[string.length()]; + string.getChars(0, chars.length, chars, 0); + for (int i = 0; i < chars.length; i++) { + if (!('0' <= chars[i] && chars[i] <= '9')) { + e.doit = false; + return; + } + } + } + }); + setRandomVisibility(((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation().isRandom()); + + initBindings(dbc); + + IStructuredSelection structuredSelection = (IStructuredSelection) cbOperation + .getSelection(); + + if (!structuredSelection.isEmpty()) { + createGuardContainer((MachineOperation) structuredSelection + .getFirstElement()); + } + + setControl(container); + + } + + private void setRandomVisibility(boolean b) { + if (lbMaxRandomOperations == null || txtMaxRandomOperations == null) + return; + lbMaxRandomOperations.setVisible(b); + txtMaxRandomOperations.setVisible(b); + } + + private void initBindings(DataBindingContext dbc) { + + // MachineContentList operationList = BMotionEditorPlugin + // .getActiveEditor().getVisualization().getOperationList(); + // operationList.getMap().remove("INITIALISATION"); + + ObservableListContentProvider cbOpContentProvider = new ObservableListContentProvider(); + cbOperation.setContentProvider(cbOpContentProvider); + IObservableMap[] attributeMaps = BeansObservables.observeMaps( + cbOpContentProvider.getKnownElements(), + MachineContentObject.class, new String[] { "label" }); + cbOperation.setLabelProvider(new ObservableMapLabelProvider( + attributeMaps)); + cbOperation.setInput(new WritableList(EventBHelper + .getOperations(getBControl().getVisualization()), + MachineOperation.class)); + cbOperation.getCombo().setFont( + new Font(Display.getDefault(), new FontData("Arial", 10, + SWT.NONE))); + + final IObservableValue observeSelection = ViewersObservables + .observeSingleSelection(cbOperation); + + dbc.bindValue(SWTObservables.observeSelection(cbOperation + .getCombo()), BeansObservables.observeValue( + ((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation(), "operationName"), null, + null); + + dbc.bindValue(SWTObservables.observeText(txtPredicate, SWT.Modify), + BeansObservables.observeValue( + ((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation(), "predicate")); + + observeSelection.addValueChangeListener(new IValueChangeListener() { + public void handleValueChange(ValueChangeEvent event) { + Object sel = event.getObservableValue().getValue(); + createGuardContainer((MachineOperation) sel); + } + }); + + dbc.bindValue(SWTObservables.observeSelection(checkboxRandomMode), + BeansObservables.observeValue( + ((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation(), "random")); + + dbc.bindValue(SWTObservables.observeText(txtMaxRandomOperations, + SWT.Modify), BeansObservables.observeValue( + ((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation(), "maxrandom")); + + } + + private void createGuardContainer(MachineOperation op) { + + if (guardContainer != null) + guardContainer.dispose(); + + final StringBuilder allGuardString = new StringBuilder(); + + if (op != null) { + + GridData gd = new GridData(GridData.FILL_HORIZONTAL); + gd.horizontalSpan = 2; + + GridLayout gl = new GridLayout(2, false); + + guardContainer = new Composite(container, SWT.NONE); + guardContainer.setLayoutData(gd); + guardContainer.setLayout(gl); + + for (String guard : op.getGuards()) { + + if (allGuardString.length() == 0) + allGuardString.append(guard); + else + allGuardString.append(" & " + guard); + + Label lb = new Label(guardContainer, SWT.NONE); + lb.setText("Guard: "); + lb.setLayoutData(new GridData(100, 15)); + + final Text txt = new Text(guardContainer, SWT.BORDER + | SWT.READ_ONLY); + txt.setText(guard); + txt.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + // txt.setFont(JFaceResources.getFontRegistry().get( + // BMotionStudioConstants.RODIN_FONT_KEY)); + + } + + container.layout(); + + } + + } + + } + + public WizardExecuteOperationByPredicate(BControl bcontrol, + SchedulerEvent scheduler) { + super(bcontrol, scheduler); + addPage(new SchedulerExecuteOperationByPredicatePage( + "SchedulerExecuteOperationByPredicatePage")); + } + + @Override + protected Boolean prepareToFinish() { + + SchedulerExecuteOperationByPredicatePage page = (SchedulerExecuteOperationByPredicatePage) getPage("SchedulerExecuteOperationByPredicatePage"); + + String errorStr = ""; + + if (((ExecuteOperationByPredicate) getScheduler()) + .getPredicateOperation().isRandom() + && !(Integer + .valueOf(page.getTxtMaxRandomOperations().getText()) > 0)) + errorStr += "Max Random Operations must be greater than 0.\n"; + + if (page.getCbOperation().getCombo().getSelectionIndex() == -1) + errorStr += "Please select an operation.\n"; + + if (errorStr.length() > 0) { + MessageDialog.openError(Display.getDefault().getActiveShell(), + "An Error occured", errorStr); + return false; + } + + // PredicateOperation predicateOperation = + // ((ExecuteOperationByPredicate) getScheduler()) + // .getPredicateOperation(); + // + // Observer observer = getBControl().getObserver( + // ListenOperationByPredicate.ID); + // ListenOperationByPredicate listenObserver; + // + // if (observer != null) { + // listenObserver = (ListenOperationByPredicate) observer; + // listenObserver + // .removePredicateOperationByUniqueID(predicateOperation + // .getUniqueID()); + // } else { + // listenObserver = new ListenOperationByPredicate(); + // getBControl().addObserver(listenObserver); + // } + // + // try { + // listenObserver.addPredicateOperation(predicateOperation.clone()); + // } catch (CloneNotSupportedException e) { + // e.printStackTrace(); + // } + + return true; + + } + + @Override + public Point getSize() { + return new Point(600, 600); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java index d301e8ccb815cd2864f76f75cad690b1325d0cd5..ef33b42a06fed9594556b7b95ad8a97525dd9c09 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteOperationByPredicateMulti.java @@ -5,19 +5,14 @@ * */ package de.bmotionstudio.gef.editor.scheduler.wizard; -import java.util.ArrayList; -import java.util.List; - import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.core.databinding.observable.list.ComputedList; import org.eclipse.core.databinding.observable.list.WritableList; import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.ColumnViewer; -import org.eclipse.jface.viewers.ComboBoxViewerCellEditor; import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TableViewer; @@ -26,29 +21,26 @@ import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; import de.bmotionstudio.gef.editor.BMotionStudioImage; import de.bmotionstudio.gef.editor.BindingObject; import de.bmotionstudio.gef.editor.EditorImageRegistry; +import de.bmotionstudio.gef.editor.edit.OperationValueEditingSupport; import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; -import de.bmotionstudio.gef.editor.eventb.EventBHelper; -import de.bmotionstudio.gef.editor.eventb.MachineContentObject; -import de.bmotionstudio.gef.editor.eventb.MachineOperation; import de.bmotionstudio.gef.editor.model.BControl; import de.bmotionstudio.gef.editor.property.IntegerCellEditor; import de.bmotionstudio.gef.editor.scheduler.ExecuteOperationByPredicateMulti; import de.bmotionstudio.gef.editor.scheduler.PredicateOperation; import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; /** * @author Lukas Ladenberger @@ -73,16 +65,10 @@ public class WizardExecuteOperationByPredicateMulti extends SchedulerWizard { setControl(container); - tableViewer = new TableViewer(container, SWT.BORDER - | SWT.FULL_SELECTION); - tableViewer.getTable().setLinesVisible(true); - tableViewer.getTable().setHeaderVisible(true); - tableViewer.getTable().setLayoutData( - new GridData(GridData.FILL_BOTH)); - tableViewer.getTable().setFont( - new Font(Display.getDefault(), new FontData("Arial", 10, - SWT.NONE))); - + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, PredicateOperation.class, + ((BMotionAbstractWizard) getWizard()).getName()); + TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); column.getColumn().setText("Execute Rule"); @@ -94,8 +80,8 @@ public class WizardExecuteOperationByPredicateMulti extends SchedulerWizard { column = new TableViewerColumn(tableViewer, SWT.NONE); column.getColumn().setText("Operation"); column.getColumn().setWidth(150); - column.setEditingSupport(new OperationValueEditing(tableViewer, - getBControl())); + column.setEditingSupport(new OperationValueEditingSupport( + tableViewer, getBControl())); column = new TableViewerColumn(tableViewer, SWT.NONE); column.getColumn().setText("Parameter"); @@ -243,59 +229,6 @@ public class WizardExecuteOperationByPredicateMulti extends SchedulerWizard { } - private static class OperationValueEditing extends EditingSupport { - - private ComboBoxViewerCellEditor cellEditor = null; - - private final BControl control; - - public OperationValueEditing(final TableViewer cv, - final BControl control) { - super(cv); - this.control = control; - } - - @Override - protected boolean canEdit(final Object element) { - return true; - } - - @Override - protected Object getValue(final Object element) { - return ((PredicateOperation) element).getOperationName(); - } - - @Override - protected void setValue(final Object element, final Object value) { - if (value != null) { - ((PredicateOperation) element).setOperationName(value - .toString()); - } - } - - @Override - protected CellEditor getCellEditor(final Object element) { - if (cellEditor == null) { - cellEditor = new ComboBoxViewerCellEditor( - (Composite) getViewer().getControl(), SWT.READ_ONLY); - cellEditor - .setContentProvider(new ObservableListContentProvider()); - cellEditor.setInput(new ComputedList() { - @Override - protected List<String> calculate() { - ArrayList<String> tmpList = new ArrayList<String>(); - for (MachineContentObject op : EventBHelper - .getOperations(control.getVisualization())) { - tmpList.add(((MachineOperation) op).getLabel()); - } - return tmpList; - } - }); - } - return cellEditor; - } - } - // private class ObserverLabelProvider extends ObservableMapLabelProvider // implements ITableLabelProvider, ITableColorProvider, // ITableFontProvider { diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteAnimationScript.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java similarity index 90% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteAnimationScript.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java index 92a44580afcb5fd04e30a748da6e615098b084c7..87d3d3f1dee27138e2b14e6ee586fb386e5576a7 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteAnimationScript.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/scheduler/wizard/WizardExecuteScheduler.java @@ -1,226 +1,219 @@ -/** - * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, - * Heinrich Heine Universitaet Duesseldorf - * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) - * */ - -package de.bmotionstudio.gef.editor.scheduler.wizard; - -import org.eclipse.core.databinding.DataBindingContext; -import org.eclipse.core.databinding.beans.BeansObservables; -import org.eclipse.core.databinding.observable.list.WritableList; -import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; -import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.viewers.CellEditor; -import org.eclipse.jface.viewers.ColumnViewer; -import org.eclipse.jface.viewers.DialogCellEditor; -import org.eclipse.jface.viewers.EditingSupport; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontData; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.PlatformUI; - -import de.bmotionstudio.gef.editor.BMotionStudioImage; -import de.bmotionstudio.gef.editor.EditorImageRegistry; -import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; -import de.bmotionstudio.gef.editor.model.BControl; -import de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject; -import de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript; -import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; -import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; - -public class WizardExecuteAnimationScript extends SchedulerWizard { - - private class SchedulerPage extends WizardPage { - - private TableViewer tableViewer; - - protected SchedulerPage(String pageName) { - super(pageName); - } - - public void createControl(final Composite parent) { - - DataBindingContext dbc = new DataBindingContext(); - - Composite container = new Composite(parent, SWT.NONE); - container.setLayout(new GridLayout(1, true)); - - setControl(container); - - tableViewer = new TableViewer(container, SWT.BORDER - | SWT.FULL_SELECTION); - tableViewer.getTable().setLinesVisible(true); - tableViewer.getTable().setHeaderVisible(true); - tableViewer.getTable().setLayoutData( - new GridData(GridData.FILL_BOTH)); - tableViewer.getTable().setFont( - new Font(Display.getDefault(), new FontData("Arial", 10, - SWT.NONE))); - - TableViewerColumn column = new TableViewerColumn(tableViewer, - SWT.NONE); - column.getColumn().setText("Predicate"); - column.getColumn().setWidth(225); - column.setEditingSupport(new PredicateEditingSupport(tableViewer, - dbc, "predicate", getBControl().getVisualization(), - getShell())); - - column = new TableViewerColumn(tableViewer, SWT.NONE); - column.getColumn().setText("Edit"); - column.getColumn().setWidth(225); - column.setEditingSupport(new AnimationScriptEditingSupport( - tableViewer)); - - ObservableListContentProvider contentProvider = new ObservableListContentProvider(); - tableViewer.setContentProvider(contentProvider); - - tableViewer.setLabelProvider(new ObservableMapLabelProvider( - BeansObservables.observeMaps( - contentProvider.getKnownElements(), - new String[] { "predicate" })) { - - @Override - public String getColumnText(Object element, int columnIndex) { - if (columnIndex == 1) { - return "Edit Scheduler"; - } - return super.getColumnText(element, columnIndex); - } - - @Override - public Image getColumnImage(Object element, int columnIndex) { - return null; - } - - }); - - final WritableList input = new WritableList( - ((ExecuteAnimationScript) getScheduler()).getList(), - AnimationScriptObject.class); - tableViewer.setInput(input); - - Composite comp = new Composite(container, SWT.NONE); - comp.setLayout(new RowLayout()); - comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); - - Button btRemove = new Button(comp, SWT.PUSH); - btRemove.setText("Remove"); - btRemove.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_DELETE)); - btRemove.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - if (tableViewer.getSelection().isEmpty()) { - return; - } - AnimationScriptObject obj = (AnimationScriptObject) ((IStructuredSelection) tableViewer - .getSelection()).getFirstElement(); - input.remove(obj); - } - }); - - Button btAdd = new Button(comp, SWT.PUSH); - btAdd.setText("Add"); - btAdd.setImage(BMotionStudioImage - .getImage(EditorImageRegistry.IMG_ICON_ADD)); - btAdd.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - AnimationScriptObject obj = new AnimationScriptObject(""); - input.add(obj); - } - }); - - } - } - - public WizardExecuteAnimationScript(BControl bcontrol, - SchedulerEvent scheduler) { - super(bcontrol, scheduler); - addPage(new SchedulerPage("SchedulerPage")); - } - - @Override - protected Boolean prepareToFinish() { - return true; - } - - @Override - public boolean performCancel() { - return true; - } - - @Override - public Point getSize() { - return new Point(600, 500); - } - - private class AnimationScriptEditingSupport extends EditingSupport { - - public AnimationScriptEditingSupport(ColumnViewer viewer) { - super(viewer); - } - - @Override - protected boolean canEdit(Object element) { - return true; - } - - @Override - protected CellEditor getCellEditor(Object element) { - return new AnimationScriptDialogCellEditor((Composite) getViewer() - .getControl(), (AnimationScriptObject) element); - } - - @Override - protected Object getValue(Object element) { - return "Edit Scheduler"; - } - - @Override - protected void setValue(Object element, Object value) { - } - - } - - private class AnimationScriptDialogCellEditor extends DialogCellEditor { - - private AnimationScriptObject animObj; - - public AnimationScriptDialogCellEditor(Composite parent, - AnimationScriptObject animObj) { - super(parent); - this.animObj = animObj; - } - - @Override - protected Object openDialogBox(Control cellEditorWindow) { - AnimationScriptObjectDialog dialog = new AnimationScriptObjectDialog( - PlatformUI.getWorkbench().getActiveWorkbenchWindow() - .getShell(), getBControl(), animObj); - if (dialog.open() == Dialog.OK) { - return getValue(); - } - return null; - } - - } - -} +/** + * (c) 2009 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, + * Heinrich Heine Universitaet Duesseldorf + * This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) + * */ + +package de.bmotionstudio.gef.editor.scheduler.wizard; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.beans.BeansObservables; +import org.eclipse.core.databinding.observable.list.WritableList; +import org.eclipse.jface.databinding.viewers.ObservableListContentProvider; +import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.ColumnViewer; +import org.eclipse.jface.viewers.DialogCellEditor; +import org.eclipse.jface.viewers.EditingSupport; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.layout.RowLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.PlatformUI; + +import de.bmotionstudio.gef.editor.BMotionAbstractWizard; +import de.bmotionstudio.gef.editor.BMotionStudioImage; +import de.bmotionstudio.gef.editor.EditorImageRegistry; +import de.bmotionstudio.gef.editor.edit.PredicateEditingSupport; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.scheduler.AnimationScriptObject; +import de.bmotionstudio.gef.editor.scheduler.ExecuteAnimationScript; +import de.bmotionstudio.gef.editor.scheduler.SchedulerEvent; +import de.bmotionstudio.gef.editor.scheduler.SchedulerWizard; +import de.bmotionstudio.gef.editor.util.BMotionWizardUtil; + +public class WizardExecuteScheduler extends SchedulerWizard { + + private class SchedulerPage extends WizardPage { + + private TableViewer tableViewer; + + protected SchedulerPage(String pageName) { + super(pageName); + } + + public void createControl(final Composite parent) { + + DataBindingContext dbc = new DataBindingContext(); + + Composite container = new Composite(parent, SWT.NONE); + container.setLayout(new GridLayout(1, true)); + + setControl(container); + + tableViewer = BMotionWizardUtil.createBMotionWizardTableViewer( + container, AnimationScriptObject.class, + ((BMotionAbstractWizard) getWizard()).getName()); + + TableViewerColumn column = new TableViewerColumn(tableViewer, + SWT.NONE); + column.getColumn().setText("Predicate"); + column.getColumn().setWidth(225); + column.setEditingSupport(new PredicateEditingSupport(tableViewer, + dbc, "predicate", getBControl().getVisualization(), + getShell())); + + column = new TableViewerColumn(tableViewer, SWT.NONE); + column.getColumn().setText("Edit"); + column.getColumn().setWidth(225); + column.setEditingSupport(new AnimationScriptEditingSupport( + tableViewer)); + + ObservableListContentProvider contentProvider = new ObservableListContentProvider(); + tableViewer.setContentProvider(contentProvider); + + tableViewer.setLabelProvider(new ObservableMapLabelProvider( + BeansObservables.observeMaps( + contentProvider.getKnownElements(), + new String[] { "predicate" })) { + + @Override + public String getColumnText(Object element, int columnIndex) { + if (columnIndex == 1) { + return "Edit Scheduler"; + } + return super.getColumnText(element, columnIndex); + } + + @Override + public Image getColumnImage(Object element, int columnIndex) { + return null; + } + + }); + + final WritableList input = new WritableList( + ((ExecuteAnimationScript) getScheduler()).getList(), + AnimationScriptObject.class); + tableViewer.setInput(input); + + Composite comp = new Composite(container, SWT.NONE); + comp.setLayout(new RowLayout()); + comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); + + Button btRemove = new Button(comp, SWT.PUSH); + btRemove.setText("Remove"); + btRemove.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_DELETE)); + btRemove.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + if (tableViewer.getSelection().isEmpty()) { + return; + } + AnimationScriptObject obj = (AnimationScriptObject) ((IStructuredSelection) tableViewer + .getSelection()).getFirstElement(); + input.remove(obj); + } + }); + + Button btAdd = new Button(comp, SWT.PUSH); + btAdd.setText("Add"); + btAdd.setImage(BMotionStudioImage + .getImage(EditorImageRegistry.IMG_ICON_ADD)); + btAdd.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + AnimationScriptObject obj = new AnimationScriptObject(""); + input.add(obj); + } + }); + + } + } + + public WizardExecuteScheduler(BControl bcontrol, + SchedulerEvent scheduler) { + super(bcontrol, scheduler); + addPage(new SchedulerPage("SchedulerPage")); + } + + @Override + protected Boolean prepareToFinish() { + return true; + } + + @Override + public boolean performCancel() { + return true; + } + + @Override + public Point getSize() { + return new Point(600, 500); + } + + private class AnimationScriptEditingSupport extends EditingSupport { + + public AnimationScriptEditingSupport(ColumnViewer viewer) { + super(viewer); + } + + @Override + protected boolean canEdit(Object element) { + return true; + } + + @Override + protected CellEditor getCellEditor(Object element) { + return new AnimationScriptDialogCellEditor((Composite) getViewer() + .getControl(), (AnimationScriptObject) element); + } + + @Override + protected Object getValue(Object element) { + return "Edit Scheduler"; + } + + @Override + protected void setValue(Object element, Object value) { + } + + } + + private class AnimationScriptDialogCellEditor extends DialogCellEditor { + + private AnimationScriptObject animObj; + + public AnimationScriptDialogCellEditor(Composite parent, + AnimationScriptObject animObj) { + super(parent); + this.animObj = animObj; + } + + @Override + protected Object openDialogBox(Control cellEditorWindow) { + SchedulerObjectDialog dialog = new SchedulerObjectDialog( + PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .getShell(), getBControl(), animObj); + if (dialog.open() == Dialog.OK) { + return getValue(); + } + return null; + } + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BConnectionService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BConnectionService.java index f7637a477ae0ca73637f32d42bd9bdefbdc066c5..6d88ddebb508cdb3ccbcf52694e68b9c3ace855d 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BConnectionService.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BConnectionService.java @@ -33,7 +33,7 @@ public class BConnectionService extends AbstractBControlService implements String sourcePluginID = configurationElement.getContributor().getName(); String name = configurationElement.getAttribute("name"); String icon = configurationElement.getAttribute("icon"); - return new ConnectionCreationToolEntry(name, "Create Control " + name, + return new ConnectionCreationToolEntry(name, "Create " + name, new BControlCreationFactory(BConnection.TYPE, visualization), AbstractUIPlugin .imageDescriptorFromPlugin(sourcePluginID, icon), diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BEllipseService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BEllipseService.java new file mode 100644 index 0000000000000000000000000000000000000000..40de317b91f70560053cf0bc8bb4a292974d6bb8 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BEllipseService.java @@ -0,0 +1,33 @@ +package de.bmotionstudio.gef.editor.service; + +import de.bmotionstudio.gef.editor.AbstractBControlService; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.IBControlService; +import de.bmotionstudio.gef.editor.attribute.BAttributeShape; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BShape; +import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.BShapePart; + +public class BEllipseService extends AbstractBControlService implements + IBControlService { + + public BEllipseService() { + // TODO Auto-generated constructor stub + } + + @Override + public BControl createControl(Visualization visualization) { + BShape ellipse = new BShape(visualization); + ellipse.setAttributeValue(AttributeConstants.ATTRIBUTE_SHAPE, + BAttributeShape.SHAPE_OVAL); + return ellipse; + } + + @Override + public AppAbstractEditPart createEditPart() { + return new BShapePart(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BShapeService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRectangleService.java similarity index 90% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BShapeService.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRectangleService.java index c8951fbd8a55a24b89d34014ec331e7206fc44eb..4f74a1bab73bda064da23af7bf5914915a4347f0 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BShapeService.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BRectangleService.java @@ -18,7 +18,7 @@ import de.bmotionstudio.gef.editor.part.BShapePart; * @author Lukas Ladenberger * */ -public class BShapeService extends AbstractBControlService implements +public class BRectangleService extends AbstractBControlService implements IBControlService { /* diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java new file mode 100644 index 0000000000000000000000000000000000000000..36bd5c52047bc58d165b7e74a0290abb8fac9b9a --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableCellService.java @@ -0,0 +1,29 @@ +package de.bmotionstudio.gef.editor.service; + +import de.bmotionstudio.gef.editor.AbstractBControlService; +import de.bmotionstudio.gef.editor.IBControlService; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BTableCell; +import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.BTableCellPart; + +public class BTableCellService extends AbstractBControlService implements + IBControlService { + + @Override + public BControl createControl(Visualization visualization) { + return new BTableCell(visualization); + } + + @Override + public AppAbstractEditPart createEditPart() { + return new BTableCellPart(); + } + + @Override + public boolean showInPalette() { + return false; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java new file mode 100644 index 0000000000000000000000000000000000000000..ea26c6326c5b225dd9ee8293d681bef037cba479 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableColumnService.java @@ -0,0 +1,29 @@ +package de.bmotionstudio.gef.editor.service; + +import de.bmotionstudio.gef.editor.AbstractBControlService; +import de.bmotionstudio.gef.editor.IBControlService; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BTableColumn; +import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.BTableColumnPart; + +public class BTableColumnService extends AbstractBControlService implements + IBControlService { + + @Override + public BControl createControl(Visualization visualization) { + return new BTableColumn(visualization); + } + + @Override + public AppAbstractEditPart createEditPart() { + return new BTableColumnPart(); + } + + @Override + public boolean showInPalette() { + return false; + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableService.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableService.java new file mode 100644 index 0000000000000000000000000000000000000000..da6182eb66ce3f9ab851be83e7a5da67531a01bd --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/service/BTableService.java @@ -0,0 +1,24 @@ +package de.bmotionstudio.gef.editor.service; + +import de.bmotionstudio.gef.editor.AbstractBControlService; +import de.bmotionstudio.gef.editor.IBControlService; +import de.bmotionstudio.gef.editor.model.BControl; +import de.bmotionstudio.gef.editor.model.BTable; +import de.bmotionstudio.gef.editor.model.Visualization; +import de.bmotionstudio.gef.editor.part.AppAbstractEditPart; +import de.bmotionstudio.gef.editor.part.BTablePart; + +public class BTableService extends AbstractBControlService implements + IBControlService { + + @Override + public BControl createControl(Visualization visualization) { + return new BTable(visualization); + } + + @Override + public AppAbstractEditPart createEditPart() { + return new BTablePart(); + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMSUtil.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMSUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..ed487db0020ca2b9fa7657c1866e35b2a0159489 --- /dev/null +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMSUtil.java @@ -0,0 +1,223 @@ +package de.bmotionstudio.gef.editor.util; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import de.be4.classicalb.core.parser.exceptions.BException; +import de.bmotionstudio.gef.editor.Animation; +import de.bmotionstudio.gef.editor.AttributeConstants; +import de.bmotionstudio.gef.editor.model.BControl; +import de.prob.core.command.EvaluationGetValuesCommand; +import de.prob.core.command.GetOperationByPredicateCommand; +import de.prob.core.domainobjects.EvaluationElement; +import de.prob.core.domainobjects.EvaluationStateElement; +import de.prob.core.domainobjects.Operation; +import de.prob.core.domainobjects.State; +import de.prob.exceptions.ProBException; +import de.prob.parserbase.ProBParseException; + +public class BMSUtil { + + private static final Pattern PATTERN = Pattern.compile("\\$(.+?)\\$"); + + // private static Boolean hasError = false; + private static final String DEFAULT_PREDICATE = "1=1"; + private static final String DEFAULT_BOOLVAL = "true"; + + public static String parseExpression(String expressionString, + BControl control, Animation animation) { + return parseExpression(expressionString, control, animation, false, + true); + } + + public static String parseExpression(final String expressionString, + final BControl control, final Animation animation, + boolean parseControls) { + return parseExpression(expressionString, control, animation, false, + parseControls); + } + + public static String parsePredicate(String expressionString, + BControl control, Animation animation) { + return parsePredicate(expressionString, control, animation, true); + } + + public static String parsePredicate(String expressionString, + BControl control, Animation animation, boolean parseControls) { + if (expressionString == null || expressionString.trim().length() == 0) + return DEFAULT_BOOLVAL; + return parseExpression(expressionString, control, animation, true, + parseControls); + } + + private static String parseExpression(String expressionString, + BControl control, Animation animation, boolean isPredicate, + boolean parseControls) { + + boolean hasError = false; + + boolean hasSubExpressions = false; + + Map<EvaluationElement, String> evaluationKeys = new HashMap<EvaluationElement, String>(); + + // Find expressions and collect ExpressionEvalElements + final Matcher matcher = PATTERN.matcher(expressionString); + while (matcher.find()) { + final String subExpr = matcher.group(1); + collectEvalElements(subExpr, "$" + subExpr + "$", isPredicate, + animation, control, evaluationKeys, parseControls); + hasSubExpressions = true; + } + + // We have only one expression (without "$$") + if (!hasSubExpressions) { + collectEvalElements(expressionString, expressionString, + isPredicate, animation, control, evaluationKeys, + parseControls); + } + + // Try to get expression results and parse expression string + Collection<EvaluationStateElement> resultList; + try { + resultList = getExpressionValues(control, animation, + new ArrayList<EvaluationElement>(evaluationKeys.keySet())); + } catch (ProBException e) { + resultList = Collections.emptyList(); + hasError = true; + } + + // If getting ExpressionEvalElement throws no error, try to get + // expression results + String result = expressionString; + if (!hasError) { + for (EvaluationStateElement stateElement : resultList) { + final EvaluationElement evalElement = stateElement.getElement(); + final String text; + if (isPredicate) { + text = stateElement.getResult().isPredicateTrue() ? "true" + : "false"; + } else { + text = stateElement.getText(); + } + final String subExpression = evaluationKeys.get(evalElement); + result = result.replace(subExpression, text); + } + } else { + // if (obj != null) + // obj.setHasError(true); + // addError(control, animation, + // "An error occurred while evaluating expression\\predicate value: \"" + // + expressionString + // + "\". Please check your expression\\predicate."); + } + + return result; + + } + + private static boolean collectEvalElements(final String subexpression, + final String key, final boolean isPredicate, + final Animation animation, final BControl control, + final Map<EvaluationElement, String> evaluationKeys, + final boolean parseControls) { + + String parsedSubexpr = subexpression; + + if(parseControls) + parsedSubexpr = parseControls(parsedSubexpr, control); + EvaluationElement evalElement; + try { + evalElement = animation.getCachedEvalElement(parsedSubexpr, + isPredicate); + evaluationKeys.put(evalElement, key); + return true; + } catch (UnsupportedOperationException e) { + return false; + } catch (ProBException e) { + return false; + } catch (ProBParseException e) { + // addError(control, animation, e.getMessage()); + return false; + } + + } + + public static String parseControls(String expressionString, + BControl control) { + + List<String> allControlIDs = control.getVisualization() + .getAllBControlNames(); + + // Search for control ids + Pattern cPattern = Pattern.compile("(\\w+)"); + Matcher cMatcher = cPattern.matcher(expressionString); + + while (cMatcher.find()) { + + String controlID = cMatcher.group(1); + + if (controlID.equals("this")) { + + expressionString = expressionString.replace(controlID, control + .getAttributeValue(AttributeConstants.ATTRIBUTE_CUSTOM) + .toString()); + + } else if (allControlIDs.contains(controlID)) { + + expressionString = expressionString.replace(controlID, control + .getVisualization().getBControl(controlID) + .getValueOfData()); + + } else { + // TODO: Return error if no control exists + } + } + + return expressionString; + + } + + private static Collection<EvaluationStateElement> getExpressionValues( + final BControl control, final Animation animation, + final Collection<EvaluationElement> evalElements) + throws ProBException { + final State state = animation.getAnimator().getCurrentState(); + // TODO[DP, 11.04.2011] Add an animator to the parameters! + final Collection<EvaluationStateElement> values = EvaluationGetValuesCommand + .getValuesForExpressionsCached(state, evalElements); + return values; + } + + public static List<Operation> parseOperation(final String opName, + String opPredicate, int opRandom, final Animation animation, + final String currentState, final BControl control) { + + try { + + if (opPredicate != null && opPredicate.length() > 0) + opPredicate = parseControls(opPredicate, control); + else + opPredicate = DEFAULT_PREDICATE; + + if (opRandom < 1) + opRandom = 1; + + return GetOperationByPredicateCommand.getOperations( + animation.getAnimator(), currentState, opName, opPredicate, + opRandom); + + } catch (ProBException e) { + } catch (BException e) { + } + + return null; + + } + +} diff --git a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/WizardObserverUtil.java b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java similarity index 79% rename from de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/WizardObserverUtil.java rename to de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java index 7c6f5c0f6f763e37b322cd1df6fbda0375ce10c7..b2c4fa4123b2b707b4fe0898e2a2909ecbb8c488 100644 --- a/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/WizardObserverUtil.java +++ b/de.bmotionstudio.gef.editor/src/de/bmotionstudio/gef/editor/util/BMotionWizardUtil.java @@ -18,14 +18,13 @@ import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.TableItem; import de.bmotionstudio.gef.editor.BMotionStudioSWTConstants; +import de.bmotionstudio.gef.editor.action.BMotionWizardAddItemAction; +import de.bmotionstudio.gef.editor.action.BMotionWizardDeleteItemsAction; import de.bmotionstudio.gef.editor.library.AttributeTransfer; -import de.bmotionstudio.gef.editor.observer.ObserverWizard; -import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverAddItemAction; -import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverDeleteItemsAction; import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverDragListener; import de.bmotionstudio.gef.editor.observer.wizard.WizardObserverDropListener; -public class WizardObserverUtil { +public class BMotionWizardUtil { public static boolean isEditElement(ColumnViewer viewer) { Object data = viewer.getData("editElement"); @@ -34,8 +33,8 @@ public class WizardObserverUtil { return false; } - public static TableViewer createObserverWizardTableViewer(Composite parent, - Class<?> itemClass, final ObserverWizard observerWizard) { + public static TableViewer createBMotionWizardTableViewer(Composite parent, + Class<?> itemClass, final String wizardName) { final TableViewer tableViewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI); @@ -47,17 +46,17 @@ public class WizardObserverUtil { int operations = DND.DROP_COPY | DND.DROP_MOVE; Transfer[] transferTypes = new Transfer[] { AttributeTransfer .getInstance() }; + tableViewer.addDropSupport(operations, transferTypes, - new WizardObserverDropListener(tableViewer, observerWizard - .getObserver().getName())); + new WizardObserverDropListener(tableViewer, wizardName)); tableViewer.addDragSupport(operations, transferTypes, new WizardObserverDragListener(tableViewer)); MenuManager manager = new MenuManager(); tableViewer.getControl().setMenu( manager.createContextMenu(tableViewer.getControl())); - manager.add(new WizardObserverDeleteItemsAction(tableViewer)); - manager.add(new WizardObserverAddItemAction(tableViewer, itemClass)); + manager.add(new BMotionWizardDeleteItemsAction(tableViewer)); + manager.add(new BMotionWizardAddItemAction(tableViewer, itemClass)); tableViewer.getTable().addListener(SWT.MouseDown, new Listener() { public void handleEvent(Event event) { diff --git a/de.bmotionstudio.rodin/META-INF/MANIFEST.MF b/de.bmotionstudio.rodin/META-INF/MANIFEST.MF index 5023b0e20355af8d8b1475c7952a2b62e8ec9c64..3347d0705525e9327f7402141c5aed8d346f69db 100644 --- a/de.bmotionstudio.rodin/META-INF/MANIFEST.MF +++ b/de.bmotionstudio.rodin/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: BMotion Studio Rodin Integration Bundle-SymbolicName: de.bmotionstudio.rodin;singleton:=true -Bundle-Version: 1.0.2.qualifier +Bundle-Version: 1.0.3.qualifier Fragment-Host: de.bmotionstudio.gef.editor;bundle-version="5.2.1" Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-Vendor: HHU Düsseldorf STUPS Group diff --git a/de.prob.core/.classpath b/de.prob.core/.classpath index c319dca4761fa663a8cd1b73208bd68d56a6844c..9b292107a7a905968274c717bb253ca02e3913f2 100644 --- a/de.prob.core/.classpath +++ b/de.prob.core/.classpath @@ -1,11 +1,19 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry exported="true" kind="lib" path="lib/commons-lang-2.4.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/answerparser-2.4.8-SNAPSHOT.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/bparser-2.4.8-SNAPSHOT.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/cliparser-2.4.8-SNAPSHOT.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/commons-lang-2.6.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/jgrapht-0.8.3.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/jsr305-1.3.9.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/ltlparser-2.4.8-SNAPSHOT.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/parserbase-2.4.8-SNAPSHOT.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/prologlib-2.4.8-SNAPSHOT.jar"/> + <classpathentry exported="true" kind="lib" path="lib/dependencies/unicode-2.4.8-SNAPSHOT.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="test"/> - <classpathentry exported="true" kind="lib" path="lib/probcliparser.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/de.prob.core/META-INF/MANIFEST.MF b/de.prob.core/META-INF/MANIFEST.MF index b3468cc2d4fa7c226dc447950aa83b81fe933d45..6a32a3132ab653879abc7ac6275c5fed636406a5 100644 --- a/de.prob.core/META-INF/MANIFEST.MF +++ b/de.prob.core/META-INF/MANIFEST.MF @@ -2,66 +2,104 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: ProB Animator Core Bundle-SymbolicName: de.prob.core;singleton:=true -Bundle-Version: 9.2.1.qualifier +Bundle-Version: 9.2.2.qualifier Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)", - org.rodinp.core;bundle-version="[1.3.1,1.6.0)", - org.eventb.core;bundle-version="[2.1.0,2.6.0)" + org.rodinp.core;bundle-version="[1.3.1,1.7.0)", + org.eventb.core;bundle-version="[2.1.0,2.6.0)", + org.eventb.emf.core;bundle-version="2.2.4", + org.eventb.emf.persistence;bundle-version="2.4.0" Bundle-ActivationPolicy: lazy Eclipse-BundleShape: dir Bundle-Vendor: HHU Düsseldorf STUPS Group Export-Package: de.be4.classicalb.core.parser, - de.be4.classicalb.core.parser.analysis;x-friends:="de.prob.eventb.disprover.core", - de.be4.classicalb.core.parser.analysis.prolog;x-friends:="de.prob.eventb.disprover.core", + de.be4.classicalb.core.parser.analysis, + de.be4.classicalb.core.parser.analysis.checking, + de.be4.classicalb.core.parser.analysis.pragma, + de.be4.classicalb.core.parser.analysis.pragma.internal, + de.be4.classicalb.core.parser.analysis.prolog, + de.be4.classicalb.core.parser.analysis.transforming, de.be4.classicalb.core.parser.exceptions, - de.be4.classicalb.core.parser.node;x-friends:="de.prob.eventb.disprover.core", + de.be4.classicalb.core.parser.lexer, + de.be4.classicalb.core.parser.node, + de.be4.classicalb.core.parser.parser, + de.be4.classicalb.core.pragma.analysis, + de.be4.classicalb.core.pragma.lexer, + de.be4.classicalb.core.pragma.node, + de.be4.classicalb.core.preparser.analysis, + de.be4.classicalb.core.preparser.lexer, + de.be4.classicalb.core.preparser.node, + de.be4.classicalb.core.preparser.parser, + de.be4.ltl.core.ctlparser.analysis, + de.be4.ltl.core.ctlparser.lexer, + de.be4.ltl.core.ctlparser.node, + de.be4.ltl.core.ctlparser.parser, de.be4.ltl.core.parser, - de.prob.core; - uses:="de.prob.core.domainobjects.eval, - de.prob.parserbase, - org.osgi.service.prefs, - de.prob.core.domainobjects, - de.prob.core.command, - de.prob.exceptions", - de.prob.core.command; - uses:="de.prob.core.domainobjects.eval, - de.prob.core, - org.osgi.service.prefs, - de.prob.core.domainobjects, - de.prob.exceptions, - de.prob.prolog.term, - de.prob.prolog.output", - de.prob.core.domainobjects;uses:="de.prob.core,de.prob.core.command,de.prob.prolog.term", - de.prob.core.domainobjects.eval;uses:="de.prob.core,de.be4.classicalb.core.parser.node,org.eventb.core.ast", + de.be4.ltl.core.parser.analysis, + de.be4.ltl.core.parser.internal, + de.be4.ltl.core.parser.lexer, + de.be4.ltl.core.parser.node, + de.be4.ltl.core.parser.parser, + de.hhu.stups.sablecc.patch, + de.prob.cli, + de.prob.cli.clipatterns, + de.prob.cliparser, + de.prob.core, + de.prob.core.command, + de.prob.core.command.internal, + de.prob.core.domainobjects, + de.prob.core.domainobjects.eval, de.prob.core.domainobjects.ltl, - de.prob.core.prolog;uses:="de.prob.core.types,de.prob.prolog.term", - de.prob.core.translator;uses:="de.prob.exceptions", + de.prob.core.domainobjects.ltl.unittests, + de.prob.core.internal, + de.prob.core.langdep, + de.prob.core.prolog, + de.prob.core.sablecc.analysis, + de.prob.core.sablecc.lexer, + de.prob.core.sablecc.node, + de.prob.core.sablecc.parser, + de.prob.core.translator, de.prob.core.types, - de.prob.eventb.translator; - uses:="de.be4.classicalb.core.parser.node, - de.prob.eventb.translator.internal, - org.eventb.core.ast, - org.eventb.core, - de.prob.prolog.output", + de.prob.eventb.translator, + de.prob.eventb.translator.flow, + de.prob.eventb.translator.internal, + de.prob.eventb.translator2, de.prob.exceptions, - de.prob.logging;uses:="org.eclipse.core.runtime", + de.prob.logging, de.prob.parser, - de.prob.parserbase;x-friends:="de.prob.ui", - de.prob.prolog.output;x-friends:="de.prob.eventb.disprover.core,de.prob.ui,de.prob.dmc.modelcheck", - de.prob.prolog.term;x-friends:="de.prob.ui,de.prob.dmc.modelcheck", + de.prob.parserbase, + de.prob.prolog.match, + de.prob.prolog.output, + de.prob.prolog.term, de.prob.sap.commands, de.prob.sap.exceptions, + de.prob.sap.util, + de.prob.unicode, + de.prob.unicode.analysis, + de.prob.unicode.lexer, + de.prob.unicode.node, + javax.annotation, + javax.annotation.concurrent, + javax.annotation.meta, org.apache.commons.lang, org.apache.commons.lang.builder, org.apache.commons.lang.enums, org.apache.commons.lang.exception, org.apache.commons.lang.math, org.apache.commons.lang.mutable, + org.apache.commons.lang.reflect, org.apache.commons.lang.text, org.apache.commons.lang.time Bundle-Activator: de.prob.core.internal.Activator Eclipse-BuddyPolicy: registered Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Bundle-ClassPath: ., - lib/probcliparser.jar, - lib/commons-lang-2.4.jar, - lib/keyboard.jar + lib/dependencies/answerparser-2.4.8-SNAPSHOT.jar, + lib/dependencies/bparser-2.4.8-SNAPSHOT.jar, + lib/dependencies/cliparser-2.4.8-SNAPSHOT.jar, + lib/dependencies/commons-lang-2.6.jar, + lib/dependencies/jgrapht-0.8.3.jar, + lib/dependencies/jsr305-1.3.9.jar, + lib/dependencies/ltlparser-2.4.8-SNAPSHOT.jar, + lib/dependencies/parserbase-2.4.8-SNAPSHOT.jar, + lib/dependencies/prologlib-2.4.8-SNAPSHOT.jar, + lib/dependencies/unicode-2.4.8-SNAPSHOT.jar diff --git a/de.prob.core/build.gradle b/de.prob.core/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..0060cb63a4b4e9bbe1f29423d733d0a2427b4672 --- /dev/null +++ b/de.prob.core/build.gradle @@ -0,0 +1,24 @@ +apply plugin: 'java' + +repositories { + maven { + name "cobra" + url "http://cobra.cs.uni-duesseldorf.de/artifactory/repo" + } +} + + +def parser_version = '2.4.8-SNAPSHOT' + +dependencies { + compile group: "de.prob", name: "answerparser", version: parser_version , changing: true + compile group: "de.prob", name: "bparser", version: parser_version , changing: true + compile group: "de.prob", name: "cliparser", version: parser_version , changing: true + compile group: "de.prob", name: "ltlparser", version: parser_version , changing: true + compile group: "de.prob", name: "parserbase", version: parser_version , changing: true + compile group: "de.prob", name: "prologlib", version: parser_version , changing: true + compile group: "de.prob", name: "unicode", version: parser_version , changing: true + compile 'jgrapht:jgrapht:0.8.3' + compile 'commons-lang:commons-lang:2.6' + compile 'commons-codec:commons-codec:1.6' +} \ No newline at end of file diff --git a/de.prob.core/build.properties b/de.prob.core/build.properties index 9fb141b7cfba9f7f131f0a0a5f0521aec2927685..0a0b45bd564599a42834dd45e0bf74c1ad95c26b 100644 --- a/de.prob.core/build.properties +++ b/de.prob.core/build.properties @@ -3,7 +3,7 @@ output.. = bin/ bin.includes = META-INF/,\ plugin.xml,\ .,\ - lib/probcliparser.jar,\ - lib/commons-lang-2.4.jar,\ - prob/ + prob/,\ + lib/ + diff --git a/de.prob.core/lib/commons-lang-2.4.jar b/de.prob.core/lib/commons-lang-2.4.jar deleted file mode 100644 index 532939ecab6b77ccb77af3635c55ff9752b70ab7..0000000000000000000000000000000000000000 Binary files a/de.prob.core/lib/commons-lang-2.4.jar and /dev/null differ diff --git a/de.prob.core/lib/probcliparser.jar b/de.prob.core/lib/probcliparser.jar deleted file mode 100644 index f1731c56204bdedf7c00b921dd8994f133adbe75..0000000000000000000000000000000000000000 Binary files a/de.prob.core/lib/probcliparser.jar and /dev/null differ diff --git a/de.prob.core/prob_target.target b/de.prob.core/prob_target.target index 8ff926ff5f4107bbf6fa23f467bdad95433bce9d..ca09102f4cfa71d2e0890c1c81d8c16e77d027d3 100644 --- a/de.prob.core/prob_target.target +++ b/de.prob.core/prob_target.target @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?pde version="3.6"?> -<target name="prob_target" sequenceNumber="15"> +<target name="prob_target" sequenceNumber="18"> <locations> <location includeAllPlatforms="false" includeMode="planner" includeSource="true" type="InstallableUnit"> <unit id="org.eclipse.equinox.p2.extras.feature.feature.group" version="1.0.1.v20110906-1605-7A4FD4DiVOMap8cHSc6vPuny4gqO"/> @@ -13,12 +13,12 @@ <unit id="org.eclipse.equinox.p2.core.feature.feature.group" version="1.0.1.v20110906-1605-8290FZ9FVKHVRKtmx3fpNuo02129"/> <unit id="org.eclipse.equinox.p2.user.ui.feature.group" version="2.1.2.R37x_v20110815-1155-6-Bk8pYWZz0qUTX5I15GZWwbXkrl"/> <unit id="org.eclipse.equinox.p2.rcp.feature.feature.group" version="1.0.1.v20110906-1605-782EqBqNKGVkiV-PUsgz-uny4gqO"/> -<unit id="org.eventb.ide.feature.group" version="2.5.0.r14568"/> -<unit id="fr.systerel.editor.feature.group" version="0.6.2.r14568"/> -<unit id="org.rodinp.feature.group" version="1.6.0.r14568"/> -<unit id="org.rodinp.platform.product" version="2.5.0.r14568"/> -<unit id="org.rodinp.platform.feature.group" version="2.5.0.r14568"/> -<unit id="org.rodinp.platform.product.root.feature.feature.group" version="2.5.0.r14568"/> +<unit id="org.eventb.ide.feature.group" version="2.5.0.r14636"/> +<unit id="fr.systerel.editor.feature.group" version="0.6.2.r14636"/> +<unit id="org.rodinp.feature.group" version="1.6.0.r14636"/> +<unit id="org.rodinp.platform.product" version="2.5.0.r14636"/> +<unit id="org.rodinp.platform.feature.group" version="2.5.0.r14636"/> +<unit id="org.rodinp.platform.product.root.feature.feature.group" version="2.5.0.r14636"/> <repository location="http://rodin-b-sharp.sourceforge.net/core-updates"/> </location> <location includeAllPlatforms="false" includeMode="planner" includeSource="true" type="InstallableUnit"> @@ -26,5 +26,10 @@ <unit id="org.eclipse.gef.sdk.feature.group" version="3.7.2.v20110927-2020-7G7W77A5WNgIRPdWXDIbNTSQPdQL"/> <repository location="http://download.eclipse.org/releases/indigo/"/> </location> +<location includeAllPlatforms="false" includeMode="planner" includeSource="true" type="InstallableUnit"> +<unit id="ac.soton.eventb.emf.core.extension.feature.feature.group" version="1.3.0.201206030057"/> +<unit id="org.eventb.emf.feature.feature.group" version="3.7.0.201204300914"/> +<repository location="http://rodin-b-sharp.sourceforge.net/updates"/> +</location> </locations> </target> diff --git a/de.prob.core/src/de/prob/cli/CliStarter.java b/de.prob.core/src/de/prob/cli/CliStarter.java index fa142a5eb0fada6925fd9b14a5e38a689da1b8ff..f71cf9aa2371474db9ee73c3f42bb95899eada52 100644 --- a/de.prob.core/src/de/prob/cli/CliStarter.java +++ b/de.prob.core/src/de/prob/cli/CliStarter.java @@ -18,11 +18,8 @@ import java.security.SecureRandom; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Random; import org.eclipse.core.runtime.Assert; @@ -261,6 +258,9 @@ public final class CliStarter { final Path path = new Path("prob"); final URL fileURL = FileLocator.find( Activator.getDefault().getBundle(), path, null); + if (fileURL==null) { + throw new CliException("Unable to find directory with prob executables."); + } URL resolved; try { resolved = FileLocator.resolve(fileURL); diff --git a/de.prob.core/src/de/prob/core/command/ExploreStateCommand.java b/de.prob.core/src/de/prob/core/command/ExploreStateCommand.java index 048373bf995655d077971aaf4c85312c3f91bd7d..3e6ab31acde14468ea71c2c94d11608dd5406bef 100644 --- a/de.prob.core/src/de/prob/core/command/ExploreStateCommand.java +++ b/de.prob.core/src/de/prob/core/command/ExploreStateCommand.java @@ -79,7 +79,7 @@ public final class ExploreStateCommand implements IComposableCommand { final Collection<StateError> stateErrors = getStateErrCmd.getResult(); if (!initialised && enabledOperations.isEmpty() && !timeoutOccured) { - Logger.notifyUserWithoutBugreport("ProB could not find valid constants. This might be caused by the animation settings (e.g., Integer range or deferred set size) or by an inconsistency in the axioms"); + Logger.notifyUserWithoutBugreport("ProB could not find valid constants/variables. This might be caused by the animation settings (e.g., Integer range or deferred set size) or by an inconsistency in the axioms"); } Set<String> timeouts = new HashSet<String>( @@ -92,7 +92,8 @@ public final class ExploreStateCommand implements IComposableCommand { Activator.computedState(state); } - public void writeCommand(final IPrologTermOutput pto) throws CommandException { + public void writeCommand(final IPrologTermOutput pto) + throws CommandException { allCommands.writeCommand(pto); } diff --git a/de.prob.core/src/de/prob/core/command/LoadClassicalBModelCommand.java b/de.prob.core/src/de/prob/core/command/LoadClassicalBModelCommand.java index a82f46ce2256163a83511227e5fb7fef4d3d4397..63a26a5793883646e36294c298080ed38bd974e9 100644 --- a/de.prob.core/src/de/prob/core/command/LoadClassicalBModelCommand.java +++ b/de.prob.core/src/de/prob/core/command/LoadClassicalBModelCommand.java @@ -144,8 +144,8 @@ public final class LoadClassicalBModelCommand { try { Start ast = bParser.parseFile(model, false); final RecursiveMachineLoader rml = new RecursiveMachineLoader( - model.getParent()); - rml.loadAllMachines(model, ast, null, bParser.getDefinitions()); + model.getParent(), null); + rml.loadAllMachines(model, ast, null, bParser.getDefinitions(), null); StructuredPrologOutput output = new StructuredPrologOutput(); StructuredPrologOutput out = new StructuredPrologOutput(); rml.printAsProlog(output); diff --git a/de.prob.core/src/de/prob/core/domainobjects/eval/PredicateEvalElement.java b/de.prob.core/src/de/prob/core/domainobjects/eval/PredicateEvalElement.java index 3f18e24c0d22c9036242617ce1121d956877059e..a77142212165fa93f83aa1a143d7ff2a2447a1da 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/eval/PredicateEvalElement.java +++ b/de.prob.core/src/de/prob/core/domainobjects/eval/PredicateEvalElement.java @@ -14,11 +14,11 @@ import de.be4.classicalb.core.parser.exceptions.BException; import de.be4.classicalb.core.parser.node.AConjunctPredicate; import de.be4.classicalb.core.parser.node.ADisjunctPredicate; import de.be4.classicalb.core.parser.node.AEquivalencePredicate; -import de.be4.classicalb.core.parser.node.AExistentialQuantificationPredicate; +import de.be4.classicalb.core.parser.node.AExistsPredicate; +import de.be4.classicalb.core.parser.node.AForallPredicate; import de.be4.classicalb.core.parser.node.AImplicationPredicate; import de.be4.classicalb.core.parser.node.ANegationPredicate; import de.be4.classicalb.core.parser.node.APredicateParseUnit; -import de.be4.classicalb.core.parser.node.AUniversalQuantificationPredicate; import de.be4.classicalb.core.parser.node.EOF; import de.be4.classicalb.core.parser.node.Start; import de.prob.eventb.translator.PredicateVisitor; @@ -102,16 +102,15 @@ public class PredicateEvalElement extends AbstractEvalElement { } @Override - public void inAUniversalQuantificationPredicate( - final AUniversalQuantificationPredicate node) { + public void inAForallPredicate(final AForallPredicate node) { hasChildren = true; } - @Override - public void inAExistentialQuantificationPredicate( - final AExistentialQuantificationPredicate node) { + @Override + public void inAExistsPredicate(AExistsPredicate arg0) { hasChildren = true; } + } } diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExample.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExample.java index f416a69eca11c1766aef1ef49d587009be11a53b..ab9082e164d793cd4311837eb1f9a89db2dece6f 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExample.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExample.java @@ -20,75 +20,95 @@ import de.prob.prolog.term.PrologTerm; * @author Andriy Tolstoy * */ -public final class CounterExample { +public class CounterExample { private final static PrologTerm NONE = new CompoundPrologTerm("none"); private final CounterExampleProposition propositionRoot; private final List<CounterExampleProposition> propositions = new ArrayList<CounterExampleProposition>(); private final List<CounterExampleState> states = new ArrayList<CounterExampleState>(); private final int loopEntry; - private List<ArrayList<Boolean>> predicateValues; private final List<Operation> initPath; - private final ListPrologTerm atomics; - private final ListPrologTerm example; private final PathType pathType; + private final int ceSize; // the length of the counterexample (number of + // states without the initialisation) + + protected CounterExample(CounterExampleProposition propositionRoot, + int loopEntry, List<Operation> initPath, PathType pathType, + int ceSize) { + super(); + this.propositionRoot = propositionRoot; + this.loopEntry = loopEntry; + this.initPath = initPath; + this.pathType = pathType; + this.ceSize = ceSize; + } public CounterExample(final Result modelCheckingResult) { - atomics = modelCheckingResult.getAtomics(); - example = modelCheckingResult.getCounterexample(); loopEntry = modelCheckingResult.getLoopEntry(); pathType = modelCheckingResult.getPathType(); initPath = Collections.unmodifiableList(Arrays .asList(modelCheckingResult.getInitPathOps())); + ceSize = modelCheckingResult.getCounterexample().size(); - createStates(example); + final List<ArrayList<Boolean>> predicateValues = createStates(modelCheckingResult + .getCounterexample()); - propositionRoot = createExample(modelCheckingResult.getStructure()); + final String[] atomicFormulaNames = createAtomicNames(modelCheckingResult); + propositionRoot = createExample(modelCheckingResult.getStructure(), + atomicFormulaNames, predicateValues); propositionRoot.setVisible(true); Collections.reverse(propositions); } - private void createStates(final ListPrologTerm example) { - // final boolean isLoopType = pathType == PathType.INFINITE; - int index = 0; + private String[] createAtomicNames(final Result modelCheckingResult) { + String[] res = new String[modelCheckingResult.getAtomics().size()]; + int i = 0; + for (final PrologTerm term : modelCheckingResult.getAtomics()) { + res[i] = PrologTerm.atomicString(((CompoundPrologTerm) term) + .getArgument(1)); + } + return res; + } + + private List<ArrayList<Boolean>> createStates(final ListPrologTerm example) { + List<ArrayList<Boolean>> predicateValues = new ArrayList<ArrayList<Boolean>>(); + + for (int i = 0; i < example.size(); i++) { + predicateValues.add(new ArrayList<Boolean>()); + } + int index = 0; for (PrologTerm exampleElement : example) { CompoundPrologTerm state = (CompoundPrologTerm) exampleElement; - int stateId = ((IntegerPrologTerm) state.getArgument(1)).getValue() - .intValue(); + final PrologTerm stateId = state.getArgument(1); final ListPrologTerm values = ((ListPrologTerm) state .getArgument(2)); final CompoundPrologTerm operationTerm = (CompoundPrologTerm) state .getArgument(3); - if (predicateValues == null) { - predicateValues = new ArrayList<ArrayList<Boolean>>(); - - for (int i = 0; i < values.size(); i++) { - predicateValues.add(new ArrayList<Boolean>()); - } - } - for (int i = 0; i < values.size(); i++) { int value = ((IntegerPrologTerm) values.get(i)).getValue() .intValue(); predicateValues.get(i).add(value == 0 ? false : true); } - // final boolean inLoop = isLoopType && index >= loopEntry; final Operation operation = NONE.equals(operationTerm) ? null : Operation.fromPrologTerm(operationTerm); final CounterExampleState ceState = new CounterExampleState(index, - stateId, operation/* , inLoop */); + stateId, operation); states.add(ceState); index++; } + + return predicateValues; } - private CounterExampleProposition createExample(final PrologTerm structure) { - CounterExampleProposition proposition = null; + private CounterExampleProposition createExample(final PrologTerm structure, + final String[] atomicFormulaNames, + List<ArrayList<Boolean>> predicateValues) { + final CounterExampleProposition proposition; CompoundPrologTerm term = (CompoundPrologTerm) structure; String functor = term.getFunctor(); @@ -104,18 +124,15 @@ public final class CounterExample { Arrays.fill(values, CounterExampleValueType.FALSE); } - proposition = new CounterExamplePredicate(functor, pathType, - loopEntry, Arrays.asList(values)); + proposition = new CounterExamplePredicate(functor, this, + Arrays.asList(values)); } else if (arity == 1) { if (functor.equals("ap") || functor.equals("tp")) { IntegerPrologTerm atomic = (IntegerPrologTerm) term .getArgument(1); int atomicId = atomic.getValue().intValue(); - CompoundPrologTerm atomicTerm = (CompoundPrologTerm) atomics - .get(atomicId); - atomicTerm = (CompoundPrologTerm) atomicTerm.getArgument(1); - String name = atomicTerm.getFunctor(); + final String name = atomicFormulaNames[atomicId]; Logger.assertProB("CounterExample invalid", values.length == predicateValues.get(atomicId).size()); @@ -126,75 +143,97 @@ public final class CounterExample { } proposition = functor.equals("ap") ? new CounterExamplePredicate( - name, pathType, loopEntry, Arrays.asList(values)) - : new CounterExampleTransition(name, pathType, - loopEntry, Arrays.asList(values)); + name, this, Arrays.asList(values)) + : new CounterExampleTransition(name, this, + Arrays.asList(values)); } else { - CounterExampleProposition argument = createExample(term - .getArgument(1)); - if (functor.equals("globally")) { - proposition = new CounterExampleGlobally(pathType, - loopEntry, argument); - } else if (functor.equals("finally")) { - proposition = new CounterExampleFinally(pathType, - loopEntry, argument); - } else if (functor.equals("next")) { - proposition = new CounterExampleNext(pathType, loopEntry, - argument); - } else if (functor.equals("not")) { - proposition = new CounterExampleNegation(pathType, - loopEntry, argument); - } else if (functor.equals("once")) { - proposition = new CounterExampleOnce(pathType, loopEntry, - argument); - } else if (functor.equals("yesterday")) { - proposition = new CounterExampleYesterday(pathType, - loopEntry, argument); - } else if (functor.equals("historically")) { - proposition = new CounterExampleHistory(pathType, - loopEntry, argument); - } - - argument.setParent(proposition); + proposition = createUnaryOperator(atomicFormulaNames, + predicateValues, term, functor); } } else if (arity == 2) { - CounterExampleProposition firstArgument = createExample(term - .getArgument(1)); - CounterExampleProposition secondArgument = createExample(term - .getArgument(2)); + proposition = createBinaryOperator(atomicFormulaNames, + predicateValues, term, functor); + } else { + throw new IllegalArgumentException("Unexpected Prolog LTL " + arity + + "-ary operator " + functor); + } - if (functor.equals("and")) { - proposition = new CounterExampleConjunction(pathType, - loopEntry, firstArgument, secondArgument); - } else if (functor.equals("or")) { - proposition = new CounterExampleDisjunction(pathType, - loopEntry, firstArgument, secondArgument); - } else if (functor.equals("implies")) { - proposition = new CounterExampleImplication(pathType, - loopEntry, firstArgument, secondArgument); - } else if (functor.equals("until")) { - proposition = new CounterExampleUntil(pathType, loopEntry, - firstArgument, secondArgument); - } else if (functor.equals("weakuntil")) { - proposition = new CounterExampleWeakUntil(pathType, loopEntry, - firstArgument, secondArgument); - } else if (functor.equals("release")) { - proposition = new CounterExampleRelease(pathType, loopEntry, - firstArgument, secondArgument); - } else if (functor.equals("since")) { - proposition = new CounterExampleSince(pathType, loopEntry, - firstArgument, secondArgument); - } else if (functor.equals("trigger")) { - proposition = new CounterExampleTrigger(pathType, loopEntry, - firstArgument, secondArgument); - } + propositions.add(proposition); + + return proposition; + } - firstArgument.setParent(proposition); - secondArgument.setParent(proposition); + private CounterExampleProposition createBinaryOperator( + final String[] atomicFormulaNames, + List<ArrayList<Boolean>> predicateValues, CompoundPrologTerm term, + String functor) { + final CounterExampleProposition proposition; + final CounterExampleProposition firstArgument = createExample( + term.getArgument(1), atomicFormulaNames, predicateValues); + final CounterExampleProposition secondArgument = createExample( + term.getArgument(2), atomicFormulaNames, predicateValues); + + if (functor.equals("and")) { + proposition = new CounterExampleConjunction(this, firstArgument, + secondArgument); + } else if (functor.equals("or")) { + proposition = new CounterExampleDisjunction(this, firstArgument, + secondArgument); + } else if (functor.equals("implies")) { + proposition = new CounterExampleImplication(this, firstArgument, + secondArgument); + } else if (functor.equals("until")) { + proposition = new CounterExampleUntil(this, firstArgument, + secondArgument); + } else if (functor.equals("weakuntil")) { + proposition = new CounterExampleWeakUntil(this, firstArgument, + secondArgument); + } else if (functor.equals("release")) { + proposition = new CounterExampleRelease(this, firstArgument, + secondArgument); + } else if (functor.equals("since")) { + proposition = new CounterExampleSince(this, firstArgument, + secondArgument); + } else if (functor.equals("trigger")) { + proposition = new CounterExampleTrigger(this, firstArgument, + secondArgument); + } else { + throw new IllegalArgumentException( + "Unexpected Prolog LTL binary operator " + functor); } - propositions.add(proposition); + firstArgument.setParent(proposition); + secondArgument.setParent(proposition); + return proposition; + } + private CounterExampleProposition createUnaryOperator( + final String[] atomicFormulaNames, + List<ArrayList<Boolean>> predicateValues, CompoundPrologTerm term, + String functor) { + final CounterExampleProposition proposition; + final CounterExampleProposition argument = createExample( + term.getArgument(1), atomicFormulaNames, predicateValues); + if (functor.equals("globally")) { + proposition = new CounterExampleGlobally(this, argument); + } else if (functor.equals("finally")) { + proposition = new CounterExampleFinally(this, argument); + } else if (functor.equals("next")) { + proposition = new CounterExampleNext(this, argument); + } else if (functor.equals("not")) { + proposition = new CounterExampleNegation(this, argument); + } else if (functor.equals("once")) { + proposition = new CounterExampleOnce(this, argument); + } else if (functor.equals("yesterday")) { + proposition = new CounterExampleYesterday(this, argument); + } else if (functor.equals("historically")) { + proposition = new CounterExampleHistory(this, argument); + } else { + throw new IllegalArgumentException( + "Unexpected Prolog LTL unary operator " + functor); + } + + argument.setParent(proposition); return proposition; } @@ -232,4 +271,8 @@ public final class CounterExample { public List<Operation> getInitPath() { return initPath; } + + public int getCounterExampleSize() { + return ceSize; + } } diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleBinaryOperator.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleBinaryOperator.java index 0f02c58230c10c60e0247e358296b7fa93ebe46a..79f2f924ff62689ebda1f01a56f3b04294453013 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleBinaryOperator.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleBinaryOperator.java @@ -3,7 +3,6 @@ package de.prob.core.domainobjects.ltl; import java.util.ArrayList; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; import de.prob.logging.Logger; /** @@ -20,10 +19,10 @@ public abstract class CounterExampleBinaryOperator extends protected List<List<Integer>> secondHighlightedPositions = new ArrayList<List<Integer>>(); public CounterExampleBinaryOperator(final String name, - final String fullName, final PathType pathType, - final int loopEntry, final CounterExampleProposition firstArgument, + final String fullName, final CounterExample counterExample, + final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - super(name, fullName, pathType, loopEntry); + super(name, fullName, counterExample); this.firstArgument = firstArgument; this.secondArgument = secondArgument; } @@ -92,12 +91,6 @@ public abstract class CounterExampleBinaryOperator extends secondCheckedSize, isPast)); } - @Override - protected int calculatePosition(int pos) { - int size = getFirstArgument().getValues().size(); - return pos < size ? pos : pos - (size - loopEntry); - } - protected int indexOfUnknownState( final List<CounterExampleValueType> firstCheckedValues, final List<CounterExampleValueType> secondCheckedValues, diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleConjunction.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleConjunction.java index 2afc61f1876b649e922eb0b0d478eaf4bd602677..e72430bc8dfb91508528e4317bbcda5164aba1cf 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleConjunction.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleConjunction.java @@ -1,7 +1,5 @@ package de.prob.core.domainobjects.ltl; -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.logging.Logger; /** * Provides an "and" operator. @@ -12,27 +10,24 @@ import de.prob.logging.Logger; public final class CounterExampleConjunction extends CounterExampleBinaryOperator { - private final CounterExampleNegation not; - - public CounterExampleConjunction(final PathType pathType, - final int loopEntry, final CounterExampleProposition firstArgument, + public CounterExampleConjunction(final CounterExample counterExample, + final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - super("and", "Conjunction", pathType, loopEntry, firstArgument, + super("and", "Conjunction", counterExample, firstArgument, secondArgument); - - CounterExampleNegation notFirstArgument = new CounterExampleNegation( - pathType, loopEntry, firstArgument); - CounterExampleNegation notSecondArgument = new CounterExampleNegation( - pathType, loopEntry, secondArgument); - CounterExampleDisjunction or = new CounterExampleDisjunction(pathType, - loopEntry, notFirstArgument, notSecondArgument); - not = new CounterExampleNegation(pathType, loopEntry, or); + addCheckByDeMorgan(counterExample, firstArgument, secondArgument); } - public CounterExampleConjunction(final PathType pathType, + private void addCheckByDeMorgan(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - this(pathType, -1, firstArgument, secondArgument); + CounterExampleNegation notFirstArgument = new CounterExampleNegation( + counterExample, firstArgument); + CounterExampleNegation notSecondArgument = new CounterExampleNegation( + counterExample, secondArgument); + CounterExampleDisjunction or = new CounterExampleDisjunction( + counterExample, notFirstArgument, notSecondArgument); + addCheck(new CounterExampleNegation(counterExample, or)); } @Override @@ -56,8 +51,6 @@ public final class CounterExampleConjunction extends CounterExampleValueType value = calculateAnd(firstValue, secondValue); - Logger.assertProB("And invalid", value == not.getValues().get(position)); - return value; } diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleDisjunction.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleDisjunction.java index 901e03bc7c909f345052e76ae7f22c09aae6c6ad..b6fb4a141d41be99fc4e51f4cf938be73ae61d6d 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleDisjunction.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleDisjunction.java @@ -1,6 +1,5 @@ package de.prob.core.domainobjects.ltl; -import de.prob.core.command.LtlCheckingCommand.PathType; /** * Provides an "or" operator. @@ -11,17 +10,11 @@ import de.prob.core.command.LtlCheckingCommand.PathType; public final class CounterExampleDisjunction extends CounterExampleBinaryOperator { - public CounterExampleDisjunction(final PathType pathType, - final int loopEntry, final CounterExampleProposition firstArgument, - final CounterExampleProposition secondArgument) { - super("or", "Disjunction", pathType, loopEntry, firstArgument, - secondArgument); - } - - public CounterExampleDisjunction(final PathType pathType, + public CounterExampleDisjunction(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - this(pathType, -1, firstArgument, secondArgument); + super("or", "Disjunction", counterExample, firstArgument, + secondArgument); } @Override diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleFinally.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleFinally.java index cf0b4e66a5cb12b6682f13058e5ec4b5e464fa89..90d6954c55c69e5cb26018f1af17e0cbd7781a6b 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleFinally.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleFinally.java @@ -5,7 +5,6 @@ import java.util.Arrays; import java.util.List; import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.logging.Logger; /** * Provides a "finally" operator. @@ -15,34 +14,26 @@ import de.prob.logging.Logger; */ public final class CounterExampleFinally extends CounterExampleUnaryOperator { - private final CounterExampleUntil until; - - public CounterExampleFinally(final PathType pathType, final int loopEntry, + public CounterExampleFinally(final CounterExample counterExample, final CounterExampleProposition argument) { - super("F", "Finally", pathType, loopEntry, argument); + super("F", "Finally", counterExample, argument); + checkByUntil(counterExample, argument); + } + private void checkByUntil(final CounterExample counterExample, + final CounterExampleProposition argument) { CounterExampleValueType[] firstValues = new CounterExampleValueType[argument .getValues().size()]; Arrays.fill(firstValues, CounterExampleValueType.TRUE); - CounterExamplePredicate first = new CounterExamplePredicate(pathType, - loopEntry, Arrays.asList(firstValues)); + CounterExamplePredicate first = new CounterExamplePredicate("", + counterExample, Arrays.asList(firstValues)); - until = new CounterExampleUntil(pathType, loopEntry, first, argument); + addCheck(new CounterExampleUntil(counterExample, first, argument)); } @Override protected CounterExampleValueType calculate(final int position) { - CounterExampleValueType value = calculateFinallyOperator(position); - - List<CounterExampleValueType> untilValues = until.getValues(); - - Logger.assertProB("Finally invalid", value == untilValues.get(position)); - - return value; - } - - private CounterExampleValueType calculateFinallyOperator(final int position) { CounterExampleValueType result = CounterExampleValueType.UNKNOWN; List<CounterExampleValueType> checkedValues = new ArrayList<CounterExampleValueType>( diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleGlobally.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleGlobally.java index bad9bdf6eb8b93afed45b74bc26b8356f3210495..b6f5fe4358d22263847ee8e7b5c6edb592e35467 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleGlobally.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleGlobally.java @@ -5,7 +5,6 @@ import java.util.Arrays; import java.util.List; import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.logging.Logger; /** * Provides a "globally" operator. @@ -15,66 +14,55 @@ import de.prob.logging.Logger; */ public final class CounterExampleGlobally extends CounterExampleUnaryOperator { - private final CounterExampleRelease release; - private final CounterExampleNegation notFinally; - private final CounterExampleNegation notUntil; - - public CounterExampleGlobally(final PathType pathType, final int loopEntry, + public CounterExampleGlobally(final CounterExample counterExample, final CounterExampleProposition argument) { - super("G", "Globally", pathType, loopEntry, argument); - - CounterExampleValueType[] falseValues = new CounterExampleValueType[argument - .getValues().size()]; - Arrays.fill(falseValues, CounterExampleValueType.FALSE); - - CounterExamplePredicate falsePredicate = new CounterExamplePredicate( - pathType, loopEntry, Arrays.asList(falseValues)); - - release = new CounterExampleRelease(pathType, loopEntry, - falsePredicate, argument); + super("G", "Globally", counterExample, argument); + checkByRelease(counterExample, argument); CounterExampleNegation notArgument = new CounterExampleNegation( - pathType, loopEntry, argument); - - CounterExampleFinally finallyOperator = new CounterExampleFinally( - pathType, loopEntry, notArgument); - - notFinally = new CounterExampleNegation(pathType, loopEntry, - finallyOperator); + counterExample, argument); + checkByFinally(counterExample, notArgument); + checkByUntil(counterExample, argument, notArgument); + } + private void checkByUntil(final CounterExample counterExample, + final CounterExampleProposition argument, + CounterExampleNegation notArgument) { CounterExampleValueType[] trueValues = new CounterExampleValueType[argument .getValues().size()]; Arrays.fill(trueValues, CounterExampleValueType.TRUE); - CounterExamplePredicate truePredicate = new CounterExamplePredicate( - pathType, loopEntry, Arrays.asList(trueValues)); + CounterExamplePredicate truePredicate = new CounterExamplePredicate("", + counterExample, Arrays.asList(trueValues)); - CounterExampleUntil until = new CounterExampleUntil(pathType, - loopEntry, truePredicate, notArgument); - notUntil = new CounterExampleNegation(pathType, loopEntry, until); + CounterExampleUntil until = new CounterExampleUntil(counterExample, + truePredicate, notArgument); + addCheck(new CounterExampleNegation(counterExample, until)); } - @Override - protected CounterExampleValueType calculate(final int position) { - CounterExampleValueType value = calculateGlobally(position); - - List<CounterExampleValueType> releaseValues = release.getValues(); - List<CounterExampleValueType> notFinallyValues = notFinally.getValues(); - List<CounterExampleValueType> notUntilValues = notUntil.getValues(); + private void checkByFinally(final CounterExample counterExample, + CounterExampleNegation notArgument) { + CounterExampleFinally finallyOperator = new CounterExampleFinally( + counterExample, notArgument); - Logger.assertProB("Globally invalid", - value == releaseValues.get(position)); + addCheck(new CounterExampleNegation(counterExample, finallyOperator)); + } - Logger.assertProB("Globally invalid", - value == notFinallyValues.get(position)); + private void checkByRelease(final CounterExample counterExample, + final CounterExampleProposition argument) { + CounterExampleValueType[] falseValues = new CounterExampleValueType[argument + .getValues().size()]; + Arrays.fill(falseValues, CounterExampleValueType.FALSE); - Logger.assertProB("Globally invalid", - value == notUntilValues.get(position)); + CounterExamplePredicate falsePredicate = new CounterExamplePredicate( + "", counterExample, Arrays.asList(falseValues)); - return value; + addCheck(new CounterExampleRelease(counterExample, falsePredicate, + argument)); } - private CounterExampleValueType calculateGlobally(final int position) { + @Override + protected CounterExampleValueType calculate(final int position) { CounterExampleValueType result = CounterExampleValueType.UNKNOWN; List<CounterExampleValueType> checkedValues = new ArrayList<CounterExampleValueType>( diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleHistory.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleHistory.java index 6f320b58c9402de28fdbf37c0af0e014582e262e..d8479d1de5d2e1ecae1b92ed6a24f346e21a0318 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleHistory.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleHistory.java @@ -4,9 +4,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.logging.Logger; - /** * Provides a "history" operator. * @@ -15,47 +12,42 @@ import de.prob.logging.Logger; */ public final class CounterExampleHistory extends CounterExampleUnaryOperator { - private final CounterExampleNegation notOnce; - private final CounterExampleNegation notSince; - - public CounterExampleHistory(final PathType pathType, final int loopEntry, + public CounterExampleHistory(final CounterExample counterExample, final CounterExampleProposition argument) { - super("H", "History", pathType, loopEntry, argument); + super("H", "History", counterExample, argument); CounterExampleNegation notArgument = new CounterExampleNegation( - pathType, loopEntry, argument); - - CounterExampleOnce onceOperator = new CounterExampleOnce(pathType, - loopEntry, notArgument); - - notOnce = new CounterExampleNegation(pathType, loopEntry, onceOperator); + counterExample, argument); + checkByOnce(counterExample, notArgument); + checkBySince(counterExample, argument, notArgument); + } + private void checkBySince(final CounterExample counterExample, + final CounterExampleProposition argument, + CounterExampleNegation notArgument) { CounterExampleValueType[] trueValues = new CounterExampleValueType[argument .getValues().size()]; Arrays.fill(trueValues, CounterExampleValueType.TRUE); - CounterExamplePredicate truePredicate = new CounterExamplePredicate( - pathType, loopEntry, Arrays.asList(trueValues)); + CounterExamplePredicate truePredicate = new CounterExamplePredicate("", + counterExample, Arrays.asList(trueValues)); - CounterExampleSince since = new CounterExampleSince(pathType, - loopEntry, truePredicate, notArgument); - notSince = new CounterExampleNegation(pathType, loopEntry, since); + CounterExampleSince since = new CounterExampleSince(counterExample, + truePredicate, notArgument); + addCheck(new CounterExampleNegation(counterExample, since)); } - @Override - public CounterExampleValueType calculate(final int position) { - CounterExampleValueType value = calculateHistoryOperator(position); - - List<CounterExampleValueType> notOnceValues = notOnce.getValues(); - List<CounterExampleValueType> notSinceValues = notSince.getValues(); - - Logger.assertProB("History invalid", - value == notOnceValues.get(position)); + private void checkByOnce(final CounterExample counterExample, + CounterExampleNegation notArgument) { + CounterExampleOnce onceOperator = new CounterExampleOnce( + counterExample, notArgument); - Logger.assertProB("History invalid", - value == notSinceValues.get(position)); + addCheck(new CounterExampleNegation(counterExample, onceOperator)); + } - return value; + @Override + public CounterExampleValueType calculate(final int position) { + return calculateHistoryOperator(position); } private CounterExampleValueType calculateHistoryOperator(final int position) { diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleImplication.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleImplication.java index a11b756bbefa4b88b7dc7fe171ddcf6ed259a973..ea536c11e472d1e0bd73d4cfd228e29ecf5bcdaa 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleImplication.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleImplication.java @@ -1,6 +1,5 @@ package de.prob.core.domainobjects.ltl; -import de.prob.core.command.LtlCheckingCommand.PathType; /** * Provides an "imply" operator. @@ -11,17 +10,11 @@ import de.prob.core.command.LtlCheckingCommand.PathType; public final class CounterExampleImplication extends CounterExampleBinaryOperator { - public CounterExampleImplication(final PathType pathType, - final int loopEntry, final CounterExampleProposition firstArgument, - final CounterExampleProposition secondArgument) { - super("=>", "Implication", pathType, loopEntry, firstArgument, - secondArgument); - } - - public CounterExampleImplication(final PathType pathType, + public CounterExampleImplication(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - this(pathType, -1, firstArgument, secondArgument); + super("=>", "Implication", counterExample, firstArgument, + secondArgument); } @Override diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleNegation.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleNegation.java index 2c6242087571836c49efce33fc9d168c67527f69..8f2eb3bedeafcc5b7343f885fab375843ead941a 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleNegation.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleNegation.java @@ -1,6 +1,5 @@ package de.prob.core.domainobjects.ltl; -import de.prob.core.command.LtlCheckingCommand.PathType; /** * Provides a "not" operator. @@ -10,14 +9,9 @@ import de.prob.core.command.LtlCheckingCommand.PathType; */ public final class CounterExampleNegation extends CounterExampleUnaryOperator { - public CounterExampleNegation(final PathType pathType, final int loopEntry, + public CounterExampleNegation(final CounterExample counterExample, final CounterExampleProposition argument) { - super("not", "Negation", pathType, loopEntry, argument); - } - - public CounterExampleNegation(final PathType pathType, - final CounterExampleProposition argument) { - this(pathType, -1, argument); + super("not", "Negation", counterExample, argument); } @Override diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleNext.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleNext.java index 0ee28b23cf076957b403e129f2df7d4a95a68077..86e814108c2eef36b54e8e3a75378160d0c5e0fb 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleNext.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleNext.java @@ -13,9 +13,9 @@ import de.prob.core.command.LtlCheckingCommand.PathType; */ public final class CounterExampleNext extends CounterExampleUnaryOperator { - public CounterExampleNext(final PathType pathType, final int loopEntry, + public CounterExampleNext(final CounterExample counterExample, final CounterExampleProposition argument) { - super("X", "Next", pathType, loopEntry, argument); + super("X", "Next", counterExample, argument); } @Override diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleOnce.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleOnce.java index c0388ff29937a60189bd291d1a263504dbaf8163..f22ab22d6da46f2f64863762933c454486863492 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleOnce.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleOnce.java @@ -4,9 +4,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.logging.Logger; - /** * Provides an "once" operator. * @@ -15,36 +12,27 @@ import de.prob.logging.Logger; */ public final class CounterExampleOnce extends CounterExampleUnaryOperator { - private final CounterExampleSince since; - - public CounterExampleOnce(final PathType pathType, final int loopEntry, + public CounterExampleOnce(final CounterExample counterExample, final CounterExampleProposition argument) { - super("O", "Once", pathType, loopEntry, argument); + super("O", "Once", counterExample, argument); + checkBySince(counterExample, argument); + } + private void checkBySince(final CounterExample counterExample, + final CounterExampleProposition argument) { CounterExampleValueType[] firstValues = new CounterExampleValueType[argument .getValues().size()]; Arrays.fill(firstValues, CounterExampleValueType.TRUE); - CounterExamplePredicate first = new CounterExamplePredicate(pathType, - loopEntry, Arrays.asList(firstValues)); - - since = new CounterExampleSince(pathType, loopEntry, first, argument); - } + CounterExamplePredicate first = new CounterExamplePredicate("", + counterExample, Arrays.asList(firstValues)); - public CounterExampleOnce(final PathType pathType, - final CounterExampleProposition argument) { - this(pathType, -1, argument); + addCheck(new CounterExampleSince(counterExample, first, argument)); } @Override public CounterExampleValueType calculate(final int position) { - CounterExampleValueType value = calculateOnceOperator(position); - - List<CounterExampleValueType> sinceValues = since.getValues(); - - Logger.assertProB("Once invalid", value == sinceValues.get(position)); - - return value; + return calculateOnceOperator(position); } private CounterExampleValueType calculateOnceOperator(final int position) { diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExamplePredicate.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExamplePredicate.java index 6e4d8857c5af55661ff578f60cd099aa1346a31f..11643d8b0776a2405ca61e8ca0d61d15b34ce998 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExamplePredicate.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExamplePredicate.java @@ -2,8 +2,6 @@ package de.prob.core.domainobjects.ltl; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; - /** * Provides predicates. * @@ -13,25 +11,11 @@ import de.prob.core.command.LtlCheckingCommand.PathType; public class CounterExamplePredicate extends CounterExampleProposition { private final List<CounterExampleValueType> values; - public CounterExamplePredicate(final String name, final PathType pathType, - final int loopEntry, final List<CounterExampleValueType> values) { - super(name, name, pathType, loopEntry); - this.values = values; - } - - public CounterExamplePredicate(final String name, final PathType pathType, - final List<CounterExampleValueType> values) { - this(name, pathType, -1, values); - } - - public CounterExamplePredicate(final PathType pathType, - final int loopEntry, final List<CounterExampleValueType> values) { - this("", pathType, loopEntry, values); - } - - public CounterExamplePredicate(final PathType pathType, + public CounterExamplePredicate(final String name, + final CounterExample counterExample, final List<CounterExampleValueType> values) { - this("", pathType, values); + super(name, name, counterExample); + this.values = values; } @Override @@ -49,9 +33,4 @@ public class CounterExamplePredicate extends CounterExampleProposition { return name; } - @Override - protected int calculatePosition(int pos) { - int size = values.size(); - return pos < size ? pos : pos - (size - loopEntry); - } } diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleProposition.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleProposition.java index f63da11e6a70a94498a6ed256d6090bd6fb36ffc..4125194610437ae3c7cc92e60abdc76817d66412 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleProposition.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleProposition.java @@ -3,6 +3,7 @@ package de.prob.core.domainobjects.ltl; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import de.prob.core.command.LtlCheckingCommand.PathType; @@ -19,8 +20,10 @@ public abstract class CounterExampleProposition { protected final String fullName; protected final int loopEntry; protected final PathType pathType; + protected final CounterExample counterExample; protected CounterExampleProposition parent; private List<CounterExampleValueType> values; + private Collection<CounterExampleProposition> checks = new ArrayList<CounterExampleProposition>(); protected final PropertyChangeSupport listeners = new PropertyChangeSupport( this); @@ -28,11 +31,12 @@ public abstract class CounterExampleProposition { protected int stateId = 0; public CounterExampleProposition(final String name, final String fullName, - final PathType pathType, final int loopEntry) { + final CounterExample counterExample) { this.name = name; this.fullName = fullName; - this.loopEntry = loopEntry; - this.pathType = pathType; + this.loopEntry = counterExample.getLoopEntry(); + this.pathType = counterExample.getPathType(); + this.counterExample = counterExample; } public CounterExampleProposition getParent() { @@ -50,6 +54,7 @@ public abstract class CounterExampleProposition { public List<CounterExampleValueType> getValues() { if (values == null) { values = calculate(); + performChecks(values); } return values; @@ -99,7 +104,7 @@ public abstract class CounterExampleProposition { listeners.removePropertyChangeListener(listener); } - public List<Integer> fillPositions(int position, int index, + protected List<Integer> fillPositions(int position, int index, int checkedSize, boolean isPastOperator) { List<Integer> positions = new ArrayList<Integer>(); @@ -126,5 +131,27 @@ public abstract class CounterExampleProposition { protected abstract List<CounterExampleValueType> calculate(); - protected abstract int calculatePosition(int pos); + private int calculatePosition(int pos) { + final int size = counterExample.getCounterExampleSize(); + return pos < size ? pos : pos - (size - loopEntry); + } + + protected final void addCheck(CounterExampleProposition check) { + checks.add(check); + } + + private void performChecks(List<CounterExampleValueType> values) { + for (final CounterExampleProposition check : checks) { + performCheck(check, values); + } + } + + private void performCheck(CounterExampleProposition check, + List<CounterExampleValueType> values) { + List<CounterExampleValueType> values2 = check.getValues(); + if (!values.equals(values2)) { + Logger.notifyUser("Encountered inconsistency in computation of LTL operator" + + name); + } + } } diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleRelease.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleRelease.java index fc802cc3b633d75ea89d53176cc0a232739e846a..f4f5932f909251a125bb0bc55ee2d5bc6ae7155b 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleRelease.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleRelease.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.logging.Logger; /** * Provides a "release" operator. @@ -14,39 +13,28 @@ import de.prob.logging.Logger; */ public final class CounterExampleRelease extends CounterExampleBinaryOperator { - private final CounterExampleNegation notUntil; - - public CounterExampleRelease(final PathType pathType, final int loopEntry, + public CounterExampleRelease(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - super("R", "Release", pathType, loopEntry, firstArgument, - secondArgument); - CounterExampleNegation notFirst = new CounterExampleNegation(pathType, - loopEntry, firstArgument); - CounterExampleNegation notSecond = new CounterExampleNegation(pathType, - loopEntry, secondArgument); - CounterExampleUntil until = new CounterExampleUntil(pathType, - loopEntry, notFirst, notSecond); - notUntil = new CounterExampleNegation(pathType, loopEntry, until); + super("R", "Release", counterExample, firstArgument, secondArgument); + checkByUntil(counterExample, firstArgument, secondArgument); } - public CounterExampleRelease(final PathType pathType, + private void checkByUntil(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - this(pathType, -1, firstArgument, secondArgument); + CounterExampleNegation notFirst = new CounterExampleNegation( + counterExample, firstArgument); + CounterExampleNegation notSecond = new CounterExampleNegation( + counterExample, secondArgument); + CounterExampleUntil until = new CounterExampleUntil(counterExample, + notFirst, notSecond); + addCheck(new CounterExampleNegation(counterExample, until)); } @Override protected CounterExampleValueType calculate(final int position) { - final CounterExampleValueType value = calculateReleaseOperator(position); - - final List<CounterExampleValueType> notUntilValues = notUntil - .getValues(); - - Logger.assertProB("Release invalid", - value == notUntilValues.get(position)); - - return value; + return calculateReleaseOperator(position); } private CounterExampleValueType calculateReleaseOperator(final int position) { diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleSince.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleSince.java index bf606ea909e89ece1fb74009cc5da105f3acd18a..9c050bc88be343e675cbe06a31661616f0500b95 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleSince.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleSince.java @@ -3,8 +3,6 @@ package de.prob.core.domainobjects.ltl; import java.util.ArrayList; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; - /** * Provides a "since" operator. * @@ -13,16 +11,10 @@ import de.prob.core.command.LtlCheckingCommand.PathType; */ public final class CounterExampleSince extends CounterExampleBinaryOperator { - public CounterExampleSince(final PathType pathType, final int loopEntry, - final CounterExampleProposition firstArgument, - final CounterExampleProposition secondArgument) { - super("S", "Since", pathType, loopEntry, firstArgument, secondArgument); - } - - public CounterExampleSince(final PathType pathType, + public CounterExampleSince(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - this(pathType, -1, firstArgument, secondArgument); + super("S", "Since", counterExample, firstArgument, secondArgument); } @Override diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleState.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleState.java index 5ab6beab158d3409a24d2c940d96b8b5c39b08b7..c36ff7cc8efd14e683d87ffecd2abea679af6149 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleState.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleState.java @@ -1,6 +1,7 @@ package de.prob.core.domainobjects.ltl; import de.prob.core.domainobjects.Operation; +import de.prob.prolog.term.PrologTerm; /** * Provides a state of a counter-example. @@ -10,25 +11,17 @@ import de.prob.core.domainobjects.Operation; */ public final class CounterExampleState { private final int index; - private final int stateId; + private final PrologTerm stateId; private final Operation operation; - // private final boolean inLoop; - - public CounterExampleState(final int index, final int stateId, + public CounterExampleState(final int index, final PrologTerm stateId, final Operation operation/* , final boolean inLoop */) { this.index = index; this.stateId = stateId; this.operation = operation; - // this.inLoop = inLoop; } - // public CounterExampleState(final int index, final int stateId, - // final boolean inLoop) { - // this(index, stateId, null, inLoop); - // } - - public int getState() { + public PrologTerm getState() { return stateId; } @@ -40,7 +33,10 @@ public final class CounterExampleState { return index; } - // public boolean isInLoop() { - // return inLoop; - // } + @Override + public String toString() { + return "CounterExampleState [index=" + index + ", stateId=" + stateId + + ", operation=" + operation + "]"; + } + } diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleTransition.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleTransition.java index db142b30fc6ae481bf3d09c71a26cc423a6a8432..48a35155a8b9639a0b30037136163697eaff1a3f 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleTransition.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleTransition.java @@ -2,8 +2,6 @@ package de.prob.core.domainobjects.ltl; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; - /** * Provides transitions. * @@ -12,24 +10,10 @@ import de.prob.core.command.LtlCheckingCommand.PathType; */ public final class CounterExampleTransition extends CounterExamplePredicate { - public CounterExampleTransition(final String name, final PathType pathType, - final int loopEntry, final List<CounterExampleValueType> values) { - super(name, pathType, loopEntry, values); - } - - public CounterExampleTransition(final String name, final PathType pathType, - final List<CounterExampleValueType> values) { - this(name, pathType, -1, values); - } - - public CounterExampleTransition(final PathType pathType, - final int loopEntry, final List<CounterExampleValueType> values) { - this("", pathType, loopEntry, values); - } - - public CounterExampleTransition(final PathType pathType, + public CounterExampleTransition(final String name, + final CounterExample counterExample, final List<CounterExampleValueType> values) { - this("", pathType, values); + super(name, counterExample, values); } @Override diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleTrigger.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleTrigger.java index cb4c2ab75ed2d7f9c764cb899c1e3b50039bbea9..cb0c0971218a28b4f13755ba50687b81280bdf7a 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleTrigger.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleTrigger.java @@ -3,9 +3,6 @@ package de.prob.core.domainobjects.ltl; import java.util.ArrayList; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.logging.Logger; - /** * Provides a "trigger" operator. * @@ -14,39 +11,28 @@ import de.prob.logging.Logger; */ public final class CounterExampleTrigger extends CounterExampleBinaryOperator { - private final CounterExampleNegation notSince; - - public CounterExampleTrigger(final PathType pathType, final int loopEntry, + public CounterExampleTrigger(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - super("T", "Trigger", pathType, loopEntry, firstArgument, - secondArgument); - CounterExampleNegation notFirst = new CounterExampleNegation(pathType, - loopEntry, firstArgument); - CounterExampleNegation notSecond = new CounterExampleNegation(pathType, - loopEntry, secondArgument); - CounterExampleSince since = new CounterExampleSince(pathType, - loopEntry, notFirst, notSecond); - notSince = new CounterExampleNegation(pathType, loopEntry, since); + super("T", "Trigger", counterExample, firstArgument, secondArgument); + checkBySince(counterExample, firstArgument, secondArgument); } - public CounterExampleTrigger(final PathType pathType, + private void checkBySince(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - this(pathType, -1, firstArgument, secondArgument); + CounterExampleNegation notFirst = new CounterExampleNegation( + counterExample, firstArgument); + CounterExampleNegation notSecond = new CounterExampleNegation( + counterExample, secondArgument); + CounterExampleSince since = new CounterExampleSince(counterExample, + notFirst, notSecond); + addCheck(new CounterExampleNegation(counterExample, since)); } @Override protected CounterExampleValueType calculate(final int position) { - final CounterExampleValueType value = calculateTriggerOperator(position); - - final List<CounterExampleValueType> notSinceValues = notSince - .getValues(); - - Logger.assertProB("Trigger invalid", - value == notSinceValues.get(position)); - - return value; + return calculateTriggerOperator(position); } private CounterExampleValueType calculateTriggerOperator(final int position) { diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleUnaryOperator.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleUnaryOperator.java index fc43702dc5b3ecd91494b6cd1b8180950c474324..f4911990e2cce2559ae22fd2214c753ca200134a 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleUnaryOperator.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleUnaryOperator.java @@ -3,8 +3,6 @@ package de.prob.core.domainobjects.ltl; import java.util.ArrayList; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; - /** * Provides operators with one parameter. * @@ -17,9 +15,9 @@ public abstract class CounterExampleUnaryOperator extends protected List<List<Integer>> highlightedPositions = new ArrayList<List<Integer>>(); public CounterExampleUnaryOperator(final String name, - final String fullName, final PathType pathType, - final int loopEntry, final CounterExampleProposition argument) { - super(name, fullName, pathType, loopEntry); + final String fullName, final CounterExample counterExample, + final CounterExampleProposition argument) { + super(name, fullName, counterExample); this.argument = argument; } @@ -70,10 +68,4 @@ public abstract class CounterExampleUnaryOperator extends highlightedPositions.add(fillPositions(position, index, checkedSize, isPast)); } - - @Override - protected int calculatePosition(int pos) { - int size = getArgument().getValues().size(); - return pos < size ? pos : pos - (size - loopEntry); - } } diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleUntil.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleUntil.java index b18bb8a5f85a2b9350c898a659c2d1b1bcc09998..5b017923822c2fd4e8f03bc9f0267ff582040d98 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleUntil.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleUntil.java @@ -13,16 +13,10 @@ import de.prob.core.command.LtlCheckingCommand.PathType; */ public final class CounterExampleUntil extends CounterExampleBinaryOperator { - public CounterExampleUntil(final PathType pathType, final int loopEntry, + public CounterExampleUntil(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - super("U", "Until", pathType, loopEntry, firstArgument, secondArgument); - } - - public CounterExampleUntil(final PathType pathType, - final CounterExampleProposition firstArgument, - final CounterExampleProposition secondArgument) { - this(pathType, -1, firstArgument, secondArgument); + super("U", "Until", counterExample, firstArgument, secondArgument); } @Override diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleWeakUntil.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleWeakUntil.java index 0b67b8cde49ea5140fc2d019f778a28987352c0b..41fc7023b12c5ee8a0aefe89c637ca3cce50ee45 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleWeakUntil.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleWeakUntil.java @@ -5,7 +5,6 @@ import java.util.Arrays; import java.util.List; import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.logging.Logger; /** * Provides a "weak until" operator. @@ -15,63 +14,51 @@ import de.prob.logging.Logger; */ public final class CounterExampleWeakUntil extends CounterExampleBinaryOperator { - private final CounterExampleRelease release; - private final CounterExampleDisjunction or1; - private final CounterExampleDisjunction or2; - - public CounterExampleWeakUntil(final PathType pathType, - final int loopEntry, final CounterExampleProposition firstArgument, + public CounterExampleWeakUntil(final CounterExample counterExample, + final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - super("W", "Weak Until", pathType, loopEntry, firstArgument, - secondArgument); + super("W", "Weak Until", counterExample, firstArgument, secondArgument); - release = new CounterExampleRelease(pathType, loopEntry, - secondArgument, new CounterExampleDisjunction(pathType, - loopEntry, secondArgument, firstArgument)); + checkByRelease(counterExample, firstArgument, secondArgument); + checkByUntil(counterExample, firstArgument, secondArgument); + } - CounterExampleNegation not = new CounterExampleNegation(pathType, - loopEntry, firstArgument); + private void checkByUntil(final CounterExample counterExample, + final CounterExampleProposition firstArgument, + final CounterExampleProposition secondArgument) { + CounterExampleNegation not = new CounterExampleNegation(counterExample, + firstArgument); CounterExampleValueType[] trueValues = new CounterExampleValueType[firstArgument .getValues().size()]; Arrays.fill(trueValues, CounterExampleValueType.TRUE); - CounterExamplePredicate truePredicate = new CounterExamplePredicate( - pathType, loopEntry, Arrays.asList(trueValues)); + CounterExamplePredicate truePredicate = new CounterExamplePredicate("", + counterExample, Arrays.asList(trueValues)); - CounterExampleNegation notUntil = new CounterExampleNegation(pathType, - loopEntry, new CounterExampleUntil(pathType, loopEntry, + CounterExampleNegation notUntil = new CounterExampleNegation( + counterExample, new CounterExampleUntil(counterExample, truePredicate, not)); - CounterExampleUntil until = new CounterExampleUntil(pathType, - loopEntry, firstArgument, secondArgument); + CounterExampleUntil until = new CounterExampleUntil(counterExample, + firstArgument, secondArgument); - or1 = new CounterExampleDisjunction(pathType, loopEntry, notUntil, - until); - or2 = new CounterExampleDisjunction(pathType, loopEntry, until, - new CounterExampleGlobally(pathType, loopEntry, firstArgument)); + addCheck(new CounterExampleDisjunction(counterExample, notUntil, until)); + addCheck(new CounterExampleDisjunction(counterExample, until, + new CounterExampleGlobally(counterExample, firstArgument))); } - public CounterExampleWeakUntil(final PathType pathType, + private void checkByRelease(final CounterExample counterExample, final CounterExampleProposition firstArgument, final CounterExampleProposition secondArgument) { - this(pathType, -1, firstArgument, secondArgument); + addCheck(new CounterExampleRelease(counterExample, secondArgument, + new CounterExampleDisjunction(counterExample, secondArgument, + firstArgument))); } @Override protected CounterExampleValueType calculate(final int position) { - final CounterExampleValueType value = calculateWeakUntilOperator(position); - - Logger.assertProB("Weak Until invalid", value == release.getValues() - .get(position)); - - Logger.assertProB("Weak Until invalid", - value == or1.getValues().get(position)); - - Logger.assertProB("Weak Until invalid", - value == or2.getValues().get(position)); - - return value; + return calculateWeakUntilOperator(position); } private CounterExampleValueType calculateWeakUntilOperator( diff --git a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleYesterday.java b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleYesterday.java index 663d650e7aa6f6ab317516faa69f53122f79ce14..6e76f1979ba1bb2ef1965095015368bbe16434fd 100644 --- a/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleYesterday.java +++ b/de.prob.core/src/de/prob/core/domainobjects/ltl/CounterExampleYesterday.java @@ -3,8 +3,6 @@ package de.prob.core.domainobjects.ltl; import java.util.ArrayList; import java.util.List; -import de.prob.core.command.LtlCheckingCommand.PathType; - /** * Provides a "yesterday" operator. * @@ -13,14 +11,9 @@ import de.prob.core.command.LtlCheckingCommand.PathType; */ public final class CounterExampleYesterday extends CounterExampleUnaryOperator { - public CounterExampleYesterday(final PathType pathType, - final int loopEntry, final CounterExampleProposition argument) { - super("Y", "Yesterday", pathType, loopEntry, argument); - } - - public CounterExampleYesterday(final PathType pathType, + public CounterExampleYesterday(final CounterExample counterExample, final CounterExampleProposition argument) { - this(pathType, -1, argument); + super("Y", "Yesterday", counterExample, argument); } @Override diff --git a/de.prob.core/src/de/prob/core/internal/AnimatorImpl.java b/de.prob.core/src/de/prob/core/internal/AnimatorImpl.java index 36f836b0690414819d8bef12b2579da59e68cfd7..278252caae2cede3dfbfa1351626e4580430582b 100644 --- a/de.prob.core/src/de/prob/core/internal/AnimatorImpl.java +++ b/de.prob.core/src/de/prob/core/internal/AnimatorImpl.java @@ -189,12 +189,10 @@ public class AnimatorImpl { final Start ast = sendCommandImpl(query); Map<String, PrologTerm> bindings; try { - bindings = BindingGenerator - .createBindingMustNotFail(query, ast); + bindings = BindingGenerator.createBindingMustNotFail(query, ast); } catch (de.prob.parser.ResultParserException e) { - CommandException commandException = new CommandException(e.getLocalizedMessage(), e); - commandException.notifyUserOnce(); - throw commandException; + Logger.notifyUser(e.getMessage()); + throw new CommandException(e.getMessage()); } return new SimplifiedROMap<String, PrologTerm>(bindings); } diff --git a/de.prob.core/src/de/prob/eventb/translator/AbstractComponentTranslator.java b/de.prob.core/src/de/prob/eventb/translator/AbstractComponentTranslator.java index 25be5558b80be28bb96fd42eca4530acf9614932..5e64e8e77dfd79a432892d127cd75f5725e3e2fc 100644 --- a/de.prob.core/src/de/prob/eventb/translator/AbstractComponentTranslator.java +++ b/de.prob.core/src/de/prob/eventb/translator/AbstractComponentTranslator.java @@ -21,5 +21,7 @@ public abstract class AbstractComponentTranslator { public Map<Node, IInternalElement> getLabelMapping() { return Collections.unmodifiableMap(labelMapping); } + + abstract public String getResource(); } \ No newline at end of file diff --git a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java index f255824128ce8947bcc0dbf36454b616147fddd1..340c94557f3d396764624d39a1ab2a831fc80e26 100644 --- a/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java +++ b/de.prob.core/src/de/prob/eventb/translator/ContextTranslator.java @@ -13,9 +13,15 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import org.apache.commons.lang.StringUtils; import org.eclipse.core.runtime.Assert; +import org.eventb.core.IAxiom; import org.eventb.core.IContextRoot; import org.eventb.core.IExtendsContext; +import org.eventb.core.IPOSequent; +import org.eventb.core.IPOSource; +import org.eventb.core.IPSRoot; +import org.eventb.core.IPSStatus; import org.eventb.core.ISCAxiom; import org.eventb.core.ISCCarrierSet; import org.eventb.core.ISCConstant; @@ -26,12 +32,16 @@ import org.eventb.core.ISCInternalContext; import org.eventb.core.ISCMachineRoot; import org.eventb.core.ast.FormulaFactory; import org.eventb.core.ast.ITypeEnvironment; +import org.eventb.core.seqprover.IConfidence; +import org.rodinp.core.IRodinElement; import org.rodinp.core.IRodinFile; +import org.rodinp.core.IRodinProject; import org.rodinp.core.RodinDBException; +import de.be4.classicalb.core.parser.analysis.pragma.internal.ClassifiedPragma; import de.be4.classicalb.core.parser.node.AAxiomsContextClause; import de.be4.classicalb.core.parser.node.AConstantsContextClause; -import de.be4.classicalb.core.parser.node.ADeferredSet; +import de.be4.classicalb.core.parser.node.ADeferredSetSet; import de.be4.classicalb.core.parser.node.AEventBContextParseUnit; import de.be4.classicalb.core.parser.node.AExtendsContextClause; import de.be4.classicalb.core.parser.node.AIdentifierExpression; @@ -42,13 +52,19 @@ import de.be4.classicalb.core.parser.node.PExpression; import de.be4.classicalb.core.parser.node.PPredicate; import de.be4.classicalb.core.parser.node.PSet; import de.be4.classicalb.core.parser.node.TIdentifierLiteral; +import de.hhu.stups.sablecc.patch.SourcePosition; import de.prob.core.translator.TranslationFailedException; +import de.prob.eventb.translator.internal.DischargedProof; +import de.prob.logging.Logger; public final class ContextTranslator extends AbstractComponentTranslator { + private static final SourcePosition NO_POS = new SourcePosition(-1, -1); private final ISCContext context; private final AEventBContextParseUnit model = new AEventBContextParseUnit(); private final Map<String, ISCContext> depContext = new HashMap<String, ISCContext>(); + private final List<DischargedProof> proofs = new ArrayList<DischargedProof>(); + private final List<ClassifiedPragma> proofspragmas = new ArrayList<ClassifiedPragma>(); private final FormulaFactory ff; // Confined in the thread calling the factory method @@ -86,14 +102,73 @@ public final class ContextTranslator extends AbstractComponentTranslator { ISCContextRoot context_root = (ISCContextRoot) context; Assert.isTrue(context_root.getRodinFile().isConsistent()); te = context_root.getTypeEnvironment(ff); + collectProofInfo(context_root); } else if (context instanceof ISCInternalContext) { ISCInternalContext context_internal = (ISCInternalContext) context; + + try { + + String elementName = context_internal.getElementName(); + IRodinProject rodinProject = context_internal.getRodinProject(); + IRodinFile rodinFile = rodinProject.getRodinFile(elementName + + ".bcc"); + if (rodinFile.exists()) { + ISCContextRoot root = (ISCContextRoot) rodinFile.getRoot(); + collectProofInfo(root); + } + } catch (Exception e) { + // We do not guarantee to include proof infos. If something goes + // wrong, we ignore the Proof info. + } + ISCMachineRoot machine_root = (ISCMachineRoot) context_internal .getRoot(); Assert.isTrue(machine_root.getRodinFile().isConsistent()); te = machine_root.getTypeEnvironment(ff); } translateContext(); + } + + private void collectProofInfo(ISCContextRoot context_root) + throws RodinDBException { + + IPSRoot proofStatus = context_root.getPSRoot(); + IPSStatus[] statuses = proofStatus.getStatuses(); + + List<String> bugs = new LinkedList<String>(); + + for (IPSStatus status : statuses) { + final int confidence = status.getConfidence(); + boolean broken = status.isBroken(); + if (!broken && confidence == IConfidence.DISCHARGED_MAX) { + IPOSequent sequent = status.getPOSequent(); + IPOSource[] sources = sequent.getSources(); + + for (IPOSource source : sources) { + + IRodinElement srcElement = source.getSource(); + if (!srcElement.exists()) { + bugs.add(status.getElementName()); + break; + } + + if (srcElement instanceof IAxiom) { + IAxiom tmp = (IAxiom) srcElement; + if (((IContextRoot) tmp.getParent()) + .equals(context_root.getContextRoot())) { + proofs.add(new DischargedProof(context_root, tmp, + null)); + } + } + } + } + } + + if (!bugs.isEmpty()) { + String message = "Translation incomplete due to a Bug in Rodin. This does not affect correctness of the Animation/Model Checking but can decrease its performance. Skipped discharged information about: " + + StringUtils.join(bugs, ","); + Logger.notifyUser(message); + } } @@ -190,7 +265,7 @@ public final class ContextTranslator extends AbstractComponentTranslator { final ISCCarrierSet[] carrierSets = context.getSCCarrierSets(); final List<PSet> setList = new ArrayList<PSet>(carrierSets.length); for (final ISCCarrierSet carrierSet : carrierSets) { - final ADeferredSet deferredSet = new ADeferredSet( + final ADeferredSetSet deferredSet = new ADeferredSetSet( Arrays.asList(new TIdentifierLiteral[] { new TIdentifierLiteral( carrierSet.getIdentifierString()) })); setList.add(deferredSet); @@ -238,11 +313,28 @@ public final class ContextTranslator extends AbstractComponentTranslator { final PredicateVisitor visitor = new PredicateVisitor( new LinkedList<String>()); element.getPredicate(ff, te).accept(visitor); + final PPredicate predicate = visitor.getPredicate(); list.add(predicate); labelMapping.put(predicate, element); + proofspragmas.add(new ClassifiedPragma("discharged", predicate, + Arrays.asList(new String[0]), Arrays.asList(new String[0]), + NO_POS, NO_POS)); } return list; } + public List<DischargedProof> getProofs() { + return proofs; + } + + public List<ClassifiedPragma> getProofspragmas() { + return proofspragmas; + } + + @Override + public String getResource() { + return context.getComponentName(); + } + } diff --git a/de.prob.core/src/de/prob/eventb/translator/ExpressionVisitor.java b/de.prob.core/src/de/prob/eventb/translator/ExpressionVisitor.java index fdf995104cc7703f52fb91ea69900f855db45812..49af627156fefc608f681e454c9291c95f2d0803 100644 --- a/de.prob.core/src/de/prob/eventb/translator/ExpressionVisitor.java +++ b/de.prob.core/src/de/prob/eventb/translator/ExpressionVisitor.java @@ -31,6 +31,8 @@ import org.eventb.core.ast.UnaryExpression; import de.be4.classicalb.core.parser.node.AAddExpression; import de.be4.classicalb.core.parser.node.ABoolSetExpression; +import de.be4.classicalb.core.parser.node.ABooleanFalseExpression; +import de.be4.classicalb.core.parser.node.ABooleanTrueExpression; import de.be4.classicalb.core.parser.node.ACardExpression; import de.be4.classicalb.core.parser.node.ACartesianProductExpression; import de.be4.classicalb.core.parser.node.ACompositionExpression; @@ -48,7 +50,6 @@ import de.be4.classicalb.core.parser.node.AEventBFirstProjectionV2Expression; import de.be4.classicalb.core.parser.node.AEventBIdentityExpression; import de.be4.classicalb.core.parser.node.AEventBSecondProjectionExpression; import de.be4.classicalb.core.parser.node.AEventBSecondProjectionV2Expression; -import de.be4.classicalb.core.parser.node.AFalseExpression; import de.be4.classicalb.core.parser.node.AFunctionExpression; import de.be4.classicalb.core.parser.node.AGeneralIntersectionExpression; import de.be4.classicalb.core.parser.node.AGeneralUnionExpression; @@ -93,8 +94,7 @@ import de.be4.classicalb.core.parser.node.ATotalInjectionExpression; import de.be4.classicalb.core.parser.node.ATotalRelationExpression; import de.be4.classicalb.core.parser.node.ATotalSurjectionExpression; import de.be4.classicalb.core.parser.node.ATotalSurjectionRelationExpression; -import de.be4.classicalb.core.parser.node.ATrueExpression; -import de.be4.classicalb.core.parser.node.AUnaryExpression; +import de.be4.classicalb.core.parser.node.AUnaryMinusExpression; import de.be4.classicalb.core.parser.node.AUnionExpression; import de.be4.classicalb.core.parser.node.PExpression; import de.be4.classicalb.core.parser.node.PPredicate; @@ -530,10 +530,10 @@ public class ExpressionVisitor extends SimpleVisitorAdapter implements // NOPMD setExpression(new ABoolSetExpression()); break; case Formula.TRUE: - setExpression(new ATrueExpression()); + setExpression(new ABooleanTrueExpression()); break; case Formula.FALSE: - setExpression(new AFalseExpression()); + setExpression(new ABooleanFalseExpression()); break; case Formula.EMPTYSET: setExpression(new AEmptySetExpression()); @@ -696,7 +696,7 @@ public class ExpressionVisitor extends SimpleVisitorAdapter implements // NOPMD setExpression(reverseExpression); break; case Formula.UNMINUS: - final AUnaryExpression unaryExpression = new AUnaryExpression(); + final AUnaryMinusExpression unaryExpression = new AUnaryMinusExpression(); unaryExpression.setExpression(exp); setExpression(unaryExpression); break; diff --git a/de.prob.core/src/de/prob/eventb/translator/PredicateVisitor.java b/de.prob.core/src/de/prob/eventb/translator/PredicateVisitor.java index 9ebdb79eae5f81a8caad9fdc7d3a63870775eca8..7094ecabecf5f2ed6abe1799ca4bca63ff594463 100644 --- a/de.prob.core/src/de/prob/eventb/translator/PredicateVisitor.java +++ b/de.prob.core/src/de/prob/eventb/translator/PredicateVisitor.java @@ -25,29 +25,29 @@ import org.eventb.core.ast.RelationalPredicate; import org.eventb.core.ast.SimplePredicate; import org.eventb.core.ast.UnaryPredicate; -import de.be4.classicalb.core.parser.node.ABelongPredicate; import de.be4.classicalb.core.parser.node.AConjunctPredicate; import de.be4.classicalb.core.parser.node.ADisjunctPredicate; import de.be4.classicalb.core.parser.node.AEqualPredicate; import de.be4.classicalb.core.parser.node.AEquivalencePredicate; -import de.be4.classicalb.core.parser.node.AExistentialQuantificationPredicate; -import de.be4.classicalb.core.parser.node.AFalsePredicate; +import de.be4.classicalb.core.parser.node.AExistsPredicate; +import de.be4.classicalb.core.parser.node.AFalsityPredicate; import de.be4.classicalb.core.parser.node.AFinitePredicate; +import de.be4.classicalb.core.parser.node.AForallPredicate; import de.be4.classicalb.core.parser.node.AGreaterEqualPredicate; import de.be4.classicalb.core.parser.node.AGreaterPredicate; import de.be4.classicalb.core.parser.node.AImplicationPredicate; -import de.be4.classicalb.core.parser.node.AIncludePredicate; -import de.be4.classicalb.core.parser.node.AIncludeStrictlyPredicate; import de.be4.classicalb.core.parser.node.ALessEqualPredicate; import de.be4.classicalb.core.parser.node.ALessPredicate; +import de.be4.classicalb.core.parser.node.AMemberPredicate; import de.be4.classicalb.core.parser.node.ANegationPredicate; -import de.be4.classicalb.core.parser.node.ANotBelongPredicate; -import de.be4.classicalb.core.parser.node.ANotIncludePredicate; -import de.be4.classicalb.core.parser.node.ANotIncludeStrictlyPredicate; +import de.be4.classicalb.core.parser.node.ANotEqualPredicate; +import de.be4.classicalb.core.parser.node.ANotMemberPredicate; +import de.be4.classicalb.core.parser.node.ANotSubsetPredicate; +import de.be4.classicalb.core.parser.node.ANotSubsetStrictPredicate; import de.be4.classicalb.core.parser.node.APartitionPredicate; -import de.be4.classicalb.core.parser.node.ATruePredicate; -import de.be4.classicalb.core.parser.node.AUnequalPredicate; -import de.be4.classicalb.core.parser.node.AUniversalQuantificationPredicate; +import de.be4.classicalb.core.parser.node.ASubsetPredicate; +import de.be4.classicalb.core.parser.node.ASubsetStrictPredicate; +import de.be4.classicalb.core.parser.node.ATruthPredicate; import de.be4.classicalb.core.parser.node.PExpression; import de.be4.classicalb.core.parser.node.PPredicate; import de.prob.eventb.translator.internal.SimpleVisitorAdapter; @@ -76,6 +76,9 @@ public class PredicateVisitor extends SimpleVisitorAdapter implements // NOPMD predicateSet = true; this.p = p; } + //public ClassifiedPragma(String name, Node attachedTo, List<String> arguments, List<String> warnings, SourcePosition start, SourcePosition end) { + + // new ClassifiedPragma("discharged", p, proof, Collections.emptyList(), new SourcePosition(-1, -1), new SourcePosition(-1, -1)); } public PredicateVisitor(final LinkedList<String> bounds) { @@ -118,18 +121,18 @@ public class PredicateVisitor extends SimpleVisitorAdapter implements // NOPMD switch (tag) { case Formula.EXISTS: - final AExistentialQuantificationPredicate existentialQuantificationPredicate = new AExistentialQuantificationPredicate(); + final AExistsPredicate existentialQuantificationPredicate = new AExistsPredicate(); existentialQuantificationPredicate.setIdentifiers(list); existentialQuantificationPredicate.setPredicate(predicateVisitor .getPredicate()); setPredicate(existentialQuantificationPredicate); break; case Formula.FORALL: - final AUniversalQuantificationPredicate universalQuantificationPredicate = new AUniversalQuantificationPredicate(); + final AForallPredicate universalQuantificationPredicate = new AForallPredicate(); universalQuantificationPredicate.setIdentifiers(list); PPredicate pred = predicateVisitor.getPredicate(); if (!(pred instanceof AImplicationPredicate)) { - pred = new AImplicationPredicate(new ATruePredicate(), pred); + pred = new AImplicationPredicate(new ATruthPredicate(), pred); } universalQuantificationPredicate.setImplication(pred); setPredicate(universalQuantificationPredicate); @@ -249,10 +252,10 @@ public class PredicateVisitor extends SimpleVisitorAdapter implements // NOPMD final int tag = predicate.getTag(); switch (tag) { case Formula.BTRUE: - setPredicate(new ATruePredicate()); + setPredicate(new ATruthPredicate()); break; case Formula.BFALSE: - setPredicate(new AFalsePredicate()); + setPredicate(new AFalsityPredicate()); break; default: @@ -280,7 +283,7 @@ public class PredicateVisitor extends SimpleVisitorAdapter implements // NOPMD setPredicate(equalPredicate); break; case Formula.NOTEQUAL: - final AUnequalPredicate unequalPredicate = new AUnequalPredicate(); + final ANotEqualPredicate unequalPredicate = new ANotEqualPredicate(); unequalPredicate.setLeft(subLeft.getExpression()); unequalPredicate.setRight(subRight.getExpression()); setPredicate(unequalPredicate); @@ -312,37 +315,37 @@ public class PredicateVisitor extends SimpleVisitorAdapter implements // NOPMD break; case Formula.IN: - final ABelongPredicate inPredicate = new ABelongPredicate(); + final AMemberPredicate inPredicate = new AMemberPredicate(); inPredicate.setLeft(subLeft.getExpression()); inPredicate.setRight(subRight.getExpression()); setPredicate(inPredicate); break; case Formula.NOTIN: - final ANotBelongPredicate ninPredicate = new ANotBelongPredicate(); + final ANotMemberPredicate ninPredicate = new ANotMemberPredicate(); ninPredicate.setLeft(subLeft.getExpression()); ninPredicate.setRight(subRight.getExpression()); setPredicate(ninPredicate); break; case Formula.SUBSET: - final AIncludeStrictlyPredicate strictSubsetPredicate = new AIncludeStrictlyPredicate(); + final ASubsetStrictPredicate strictSubsetPredicate = new ASubsetStrictPredicate(); strictSubsetPredicate.setLeft(subLeft.getExpression()); strictSubsetPredicate.setRight(subRight.getExpression()); setPredicate(strictSubsetPredicate); break; case Formula.NOTSUBSET: - final ANotIncludeStrictlyPredicate notStrictSubsetPredicate = new ANotIncludeStrictlyPredicate(); + final ANotSubsetStrictPredicate notStrictSubsetPredicate = new ANotSubsetStrictPredicate(); notStrictSubsetPredicate.setLeft(subLeft.getExpression()); notStrictSubsetPredicate.setRight(subRight.getExpression()); setPredicate(notStrictSubsetPredicate); break; case Formula.SUBSETEQ: - final AIncludePredicate subsetPredicate = new AIncludePredicate(); + final ASubsetPredicate subsetPredicate = new ASubsetPredicate(); subsetPredicate.setLeft(subLeft.getExpression()); subsetPredicate.setRight(subRight.getExpression()); setPredicate(subsetPredicate); break; case Formula.NOTSUBSETEQ: - final ANotIncludePredicate notSubsetPredicate = new ANotIncludePredicate(); + final ANotSubsetPredicate notSubsetPredicate = new ANotSubsetPredicate(); notSubsetPredicate.setLeft(subLeft.getExpression()); notSubsetPredicate.setRight(subRight.getExpression()); setPredicate(notSubsetPredicate); diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/DischargedProof.java b/de.prob.core/src/de/prob/eventb/translator/internal/DischargedProof.java index fb26c2d76db70579408323f7c020cb1154280976..98d690d6d5b788ca04e6eca4972a1ad98aa1f776 100644 --- a/de.prob.core/src/de/prob/eventb/translator/internal/DischargedProof.java +++ b/de.prob.core/src/de/prob/eventb/translator/internal/DischargedProof.java @@ -9,19 +9,42 @@ */ package de.prob.eventb.translator.internal; +import org.eventb.core.IAxiom; import org.eventb.core.IEvent; +import org.eventb.core.IEventBRoot; import org.eventb.core.IInvariant; -import org.eventb.core.IMachineRoot; +import org.rodinp.core.RodinDBException; public class DischargedProof { - public final IInvariant invariant; + public final String predicate; public final IEvent event; - public final IMachineRoot machine; + public final IEventBRoot machine; - public DischargedProof(final IMachineRoot root, final IInvariant inv, + public DischargedProof(final IEventBRoot root, final IInvariant inv, final IEvent evt) { machine = root; - invariant = inv; + String p; + try { + p = inv.getLabel(); + } catch (RodinDBException e) { + p = ""; + e.printStackTrace(); + } + predicate = p; + event = evt; + } + + public DischargedProof(final IEventBRoot root, final IAxiom inv, + final IEvent evt) { + machine = root; + String p; + try { + p = inv.getLabel(); + } catch (RodinDBException e) { + p = ""; + e.printStackTrace(); + } + predicate = p; event = evt; } } \ No newline at end of file diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/EventBContextTranslator.java b/de.prob.core/src/de/prob/eventb/translator/internal/EventBContextTranslator.java index 00bcb019eb44f2cf08dca58f4df5a3e706f83d9a..ae640ff98a9c1d84b2014b850b42db0f3c2058f3 100644 --- a/de.prob.core/src/de/prob/eventb/translator/internal/EventBContextTranslator.java +++ b/de.prob.core/src/de/prob/eventb/translator/internal/EventBContextTranslator.java @@ -52,7 +52,7 @@ public final class EventBContextTranslator extends EventBTranslator { private void constructTranslation(final IPrologTermOutput pto) throws TranslationFailedException { List<ContextTranslator> translators = new ArrayList<ContextTranslator>(); - translators.add(ContextTranslator.create(context)); +// translators.add(ContextTranslator.create(context)); if (context instanceof ISCContextRoot) { ISCContextRoot root = (ISCContextRoot) context; collectContexts(translators, new ArrayList<String>(), root); diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/EventBTranslator.java b/de.prob.core/src/de/prob/eventb/translator/internal/EventBTranslator.java index 6f0abac0ea06db6494470811d7d5270f98826171..54eb566182fa3856b663293d6f4072e46f81e82b 100644 --- a/de.prob.core/src/de/prob/eventb/translator/internal/EventBTranslator.java +++ b/de.prob.core/src/de/prob/eventb/translator/internal/EventBTranslator.java @@ -11,6 +11,7 @@ import java.util.Collection; import java.util.Map; import org.eclipse.core.runtime.Assert; +import org.eventb.core.IEvent; import org.eventb.core.IEventBProject; import org.eventb.core.IEventBRoot; import org.eventb.core.ISCInternalContext; @@ -52,7 +53,7 @@ public abstract class EventBTranslator implements ITranslator { for (AbstractComponentTranslator t : translators) { final Map<Node, IInternalElement> labelMapping = t .getLabelMapping(); - printer.addNodes(labelMapping); + printer.addNodes(labelMapping, t.getResource()); } return printer; } @@ -84,25 +85,37 @@ public abstract class EventBTranslator implements ITranslator { private void printProofInformation( final Collection<ModelTranslator> refinementChainTranslators, + Collection<ContextTranslator> contextTranslators, final IPrologTermOutput pout) throws TranslationFailedException { + + ArrayList<DischargedProof> list = new ArrayList<DischargedProof>(); + + for (ContextTranslator contextTranslator : contextTranslators) { + list.addAll(contextTranslator.getProofs()); + } for (ModelTranslator modelTranslator : refinementChainTranslators) { - for (DischargedProof proof : modelTranslator.getProofs()) { - pout.openTerm("discharged"); - pout.printAtom(proof.machine.getRodinFile().getBareName()); - try { - final String label = proof.event.getLabel(); - final String elementName = proof.invariant.getLabel(); - pout.printAtom(label); - pout.printAtom(elementName); - } catch (RodinDBException e) { - final String details = "Translation error while getting information about discharged proof obligations"; - throw new TranslationFailedException(name, details); - } - - pout.closeTerm(); + list.addAll(modelTranslator.getProofs()); + } + + for (DischargedProof proof : list) { + pout.openTerm("discharged"); + pout.printAtom(proof.machine.getRodinFile().getBareName()); + try { + IEvent event = proof.event; + final String elementName = proof.predicate; + if (event != null) + pout.printAtom(event.getLabel()); + pout.printAtom(elementName); + } catch (RodinDBException e) { + final String details = "Translation error while getting information about discharged proof obligations"; + throw new TranslationFailedException(name, details); } + + pout.closeTerm(); } - if (System.getProperty("flow") != null) printFlowInformation(pout); + + if (System.getProperty("flow") != null) + printFlowInformation(pout); } protected abstract void printFlowInformation(final IPrologTermOutput pout); @@ -128,7 +141,8 @@ public abstract class EventBTranslator implements ITranslator { printModels(refinementChainTranslators, pout, prolog); printContexts(contextTranslators, pout, prolog); pout.openList(); - printProofInformation(refinementChainTranslators, pout); + printProofInformation(refinementChainTranslators, contextTranslators, + pout); pout.closeList(); pout.printVariable("_Error"); pout.closeTerm(); diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/LabelPositionPrinter.java b/de.prob.core/src/de/prob/eventb/translator/internal/LabelPositionPrinter.java index 49aa39a67a5ce3c76325e3e26787f217a40aa83e..0fd5ac40ff00f0c6d0868712f06cfccc79039a3e 100644 --- a/de.prob.core/src/de/prob/eventb/translator/internal/LabelPositionPrinter.java +++ b/de.prob.core/src/de/prob/eventb/translator/internal/LabelPositionPrinter.java @@ -35,15 +35,15 @@ public class LabelPositionPrinter implements PositionPrinter { private final Map<Node, NodeInfo> nodeInfos = new ConcurrentHashMap<Node, NodeInfo>(); - public void addNode(final Node node, final IInternalElement element) - throws TranslationFailedException { + public void addNode(final Node node, final IInternalElement element, + String file) throws TranslationFailedException { final String label, source; + try { if (element instanceof ITraceableElement) { // get name of unchecked element IRodinElement traceableSource; traceableSource = ((ITraceableElement) element).getSource(); - source = traceableSource.getElementName(); } else { source = null; @@ -53,7 +53,8 @@ public class LabelPositionPrinter implements PositionPrinter { } else { label = null; } - addNode(node, label, source); + + addNode(node, label, source, file); } catch (RodinDBException e) { final String message = "A Rodin exception occured during translation process, you can try to fix that by cleaning the project. Original Exception: "; throw new TranslationFailedException(element.getElementName(), @@ -61,19 +62,19 @@ public class LabelPositionPrinter implements PositionPrinter { } } - public void addNodes(final Map<Node, IInternalElement> nodeMapping) - throws TranslationFailedException { + public void addNodes(final Map<Node, IInternalElement> nodeMapping, + String name) throws TranslationFailedException { for (Entry<Node, IInternalElement> item : nodeMapping.entrySet()) { final Node key = item.getKey(); final IInternalElement value = item.getValue(); - addNode(key, value); + addNode(key, value, name); } } private void addNode(final Node node, final String label, - final String elementName) { + final String elementName, String file) { if (label != null || elementName != null) { - nodeInfos.put(node, new NodeInfo(label, elementName)); + nodeInfos.put(node, new NodeInfo(label, elementName, file)); } } @@ -83,6 +84,11 @@ public class LabelPositionPrinter implements PositionPrinter { pout.printAtom("none"); } else { pout.openTerm("rodinpos"); + if (info.file == null) { + pout.emptyList(); + } else { + pout.printAtom(info.file); + } if (info.label == null) { pout.emptyList(); } else { @@ -104,11 +110,14 @@ public class LabelPositionPrinter implements PositionPrinter { private static class NodeInfo { private final String label; private final String elementName; + private final String file; - public NodeInfo(final String label, final String elementName) { + public NodeInfo(final String label, final String elementName, + String file) { super(); this.label = label; this.elementName = elementName; + this.file = file; } } diff --git a/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java b/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java index da2420757d7e21218a8db087ee1f8f1f6f8f9b1e..ba6f53a2ec7b4238cc99f87f50a16c33226f7132 100644 --- a/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java +++ b/de.prob.core/src/de/prob/eventb/translator/internal/ModelTranslator.java @@ -195,12 +195,14 @@ public class ModelTranslator extends AbstractComponentTranslator { if (((IMachineRoot) tmp.getParent()).equals(origin)) { inv = tmp; } - } } if (evt != null && inv != null) { proofs.add(new DischargedProof(origin, inv, evt)); } + if (evt == null && inv != null && inv.isTheorem()) { + proofs.add(new DischargedProof(origin, inv, evt)); + } } } @@ -525,4 +527,9 @@ public class ModelTranslator extends AbstractComponentTranslator { return result; } + @Override + public String getResource() { + return machine.getComponentName(); + } + } diff --git a/de.prob.core/src/de/prob/eventb/translator2/EMFEventBTranslator.java b/de.prob.core/src/de/prob/eventb/translator2/EMFEventBTranslator.java new file mode 100644 index 0000000000000000000000000000000000000000..828469e7652b0f8453cf1c43a1404e66ee8cd8c1 --- /dev/null +++ b/de.prob.core/src/de/prob/eventb/translator2/EMFEventBTranslator.java @@ -0,0 +1,63 @@ +package de.prob.eventb.translator2; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.eclipse.emf.common.util.EList; +import org.eventb.core.IEventBRoot; +import org.eventb.emf.core.EventBNamedCommentedComponentElement; +import org.eventb.emf.core.Project; +import org.eventb.emf.core.context.CarrierSet; +import org.eventb.emf.core.context.Context; +import org.eventb.emf.core.machine.Machine; +import org.eventb.emf.persistence.ProjectResource; +import org.rodinp.core.IRodinProject; + +import de.be4.classicalb.core.parser.node.ADeferredSetSet; +import de.be4.classicalb.core.parser.node.PSet; +import de.be4.classicalb.core.parser.node.TIdentifierLiteral; +import de.prob.prolog.output.IPrologTermOutput; + +public class EMFEventBTranslator { + private final Project project; + + public EMFEventBTranslator(IEventBRoot main) { + IRodinProject rodinProject = main.getRodinProject(); + ProjectResource resource = new ProjectResource(rodinProject); + try { + resource.load(null); + } catch (IOException e) { + e.printStackTrace(); + } + project = (Project) resource.getContents().get(0); + } + + public void print(IPrologTermOutput pto) { + for (EventBNamedCommentedComponentElement e : project.getComponents()) { + if (e instanceof Context) { + printContext(pto, (Context) e); + } else { + printMachine(pto, (Machine) e); + } + } + } + + public void printContext(IPrologTermOutput pto, Context c) { + EList<CarrierSet> sets = c.getSets(); + final List<PSet> setList = new ArrayList<PSet>(sets.size()); + for (CarrierSet s : sets) { + final ADeferredSetSet deferredSet = new ADeferredSetSet( + Arrays.asList(new TIdentifierLiteral[] { new TIdentifierLiteral( + s.getName()) })); + setList.add(deferredSet); + } + + } + + public void printMachine(IPrologTermOutput pto, Machine m) { + + } + +} diff --git a/de.prob.core/src/de/prob/logging/Logger.java b/de.prob.core/src/de/prob/logging/Logger.java index 8780aa3023a0cd5596b3b27bcbaf5dc30151347c..678c5ddce1eba6f6d1eb83772c35177e8e8b3258 100644 --- a/de.prob.core/src/de/prob/logging/Logger.java +++ b/de.prob.core/src/de/prob/logging/Logger.java @@ -78,7 +78,8 @@ public final class Logger { /** * Check a property. The method notifies the user and throws an exception if * the assertion fails. <br> - * <b>Examples:</b><br>{@code Logger.assertProB(this.getClass(),"x != null", x + * <b>Examples:</b><br> + * {@code Logger.assertProB(this.getClass(),"x != null", x * != null); } <br> * {@code Logger.assertProB(this.getClass(),"x should not be null", x != null); } * <br> @@ -112,7 +113,8 @@ public final class Logger { /** * Failed assertion. The method notifies the user and throws an exception. <br> - * <b>Examples:</b><br>{@code if (!file.exists()) String message = + * <b>Examples:</b><br> + * {@code if (!file.exists()) String message = * "Called open on nonexisting file " + file; * Logger.assertProB(EditorPlugin.class, message); } * @@ -149,4 +151,8 @@ public final class Logger { private static void log(final IStatus status) { Activator.getDefault().getLog().log(status); } + + public static void notifyUserAboutWarningWithoutBugreport(String string) { + log(IStatus.WARNING, NOBUGREPORT, string, null); + } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleAllUnitTests.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleAllUnitTests.java index 3451725937018993e6f08fb6db1dea7dd94f8309..4799156dde7779b824f5cd04ae3f02dea53a3978 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleAllUnitTests.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleAllUnitTests.java @@ -4,14 +4,17 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) -@Suite.SuiteClasses({ CounterExampleFinallyUnitTest.class, - CounterExampleGloballyUnitTest.class, CounterExampleNextUnitTest.class, - CounterExampleUntilUnitTest.class, - CounterExampleWeakUntilUnitTest.class, +@Suite.SuiteClasses({ + CounterExampleFinallyUnitTest.class, + CounterExampleGloballyUnitTest.class, + CounterExampleNextUnitTest.class, + // CounterExampleUntilUnitTest.class, + // CounterExampleWeakUntilUnitTest.class, CounterExampleReleaseUnitTest.class, CounterExampleOnceUnitTest.class, CounterExampleHistoryUnitTest.class, CounterExampleYesterdayUnitTest.class, - CounterExampleSinceUnitTest.class, CounterExampleTriggerUnitTest.class, + // CounterExampleSinceUnitTest.class, + // CounterExampleTriggerUnitTest.class, CounterExampleNotUnitTest.class, CounterExampleAndUnitTest.class, CounterExampleOrUnitTest.class, CounterExampleImplyUnitTest.class }) public final class CounterExampleAllUnitTests { diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleAndUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleAndUnitTest.java index e318a0dbeb1270e45e7ccde56cea0b6cb6b050d6..c6c14c77fd74ea1b60f2f99f400f6233f3bd7810 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleAndUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleAndUnitTest.java @@ -7,7 +7,7 @@ import java.util.List; import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; import de.prob.core.domainobjects.ltl.CounterExampleConjunction; import de.prob.core.domainobjects.ltl.CounterExamplePredicate; @@ -26,83 +26,29 @@ public final class CounterExampleAndUnitTest { */ @Test public void testAndOnFinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator andOperator = new CounterExampleConjunction( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = andOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); + final LtlTestDescription d = LtlTestDescription.finite(4); + final CounterExampleProposition fst = d.addArgument("fst", "fttf"); + final CounterExampleProposition snd = d.addArgument("snd", "ttff"); + final CounterExampleBinaryOperator and = new CounterExampleConjunction( + d.getCounterExample(), fst, snd); + d.checkValues("and", and, "ftff"); // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = andOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = andOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); + d.expectedHighlight(0, "fstH", 0); + d.expectedHighlight(0, "sndH"); - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 0); + d.expectedHighlight(1, "fstH", 1); + d.expectedHighlight(1, "sndH", 1); - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); + d.expectedHighlight(2, "fstH"); + d.expectedHighlight(2, "sndH", 2); - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); + d.expectedHighlight(3, "fstH", 3); // If both are false, the first is + // chosen to be highlighted (could + // be different) + d.expectedHighlight(3, "sndH"); - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 0); + d.checkHighlights("and", and, "fstH", "sndH"); } /* @@ -126,18 +72,20 @@ public final class CounterExampleAndUnitTest { CounterExampleValueType.FALSE, CounterExampleValueType.FALSE }); + // using a loop with state 0 as entry point + final CounterExample ce0 = TestCounterExample.loop(0, 4); // Loop entry = 0 // create first argument CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); + "", ce0, firstArgumentValues); // create second argument CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); + "", ce0, secondArgumentValues); // create an operator CounterExampleBinaryOperator andOperator = new CounterExampleConjunction( - PathType.INFINITE, 0, firstArgument, secondArgument); + ce0, firstArgument, secondArgument); // check result values List<CounterExampleValueType> values = andOperator.getValues(); @@ -191,16 +139,17 @@ public final class CounterExampleAndUnitTest { // Loop entry = 1 // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + CounterExample ce1 = TestCounterExample.loop(1, 4); + firstArgument = new CounterExamplePredicate("", ce1, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + secondArgument = new CounterExamplePredicate("", ce1, secondArgumentValues); // create an operator - andOperator = new CounterExampleConjunction(PathType.INFINITE, 1, - firstArgument, secondArgument); + andOperator = new CounterExampleConjunction(ce1, firstArgument, + secondArgument); // check result values values = andOperator.getValues(); @@ -252,17 +201,18 @@ public final class CounterExampleAndUnitTest { assertTrue(secondHighlightedPositions.get(3).size() == 0); // Loop entry = 2 + CounterExample ce2 = TestCounterExample.loop(2, 4); // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + firstArgument = new CounterExamplePredicate("", ce2, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + secondArgument = new CounterExamplePredicate("", ce2, secondArgumentValues); // create an operator - andOperator = new CounterExampleConjunction(PathType.INFINITE, 2, - firstArgument, secondArgument); + andOperator = new CounterExampleConjunction(ce2, firstArgument, + secondArgument); // check result values values = andOperator.getValues(); @@ -314,17 +264,18 @@ public final class CounterExampleAndUnitTest { assertTrue(secondHighlightedPositions.get(3).size() == 0); // Loop entry = 3 + final CounterExample ce3 = TestCounterExample.loop(4, 4); // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + firstArgument = new CounterExamplePredicate("", ce3, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + secondArgument = new CounterExamplePredicate("", ce3, secondArgumentValues); // create an operator - andOperator = new CounterExampleConjunction(PathType.INFINITE, 3, - firstArgument, secondArgument); + andOperator = new CounterExampleConjunction(ce3, firstArgument, + secondArgument); // check result values values = andOperator.getValues(); @@ -397,17 +348,19 @@ public final class CounterExampleAndUnitTest { CounterExampleValueType.FALSE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.reduced(4); + // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator andOperator = new CounterExampleConjunction( - PathType.REDUCED, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = andOperator.getValues(); @@ -481,17 +434,18 @@ public final class CounterExampleAndUnitTest { CounterExampleValueType.UNKNOWN, CounterExampleValueType.UNKNOWN }); + final CounterExample ce = TestCounterExample.reduced(4); // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator andOperator = new CounterExampleConjunction( - PathType.REDUCED, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = andOperator.getValues(); diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleFinallyUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleFinallyUnitTest.java index c3ba9f582cb080db9a09b3a5e6ad164a819340b6..6306b0992bc67ca3a0427f9845926790a4eb36df 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleFinallyUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleFinallyUnitTest.java @@ -7,7 +7,7 @@ import java.util.List; import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.core.domainobjects.ltl.CounterExampleFinally; import de.prob.core.domainobjects.ltl.CounterExamplePredicate; import de.prob.core.domainobjects.ltl.CounterExampleProposition; @@ -31,13 +31,14 @@ public final class CounterExampleFinallyUnitTest { CounterExampleValueType.FALSE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.finite(4); // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.FINITE, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator finallyOperator = new CounterExampleFinally( - PathType.FINITE, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = finallyOperator @@ -84,13 +85,14 @@ public final class CounterExampleFinallyUnitTest { CounterExampleValueType.FALSE }); // Loop entry = 0 + final CounterExample ce0 = TestCounterExample.loop(0, 4); // create an argument CounterExampleProposition argument = new CounterExamplePredicate("", - PathType.INFINITE, 0, argumentValues); + ce0, argumentValues); // create an operator CounterExampleUnaryOperator finallyOperator = new CounterExampleFinally( - PathType.INFINITE, 0, argument); + ce0, argument); // check result values List<CounterExampleValueType> values = finallyOperator.getValues(); @@ -125,13 +127,12 @@ public final class CounterExampleFinallyUnitTest { new Integer[] { 1 })); // Loop entry = 1 + final CounterExample ce1 = TestCounterExample.loop(1, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 1, - argumentValues); + argument = new CounterExamplePredicate("", ce1, argumentValues); // create an operator - finallyOperator = new CounterExampleFinally(PathType.INFINITE, 1, - argument); + finallyOperator = new CounterExampleFinally(ce1, argument); // check result values values = finallyOperator.getValues(); @@ -165,13 +166,12 @@ public final class CounterExampleFinallyUnitTest { new Integer[] { 1 })); // Loop entry = 2 + final CounterExample ce2 = TestCounterExample.loop(2, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 2, - argumentValues); + argument = new CounterExamplePredicate("", ce2, argumentValues); // create an operator - finallyOperator = new CounterExampleFinally(PathType.INFINITE, 2, - argument); + finallyOperator = new CounterExampleFinally(ce2, argument); // check result values values = finallyOperator.getValues(); @@ -205,13 +205,12 @@ public final class CounterExampleFinallyUnitTest { new Integer[] { 3, 2 })); // Loop entry = 3 + final CounterExample ce3 = TestCounterExample.loop(3, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 3, - argumentValues); + argument = new CounterExamplePredicate("", ce3, argumentValues); // create an operator - finallyOperator = new CounterExampleFinally(PathType.INFINITE, 3, - argument); + finallyOperator = new CounterExampleFinally(ce3, argument); // check result values values = finallyOperator.getValues(); @@ -255,13 +254,14 @@ public final class CounterExampleFinallyUnitTest { CounterExampleValueType.FALSE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.reduced(4); // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator finallyOperator = new CounterExampleFinally( - PathType.REDUCED, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = finallyOperator diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleGloballyUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleGloballyUnitTest.java index 2cf945c710eb9791fe189b99f2e571605dfd3645..5688ff428550e28d7fe2f2c0eb1a22c868451b28 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleGloballyUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleGloballyUnitTest.java @@ -7,7 +7,7 @@ import java.util.List; import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.core.domainobjects.ltl.CounterExampleGlobally; import de.prob.core.domainobjects.ltl.CounterExamplePredicate; import de.prob.core.domainobjects.ltl.CounterExampleProposition; @@ -31,13 +31,14 @@ public final class CounterExampleGloballyUnitTest { CounterExampleValueType.TRUE, CounterExampleValueType.TRUE }); + final CounterExample ce = TestCounterExample.finite(4); // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.FINITE, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator globallyOperator = new CounterExampleGlobally( - PathType.FINITE, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = globallyOperator @@ -84,13 +85,14 @@ public final class CounterExampleGloballyUnitTest { CounterExampleValueType.TRUE }); // Loop entry = 0 + final CounterExample ce0 = TestCounterExample.loop(0, 4); // create an argument CounterExampleProposition argument = new CounterExamplePredicate("", - PathType.INFINITE, 0, argumentValues); + ce0, argumentValues); // create an operator CounterExampleUnaryOperator globallyOperator = new CounterExampleGlobally( - PathType.INFINITE, 0, argument); + ce0, argument); // check result values List<CounterExampleValueType> values = globallyOperator.getValues(); @@ -125,13 +127,12 @@ public final class CounterExampleGloballyUnitTest { new Integer[] { 1 })); // Loop entry = 1 + final CounterExample ce1 = TestCounterExample.loop(1, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 1, - argumentValues); + argument = new CounterExamplePredicate("", ce1, argumentValues); // create an operator - globallyOperator = new CounterExampleGlobally(PathType.INFINITE, 1, - argument); + globallyOperator = new CounterExampleGlobally(ce1, argument); // check result values values = globallyOperator.getValues(); @@ -165,13 +166,12 @@ public final class CounterExampleGloballyUnitTest { new Integer[] { 1 })); // Loop entry = 2 + final CounterExample ce2 = TestCounterExample.loop(2, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 2, - argumentValues); + argument = new CounterExamplePredicate("", ce2, argumentValues); // create an operator - globallyOperator = new CounterExampleGlobally(PathType.INFINITE, 2, - argument); + globallyOperator = new CounterExampleGlobally(ce2, argument); // check result values values = globallyOperator.getValues(); @@ -205,13 +205,12 @@ public final class CounterExampleGloballyUnitTest { new Integer[] { 3, 2 })); // Loop entry = 3 + final CounterExample ce3 = TestCounterExample.loop(3, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 3, - argumentValues); + argument = new CounterExamplePredicate("", ce3, argumentValues); // create an operator - globallyOperator = new CounterExampleGlobally(PathType.INFINITE, 3, - argument); + globallyOperator = new CounterExampleGlobally(ce3, argument); // check result values values = globallyOperator.getValues(); @@ -255,13 +254,15 @@ public final class CounterExampleGloballyUnitTest { CounterExampleValueType.TRUE, CounterExampleValueType.TRUE }); + final CounterExample ce = TestCounterExample.reduced(4); + // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator globallyOperator = new CounterExampleGlobally( - PathType.REDUCED, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = globallyOperator diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleHistoryUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleHistoryUnitTest.java index b6227550f35f7f78b410bcf9153891c56359a6d6..132509c5281e0c2614d1c5e48c037693a453d438 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleHistoryUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleHistoryUnitTest.java @@ -7,7 +7,7 @@ import java.util.List; import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.core.domainobjects.ltl.CounterExampleHistory; import de.prob.core.domainobjects.ltl.CounterExamplePredicate; import de.prob.core.domainobjects.ltl.CounterExampleProposition; @@ -34,13 +34,14 @@ public final class CounterExampleHistoryUnitTest { CounterExampleValueType.TRUE, CounterExampleValueType.TRUE }); + final CounterExample ce = TestCounterExample.finite(4); // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.FINITE, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator historyOperator = new CounterExampleHistory( - PathType.FINITE, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = historyOperator @@ -89,13 +90,15 @@ public final class CounterExampleHistoryUnitTest { CounterExampleValueType.FALSE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.finite(4); + // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.FINITE, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator historyOperator = new CounterExampleHistory( - PathType.FINITE, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = historyOperator @@ -145,13 +148,14 @@ public final class CounterExampleHistoryUnitTest { CounterExampleValueType.TRUE }); // Loop entry = 0 + final CounterExample ce0 = TestCounterExample.loop(0, 4); // create an argument CounterExampleProposition argument = new CounterExamplePredicate("", - PathType.INFINITE, 0, argumentValues); + ce0, argumentValues); // create an operator CounterExampleUnaryOperator historyOperator = new CounterExampleHistory( - PathType.INFINITE, 0, argument); + ce0, argument); // check result values List<CounterExampleValueType> values = historyOperator.getValues(); @@ -186,13 +190,12 @@ public final class CounterExampleHistoryUnitTest { new Integer[] { 3, 2, 1, 0 })); // Loop entry = 1 + final CounterExample ce1 = TestCounterExample.loop(1, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 1, - argumentValues); + argument = new CounterExamplePredicate("", ce1, argumentValues); // create an operator - historyOperator = new CounterExampleHistory(PathType.INFINITE, 1, - argument); + historyOperator = new CounterExampleHistory(ce1, argument); // check result values values = historyOperator.getValues(); @@ -226,13 +229,13 @@ public final class CounterExampleHistoryUnitTest { new Integer[] { 3, 2, 1, 0 })); // Loop entry = 2 + final CounterExample ce2 = TestCounterExample.loop(2, 4); + // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 2, - argumentValues); + argument = new CounterExamplePredicate("", ce2, argumentValues); // create an operator - historyOperator = new CounterExampleHistory(PathType.INFINITE, 2, - argument); + historyOperator = new CounterExampleHistory(ce2, argument); // check result values values = historyOperator.getValues(); @@ -266,13 +269,13 @@ public final class CounterExampleHistoryUnitTest { new Integer[] { 3, 2, 1, 0 })); // Loop entry = 3 + final CounterExample ce3 = TestCounterExample.loop(3, 4); + // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 3, - argumentValues); + argument = new CounterExamplePredicate("", ce3, argumentValues); // create an operator - historyOperator = new CounterExampleHistory(PathType.INFINITE, 3, - argument); + historyOperator = new CounterExampleHistory(ce3, argument); // check result values values = historyOperator.getValues(); @@ -320,13 +323,14 @@ public final class CounterExampleHistoryUnitTest { CounterExampleValueType.FALSE }); // Loop entry = 0 + final CounterExample ce0 = TestCounterExample.loop(0, 4); // create an argument CounterExampleProposition argument = new CounterExamplePredicate("", - PathType.INFINITE, 0, argumentValues); + ce0, argumentValues); // create an operator CounterExampleUnaryOperator historyOperator = new CounterExampleHistory( - PathType.INFINITE, 0, argument); + ce0, argument); // check result values List<CounterExampleValueType> values = historyOperator.getValues(); @@ -361,13 +365,12 @@ public final class CounterExampleHistoryUnitTest { new Integer[] { 3 })); // Loop entry = 1 + final CounterExample ce1 = TestCounterExample.loop(0, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 1, - argumentValues); + argument = new CounterExamplePredicate("", ce1, argumentValues); // create an operator - historyOperator = new CounterExampleHistory(PathType.INFINITE, 1, - argument); + historyOperator = new CounterExampleHistory(ce1, argument); // check result values values = historyOperator.getValues(); @@ -401,13 +404,12 @@ public final class CounterExampleHistoryUnitTest { new Integer[] { 3 })); // Loop entry = 2 + final CounterExample ce2 = TestCounterExample.loop(0, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 2, - argumentValues); + argument = new CounterExamplePredicate("", ce2, argumentValues); // create an operator - historyOperator = new CounterExampleHistory(PathType.INFINITE, 2, - argument); + historyOperator = new CounterExampleHistory(ce2, argument); // check result values values = historyOperator.getValues(); @@ -441,13 +443,12 @@ public final class CounterExampleHistoryUnitTest { new Integer[] { 3 })); // Loop entry = 3 + final CounterExample ce3 = TestCounterExample.loop(3, 4); // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 3, - argumentValues); + argument = new CounterExamplePredicate("", ce3, argumentValues); // create an operator - historyOperator = new CounterExampleHistory(PathType.INFINITE, 3, - argument); + historyOperator = new CounterExampleHistory(ce3, argument); // check result values values = historyOperator.getValues(); @@ -494,13 +495,14 @@ public final class CounterExampleHistoryUnitTest { CounterExampleValueType.TRUE, CounterExampleValueType.TRUE }); + final CounterExample ce = TestCounterExample.reduced(4); // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator historyOperator = new CounterExampleHistory( - PathType.REDUCED, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = historyOperator @@ -549,13 +551,15 @@ public final class CounterExampleHistoryUnitTest { CounterExampleValueType.FALSE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.reduced(4); + // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator historyOperator = new CounterExampleHistory( - PathType.REDUCED, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = historyOperator @@ -604,13 +608,15 @@ public final class CounterExampleHistoryUnitTest { CounterExampleValueType.UNKNOWN, CounterExampleValueType.TRUE }); + final CounterExample ce = TestCounterExample.reduced(4); + // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator historyOperator = new CounterExampleHistory( - PathType.REDUCED, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = historyOperator @@ -659,13 +665,14 @@ public final class CounterExampleHistoryUnitTest { CounterExampleValueType.TRUE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.reduced(4); // create an argument final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); + "", ce, argumentValues); // create an operator final CounterExampleUnaryOperator historyOperator = new CounterExampleHistory( - PathType.REDUCED, -1, argument); + ce, argument); // check result values final List<CounterExampleValueType> values = historyOperator diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleImplyUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleImplyUnitTest.java index 7985d9539e39d82404d1bdce43326c08a26c204f..7c557d58feeffe92ada8e4f782ff499544a263b3 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleImplyUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleImplyUnitTest.java @@ -7,7 +7,7 @@ import java.util.List; import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; import de.prob.core.domainobjects.ltl.CounterExampleImplication; import de.prob.core.domainobjects.ltl.CounterExamplePredicate; @@ -42,17 +42,18 @@ public final class CounterExampleImplyUnitTest { CounterExampleValueType.TRUE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.finite(4); // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator implyOperator = new CounterExampleImplication( - PathType.FINITE, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = implyOperator.getValues(); @@ -127,17 +128,18 @@ public final class CounterExampleImplyUnitTest { CounterExampleValueType.FALSE }); // Loop entry = 0 + final CounterExample ce0 = TestCounterExample.loop(0, 4); // create first argument CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); + "", ce0, firstArgumentValues); // create second argument CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); + "", ce0, secondArgumentValues); // create an operator CounterExampleBinaryOperator implyOperator = new CounterExampleImplication( - PathType.INFINITE, 0, firstArgument, secondArgument); + ce0, firstArgument, secondArgument); // check result values List<CounterExampleValueType> values = implyOperator.getValues(); @@ -190,17 +192,18 @@ public final class CounterExampleImplyUnitTest { assertTrue(secondHighlightedPositions.get(3).size() == 0); // Loop entry = 1 + final CounterExample ce1 = TestCounterExample.loop(1, 4); // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + firstArgument = new CounterExamplePredicate("", ce1, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + secondArgument = new CounterExamplePredicate("", ce1, secondArgumentValues); // create an operator - implyOperator = new CounterExampleImplication(PathType.INFINITE, 1, - firstArgument, secondArgument); + implyOperator = new CounterExampleImplication(ce1, firstArgument, + secondArgument); // check result values values = implyOperator.getValues(); @@ -253,17 +256,18 @@ public final class CounterExampleImplyUnitTest { assertTrue(secondHighlightedPositions.get(3).size() == 0); // Loop entry = 2 + final CounterExample ce2 = TestCounterExample.loop(2, 4); // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + firstArgument = new CounterExamplePredicate("", ce2, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + secondArgument = new CounterExamplePredicate("", ce2, secondArgumentValues); // create an operator - implyOperator = new CounterExampleImplication(PathType.INFINITE, 2, - firstArgument, secondArgument); + implyOperator = new CounterExampleImplication(ce2, firstArgument, + secondArgument); // check result values values = implyOperator.getValues(); @@ -316,17 +320,18 @@ public final class CounterExampleImplyUnitTest { assertTrue(secondHighlightedPositions.get(3).size() == 0); // Loop entry = 3 + final CounterExample ce3 = TestCounterExample.loop(3, 4); // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + firstArgument = new CounterExamplePredicate("", ce3, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + secondArgument = new CounterExamplePredicate("", ce3, secondArgumentValues); // create an operator - implyOperator = new CounterExampleImplication(PathType.INFINITE, 3, - firstArgument, secondArgument); + implyOperator = new CounterExampleImplication(ce3, firstArgument, + secondArgument); // check result values values = implyOperator.getValues(); @@ -400,17 +405,18 @@ public final class CounterExampleImplyUnitTest { CounterExampleValueType.TRUE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.reduced(4); // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator implyOperator = new CounterExampleImplication( - PathType.REDUCED, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = implyOperator.getValues(); @@ -484,17 +490,19 @@ public final class CounterExampleImplyUnitTest { CounterExampleValueType.UNKNOWN, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.reduced(4); + // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator implyOperator = new CounterExampleImplication( - PathType.REDUCED, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = implyOperator.getValues(); @@ -574,17 +582,19 @@ public final class CounterExampleImplyUnitTest { CounterExampleValueType.UNKNOWN, CounterExampleValueType.UNKNOWN }); + final CounterExample ce = TestCounterExample.reduced(4); + // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator implyOperator = new CounterExampleImplication( - PathType.REDUCED, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = implyOperator.getValues(); diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleNextUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleNextUnitTest.java index a1fdaf22e57b95c4069d614541fffa8c588cb2ca..95bb621017d47dbcd3d9e2e56ca17e1bcadfe9d8 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleNextUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleNextUnitTest.java @@ -1,288 +1,63 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; import de.prob.core.domainobjects.ltl.CounterExampleNext; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleUnaryOperator; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; /** * Unit test for a "next" operator. * * @author Andriy Tolstoy - * */ public final class CounterExampleNextUnitTest { @Test public void testNextOnFinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.FINITE, -1, argumentValues); - - // create an operator - final CounterExampleUnaryOperator nextOperator = new CounterExampleNext( - PathType.FINITE, -1, argument); - - // check result values - final List<CounterExampleValueType> values = nextOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = nextOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - assertTrue(highlightedPositions.get(3).size() == 0); + final LtlTestDescription d = LtlTestDescription.finite(4); + final CounterExampleProposition arg = d.addArgument("arg", "ftft"); + final CounterExampleUnaryOperator next = new CounterExampleNext( + d.getCounterExample(), arg); + + d.checkValues("next", next, "tftf"); + + d.expectedHighlight(0, "nextH", 1); + d.expectedHighlight(1, "nextH", 2); + d.expectedHighlight(2, "nextH", 3); + d.expectedHighlight(3, "nextH"); + d.checkHighlights("next", next, "nextH"); } @Test public void testNextOnInfinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create an argument - CounterExampleProposition argument = new CounterExamplePredicate("", - PathType.INFINITE, 0, argumentValues); - - // create an operator - CounterExampleUnaryOperator nextOperator = new CounterExampleNext( - PathType.INFINITE, 0, argument); - - // check result values - List<CounterExampleValueType> values = nextOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> highlightedPositions = nextOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 1 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 1, - argumentValues); - - // create an operator - nextOperator = new CounterExampleNext(PathType.INFINITE, 1, argument); - - // check result values - values = nextOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - highlightedPositions = nextOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - - // Loop entry = 2 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 2, - argumentValues); - - // create an operator - nextOperator = new CounterExampleNext(PathType.INFINITE, 2, argument); - - // check result values - values = nextOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = nextOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); - - // Loop entry = 3 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 3, - argumentValues); - - // create an operator - nextOperator = new CounterExampleNext(PathType.INFINITE, 3, argument); - - // check result values - values = nextOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - highlightedPositions = nextOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + final String[] values = new String[] { "tftf", "tftt", "tftf", "tftt" }; + for (int entry = 0; entry < 4; entry++) { + final LtlTestDescription d = LtlTestDescription.loop(4, entry); + final CounterExampleProposition arg = d.addArgument("arg", "ftft"); + final CounterExampleUnaryOperator next = new CounterExampleNext( + d.getCounterExample(), arg); + + d.checkValues("next", next, values[entry]); + d.expectedHighlight(0, "nextH", 1); + d.expectedHighlight(1, "nextH", 2); + d.expectedHighlight(2, "nextH", 3); + d.expectedHighlight(3, "nextH", entry); + d.checkHighlights("next", next, "nextH"); + } } @Test public void testNextOnReducedPath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); - - // create an operator - final CounterExampleUnaryOperator nextOperator = new CounterExampleNext( - PathType.REDUCED, -1, argument); - - // check result values - final List<CounterExampleValueType> values = nextOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = nextOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - assertTrue(highlightedPositions.get(3).size() == 0); + final LtlTestDescription d = LtlTestDescription.reduced(4); + final CounterExampleProposition arg = d.addArgument("arg", "tuft"); + final CounterExampleUnaryOperator next = new CounterExampleNext( + d.getCounterExample(), arg); + d.checkValues("next", next, "uftu"); + + d.expectedHighlight(0, "nextH", 1); + d.expectedHighlight(1, "nextH", 2); + d.expectedHighlight(2, "nextH", 3); + d.expectedHighlight(3, "nextH"); + d.checkHighlights("next", next, "nextH"); } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleNotUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleNotUnitTest.java index b7d9d7e034b5b9f692d5b6aa13f8a017f1717d6c..8eeb19f6093b901aea5a63b98946846d1388245b 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleNotUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleNotUnitTest.java @@ -1,18 +1,10 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; import de.prob.core.domainobjects.ltl.CounterExampleNegation; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleUnaryOperator; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; /** * Unit test for a "not" operator. @@ -27,57 +19,8 @@ public final class CounterExampleNotUnitTest { */ @Test public void testNotOnFinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.FINITE, argumentValues); - - // create an operator - final CounterExampleUnaryOperator notOperator = new CounterExampleNegation( - PathType.FINITE, argument); - - // check result values - final List<CounterExampleValueType> values = notOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - // State 0 - final List<List<Integer>> highlightedPositions = notOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + final LtlTestDescription d = LtlTestDescription.finite(4); + checkNot(d); } /* @@ -85,191 +28,10 @@ public final class CounterExampleNotUnitTest { */ @Test public void testNotOnInFinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create argument - CounterExampleProposition argument = new CounterExamplePredicate("", - PathType.INFINITE, 0, argumentValues); - - // create an operator - CounterExampleUnaryOperator notOperator = new CounterExampleNegation( - PathType.INFINITE, 0, argument); - - // check result values - List<CounterExampleValueType> values = notOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> highlightedPositions = notOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - // State 0 - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 1 - // create argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 1, - argumentValues); - - // create an operator - notOperator = new CounterExampleNegation(PathType.INFINITE, 1, argument); - - // check result values - values = notOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = notOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - // State 0 - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 2 - // create argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 2, - argumentValues); - - // create an operator - notOperator = new CounterExampleNegation(PathType.INFINITE, 2, argument); - - // check result values - values = notOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = notOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - // State 0 - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 3 - // create argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 3, - argumentValues); - - // create an operator - notOperator = new CounterExampleNegation(PathType.INFINITE, 3, argument); - - // check result values - values = notOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = notOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - // State 0 - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + for (int entry = 0; entry < 4; entry++) { + final LtlTestDescription d = LtlTestDescription.loop(4, entry); + checkNot(d); + } } /* @@ -277,57 +39,8 @@ public final class CounterExampleNotUnitTest { */ @Test public void testNotOnReducedPath1() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, argumentValues); - - // create an operator - final CounterExampleUnaryOperator notOperator = new CounterExampleNegation( - PathType.REDUCED, argument); - - // check result values - final List<CounterExampleValueType> values = notOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - // State 0 - final List<List<Integer>> highlightedPositions = notOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + final LtlTestDescription d = LtlTestDescription.reduced(4); + checkNot(d); } /* @@ -335,56 +48,27 @@ public final class CounterExampleNotUnitTest { */ @Test public void testNotOnReducedPath2() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, argumentValues); - - // create an operator - final CounterExampleUnaryOperator notOperator = new CounterExampleNegation( - PathType.REDUCED, argument); - - // check result values - final List<CounterExampleValueType> values = notOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - // State 0 - final List<List<Integer>> highlightedPositions = notOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); + final LtlTestDescription d = LtlTestDescription.reduced(4); + final CounterExampleProposition arg = d.addArgument("not", "tufu"); + final CounterExampleUnaryOperator not = new CounterExampleNegation( + d.getCounterExample(), arg); + d.checkValues("not", not, "futu"); + d.expectedHighlight(0, "notH", 0); + d.expectedHighlight(1, "notH", 1); + d.expectedHighlight(2, "notH", 2); + d.expectedHighlight(3, "notH", 3); + d.checkHighlights("not", not, "notH"); + } - // State 3 - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + private void checkNot(final LtlTestDescription d) { + final CounterExampleProposition arg = d.addArgument("not", "tfft"); + final CounterExampleUnaryOperator not = new CounterExampleNegation( + d.getCounterExample(), arg); + d.checkValues("not", not, "fttf"); + d.expectedHighlight(0, "notH", 0); + d.expectedHighlight(1, "notH", 1); + d.expectedHighlight(2, "notH", 2); + d.expectedHighlight(3, "notH", 3); + d.checkHighlights("not", not, "notH"); } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleOnceUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleOnceUnitTest.java index 705ef839a8f48d6cce8e1458a2a32463d193025b..33229e73fe06c46044480552116c416c70b6fd73 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleOnceUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleOnceUnitTest.java @@ -1,18 +1,10 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; import de.prob.core.domainobjects.ltl.CounterExampleOnce; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleUnaryOperator; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; /** * Unit test for an "once" operator. @@ -26,53 +18,8 @@ public final class CounterExampleOnceUnitTest { */ @Test public void testOnceTrueDefinitionOnFinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.FINITE, -1, argumentValues); - - // create an operator - final CounterExampleUnaryOperator onceOperator = new CounterExampleOnce( - PathType.FINITE, argument); - - // check result values - final List<CounterExampleValueType> values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = onceOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + final LtlTestDescription d = LtlTestDescription.finite(4); + checkOnce(d); } /* @@ -80,225 +27,19 @@ public final class CounterExampleOnceUnitTest { */ @Test public void testOnceFalseDefinitionOnFinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.FINITE, -1, argumentValues); - - // create an operator - final CounterExampleUnaryOperator onceOperator = new CounterExampleOnce( - PathType.FINITE, -1, argument); - - // check result values - final List<CounterExampleValueType> values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = onceOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - assertTrue(highlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - assertTrue(highlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); + final LtlTestDescription d = LtlTestDescription.finite(4); + checkOnceCompleteFalse(d); } /* - * f-TFTF, O f-FTTT + * f-FTFT, O f-FTTT */ @Test public void testOnceTrueDefinitionOnInfinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create an argument - CounterExampleProposition argument = new CounterExamplePredicate("", - PathType.INFINITE, 0, argumentValues); - - // create an operator - CounterExampleUnaryOperator onceOperator = new CounterExampleOnce( - PathType.INFINITE, 0, argument); - - // check result values - List<CounterExampleValueType> values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> highlightedPositions = onceOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 1 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 1, - argumentValues); - - // create an operator - onceOperator = new CounterExampleOnce(PathType.INFINITE, 1, argument); - - // check result values - values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - highlightedPositions = onceOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 2 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 2, - argumentValues); - - // create an operator - onceOperator = new CounterExampleOnce(PathType.INFINITE, 2, argument); - - // check result values - values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - highlightedPositions = onceOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 3 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 3, - argumentValues); - - // create an operator - onceOperator = new CounterExampleOnce(PathType.INFINITE, 3, argument); - - // check result values - values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - highlightedPositions = onceOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + for (int entry = 0; entry < 4; entry++) { + final LtlTestDescription d = LtlTestDescription.loop(4, entry); + checkOnce(d); + } } /* @@ -306,171 +47,10 @@ public final class CounterExampleOnceUnitTest { */ @Test public void testOnceFalseDefinitionOnInfinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create an argument - CounterExampleProposition argument = new CounterExamplePredicate("", - PathType.INFINITE, 0, argumentValues); - - // create an operator - CounterExampleUnaryOperator onceOperator = new CounterExampleOnce( - PathType.INFINITE, 0, argument); - - // check result values - List<CounterExampleValueType> values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> highlightedPositions = onceOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - assertTrue(highlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - assertTrue(highlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 1 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 1, - argumentValues); - - // create an operator - onceOperator = new CounterExampleOnce(PathType.INFINITE, 1, argument); - - // check result values - values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = onceOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - assertTrue(highlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - assertTrue(highlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 2 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 2, - argumentValues); - - // create an operator - onceOperator = new CounterExampleOnce(PathType.INFINITE, 2, argument); - - // check result values - values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = onceOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - assertTrue(highlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - assertTrue(highlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 3 - // create an argument - argument = new CounterExamplePredicate("", PathType.INFINITE, 3, - argumentValues); - - // create an operator - onceOperator = new CounterExampleOnce(PathType.INFINITE, 3, argument); - - // check result values - values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = onceOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - assertTrue(highlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - assertTrue(highlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); + for (int entry = 0; entry < 4; entry++) { + final LtlTestDescription d = LtlTestDescription.loop(4, entry); + checkOnceCompleteFalse(d); + } } /* @@ -478,53 +58,8 @@ public final class CounterExampleOnceUnitTest { */ @Test public void testOnceTrueDefinitionOnReducedPath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); - - // create an operator - final CounterExampleUnaryOperator onceOperator = new CounterExampleOnce( - PathType.REDUCED, -1, argument); - - // check result values - final List<CounterExampleValueType> values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = onceOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + final LtlTestDescription d = LtlTestDescription.reduced(4); + checkOnce(d); } /* @@ -532,53 +67,8 @@ public final class CounterExampleOnceUnitTest { */ @Test public void testOnceFalseDefinitionOnReducedPath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); - - // create an operator - final CounterExampleUnaryOperator onceOperator = new CounterExampleOnce( - PathType.REDUCED, -1, argument); - - // check result values - final List<CounterExampleValueType> values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = onceOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - assertTrue(highlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - assertTrue(highlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); + final LtlTestDescription d = LtlTestDescription.reduced(4); + checkOnceCompleteFalse(d); } /* @@ -586,53 +76,16 @@ public final class CounterExampleOnceUnitTest { */ @Test public void testOnceUnknownDefinitionOnReducedPath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); - - // create an operator - final CounterExampleUnaryOperator onceOperator = new CounterExampleOnce( - PathType.REDUCED, -1, argument); - - // check result values - final List<CounterExampleValueType> values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = onceOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - assertTrue(highlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - assertTrue(highlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); + final LtlTestDescription d = LtlTestDescription.reduced(4); + final CounterExampleProposition arg = d.addArgument("arg", "ufuf"); + final CounterExampleUnaryOperator once = new CounterExampleOnce( + d.getCounterExample(), arg); + d.checkValues("once", once, "uuuu"); + d.expectedHighlight(0, "onceH", 0); + d.expectedHighlight(1, "onceH", 0, 1); + d.expectedHighlight(2, "onceH", 0, 1, 2); + d.expectedHighlight(3, "onceH", 0, 1, 2, 3); + d.checkHighlights("once", once, "onceH"); } /* @@ -640,52 +93,39 @@ public final class CounterExampleOnceUnitTest { */ @Test public void testOnceOnReducedPath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, argumentValues); - - // create an operator - final CounterExampleUnaryOperator onceOperator = new CounterExampleOnce( - PathType.REDUCED, -1, argument); - - // check result values - final List<CounterExampleValueType> values = onceOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = onceOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - assertTrue(highlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); + final LtlTestDescription d = LtlTestDescription.reduced(4); + final CounterExampleProposition arg = d.addArgument("arg", "futu"); + final CounterExampleUnaryOperator once = new CounterExampleOnce( + d.getCounterExample(), arg); + d.checkValues("once", once, "futt"); + d.expectedHighlight(0, "onceH", 0); + d.expectedHighlight(1, "onceH", 0, 1); + d.expectedHighlight(2, "onceH", 2); + d.expectedHighlight(3, "onceH", 2); + d.checkHighlights("once", once, "onceH"); + } - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); + private void checkOnce(final LtlTestDescription d) { + final CounterExampleProposition arg = d.addArgument("arg", "ftft"); + final CounterExampleUnaryOperator once = new CounterExampleOnce( + d.getCounterExample(), arg); + d.checkValues("once", once, "fttt"); + d.expectedHighlight(0, "onceH", 0); + d.expectedHighlight(1, "onceH", 1); + d.expectedHighlight(2, "onceH", 1); + d.expectedHighlight(3, "onceH", 3); + d.checkHighlights("once", once, "onceH"); + } - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); + private void checkOnceCompleteFalse(final LtlTestDescription d) { + final CounterExampleProposition arg = d.addArgument("arg", "ffff"); + final CounterExampleUnaryOperator once = new CounterExampleOnce( + d.getCounterExample(), arg); + d.checkValues("once", once, "ffff"); + d.expectedHighlight(0, "onceH", 0); + d.expectedHighlight(1, "onceH", 0, 1); + d.expectedHighlight(2, "onceH", 0, 1, 2); + d.expectedHighlight(3, "onceH", 0, 1, 2, 3); + d.checkHighlights("once", once, "onceH"); } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleOrUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleOrUnitTest.java index 22f082787feaea19928837bc4ec0cdf31716aa96..ba5f5ad113bfca8d2d8cb427a6d5152e571b429f 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleOrUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleOrUnitTest.java @@ -7,7 +7,7 @@ import java.util.List; import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; import de.prob.core.domainobjects.ltl.CounterExampleDisjunction; import de.prob.core.domainobjects.ltl.CounterExamplePredicate; @@ -42,17 +42,19 @@ public final class CounterExampleOrUnitTest { CounterExampleValueType.FALSE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.finite(4); + // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator orOperator = new CounterExampleDisjunction( - PathType.FINITE, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = orOperator.getValues(); @@ -127,17 +129,18 @@ public final class CounterExampleOrUnitTest { CounterExampleValueType.FALSE }); // Loop entry = 0 + final CounterExample ce0 = TestCounterExample.loop(0, 4); // create first argument CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); + "", ce0, firstArgumentValues); // create second argument CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); + "", ce0, secondArgumentValues); // create an operator CounterExampleBinaryOperator orOperator = new CounterExampleDisjunction( - PathType.INFINITE, 0, firstArgument, secondArgument); + ce0, firstArgument, secondArgument); // check result values List<CounterExampleValueType> values = orOperator.getValues(); @@ -190,17 +193,19 @@ public final class CounterExampleOrUnitTest { new Integer[] { 3 })); // Loop entry = 1 + final CounterExample ce1 = TestCounterExample.loop(1, 4); + // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + firstArgument = new CounterExamplePredicate("", ce1, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + secondArgument = new CounterExamplePredicate("", ce1, secondArgumentValues); // create an operator - orOperator = new CounterExampleDisjunction(PathType.INFINITE, 1, - firstArgument, secondArgument); + orOperator = new CounterExampleDisjunction(ce1, firstArgument, + secondArgument); // check result values values = orOperator.getValues(); @@ -251,17 +256,18 @@ public final class CounterExampleOrUnitTest { new Integer[] { 3 })); // Loop entry = 2 + final CounterExample ce2 = TestCounterExample.loop(2, 4); // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + firstArgument = new CounterExamplePredicate("", ce2, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + secondArgument = new CounterExamplePredicate("", ce2, secondArgumentValues); // create an operator - orOperator = new CounterExampleDisjunction(PathType.INFINITE, 2, - firstArgument, secondArgument); + orOperator = new CounterExampleDisjunction(ce2, firstArgument, + secondArgument); // check result values values = orOperator.getValues(); @@ -312,17 +318,18 @@ public final class CounterExampleOrUnitTest { new Integer[] { 3 })); // Loop entry = 3 + final CounterExample ce3 = TestCounterExample.loop(3, 4); // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + firstArgument = new CounterExamplePredicate("", ce3, firstArgumentValues); // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + secondArgument = new CounterExamplePredicate("", ce3, secondArgumentValues); // create an operator - orOperator = new CounterExampleDisjunction(PathType.INFINITE, 3, - firstArgument, secondArgument); + orOperator = new CounterExampleDisjunction(ce3, firstArgument, + secondArgument); // check result values values = orOperator.getValues(); @@ -394,17 +401,19 @@ public final class CounterExampleOrUnitTest { CounterExampleValueType.FALSE, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.reduced(4); + // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator orOperator = new CounterExampleDisjunction( - PathType.REDUCED, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = orOperator.getValues(); @@ -478,17 +487,18 @@ public final class CounterExampleOrUnitTest { CounterExampleValueType.UNKNOWN, CounterExampleValueType.FALSE }); + final CounterExample ce = TestCounterExample.reduced(4); // create first argument final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); + "", ce, firstArgumentValues); // create second argument final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); + "", ce, secondArgumentValues); // create an operator final CounterExampleBinaryOperator orOperator = new CounterExampleDisjunction( - PathType.REDUCED, firstArgument, secondArgument); + ce, firstArgument, secondArgument); // check result values final List<CounterExampleValueType> values = orOperator.getValues(); diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleReleaseUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleReleaseUnitTest.java index bbc587681fdca7093b97ee8536134f095803d2ed..c9160c73629adef9122bcccdcca0fda064a94e53 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleReleaseUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleReleaseUnitTest.java @@ -1,18 +1,10 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleRelease; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; /** * Unit test for a "release" operator. @@ -26,93 +18,26 @@ public final class CounterExampleReleaseUnitTest { */ @Test public void testReleaseTrueDefinitionOnFinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); + final LtlTestDescription d = LtlTestDescription.finite(4); + final CounterExampleProposition fst = d.addArgument("fst", "ffft"); + final CounterExampleProposition snd = d.addArgument("snd", "tttt"); + final CounterExampleBinaryOperator release = new CounterExampleRelease( + d.getCounterExample(), fst, snd); + d.checkValues("release", release, "tttt"); - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); + d.expectedHighlight(0, "fstH", 3); + d.expectedHighlight(0, "sndH", 0, 1, 2, 3); - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.FINITE, firstArgument, secondArgument); + d.expectedHighlight(1, "fstH", 3); + d.expectedHighlight(1, "sndH", 1, 2, 3); - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); + d.expectedHighlight(2, "fstH", 3); + d.expectedHighlight(2, "sndH", 2, 3); - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); + d.expectedHighlight(3, "fstH", 3); + d.expectedHighlight(3, "sndH", 3); - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.checkHighlights("release", release, "fstH", "sndH"); } /* @@ -120,81 +45,26 @@ public final class CounterExampleReleaseUnitTest { */ @Test public void testReleaseTrueDefinitionOnFinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); + final LtlTestDescription d = LtlTestDescription.finite(4); + final CounterExampleProposition fst = d.addArgument("fst", "ffff"); + final CounterExampleProposition snd = d.addArgument("snd", "tttt"); + final CounterExampleBinaryOperator release = new CounterExampleRelease( + d.getCounterExample(), fst, snd); + d.checkValues("release", release, "tttt"); - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); + d.expectedHighlight(0, "fstH"); + d.expectedHighlight(0, "sndH", 0, 1, 2, 3); - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); + d.expectedHighlight(1, "fstH"); + d.expectedHighlight(1, "sndH", 1, 2, 3); - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.FINITE, firstArgument, secondArgument); + d.expectedHighlight(2, "fstH"); + d.expectedHighlight(2, "sndH", 2, 3); - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); + d.expectedHighlight(3, "fstH"); + d.expectedHighlight(3, "sndH", 3); - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.checkHighlights("release", release, "fstH", "sndH"); } /* @@ -202,90 +72,26 @@ public final class CounterExampleReleaseUnitTest { */ @Test public void testReleaseFalseDefinitionOnFinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); + final LtlTestDescription d = LtlTestDescription.finite(4); + final CounterExampleProposition fst = d.addArgument("fst", "ffft"); + final CounterExampleProposition snd = d.addArgument("snd", "tttf"); + final CounterExampleBinaryOperator release = new CounterExampleRelease( + d.getCounterExample(), fst, snd); + d.checkValues("release", release, "ffff"); - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.FINITE, firstArgument, secondArgument); + d.expectedHighlight(0, "fstH", 0, 1, 2); + d.expectedHighlight(0, "sndH", 3); - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); + d.expectedHighlight(1, "fstH", 1, 2); + d.expectedHighlight(1, "sndH", 3); - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); + d.expectedHighlight(2, "fstH", 2); + d.expectedHighlight(2, "sndH", 3); - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); + d.expectedHighlight(3, "fstH"); + d.expectedHighlight(3, "sndH", 3); - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.checkHighlights("release", release, "fstH", "sndH"); } /* @@ -293,90 +99,26 @@ public final class CounterExampleReleaseUnitTest { */ @Test public void testReleaseFalseDefinitionOnFinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); + final LtlTestDescription d = LtlTestDescription.finite(4); + final CounterExampleProposition fst = d.addArgument("fst", "ffff"); + final CounterExampleProposition snd = d.addArgument("snd", "tttf"); + final CounterExampleBinaryOperator release = new CounterExampleRelease( + d.getCounterExample(), fst, snd); + d.checkValues("release", release, "ffff"); - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); + d.expectedHighlight(0, "fstH", 0, 1, 2); + d.expectedHighlight(0, "sndH", 3); - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); + d.expectedHighlight(1, "fstH", 1, 2); + d.expectedHighlight(1, "sndH", 3); - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); + d.expectedHighlight(2, "fstH", 2); + d.expectedHighlight(2, "sndH", 3); - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); + d.expectedHighlight(3, "fstH"); + d.expectedHighlight(3, "sndH", 3); - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.checkHighlights("release", release, "fstH", "sndH"); } /* @@ -384,84 +126,26 @@ public final class CounterExampleReleaseUnitTest { */ @Test public void testReleaseOnFinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); + final LtlTestDescription d = LtlTestDescription.finite(4); + final CounterExampleProposition fst = d.addArgument("fst", "tftf"); + final CounterExampleProposition snd = d.addArgument("snd", "tfft"); + final CounterExampleBinaryOperator release = new CounterExampleRelease( + d.getCounterExample(), fst, snd); + d.checkValues("release", release, "tfft"); - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); + d.expectedHighlight(0, "fstH", 0); + d.expectedHighlight(0, "sndH", 0); - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, -1, firstArgumentValues); + d.expectedHighlight(1, "fstH"); + d.expectedHighlight(1, "sndH", 1); - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, -1, secondArgumentValues); + d.expectedHighlight(2, "fstH"); + d.expectedHighlight(2, "sndH", 2); - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.FINITE, -1, firstArgument, secondArgument); + d.expectedHighlight(3, "fstH"); + d.expectedHighlight(3, "sndH", 3); - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.checkHighlights("release", release, "fstH", "sndH"); } /* @@ -469,87 +153,26 @@ public final class CounterExampleReleaseUnitTest { */ @Test public void testReleaseOnFinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, -1, firstArgumentValues); + final LtlTestDescription d = LtlTestDescription.finite(4); + final CounterExampleProposition fst = d.addArgument("fst", "fttf"); + final CounterExampleProposition snd = d.addArgument("snd", "tftt"); + final CounterExampleBinaryOperator release = new CounterExampleRelease( + d.getCounterExample(), fst, snd); + d.checkValues("release", release, "fftt"); - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, -1, secondArgumentValues); + d.expectedHighlight(0, "fstH", 0); + d.expectedHighlight(0, "sndH", 1); - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.FINITE, -1, firstArgument, secondArgument); + d.expectedHighlight(1, "fstH"); + d.expectedHighlight(1, "sndH", 1); - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); + d.expectedHighlight(2, "fstH", 2); + d.expectedHighlight(2, "sndH", 2); - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); + d.expectedHighlight(3, "fstH"); + d.expectedHighlight(3, "sndH", 3); - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.checkHighlights("release", release, "fstH", "sndH"); } /* @@ -557,309 +180,28 @@ public final class CounterExampleReleaseUnitTest { */ @Test public void testReleaseTrueDefinitionOnInfinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); + for (int entry = 0; entry < 4; entry++) { + final LtlTestDescription d = LtlTestDescription.loop(4, entry); + final CounterExampleProposition fst = d.addArgument("fst", "ffft"); + final CounterExampleProposition snd = d.addArgument("snd", "tttt"); + final CounterExampleBinaryOperator release = new CounterExampleRelease( + d.getCounterExample(), fst, snd); + d.checkValues("release", release, "tttt"); - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); + d.expectedHighlight(0, "fstH", 3); + d.expectedHighlight(0, "sndH", 0, 1, 2, 3); - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.expectedHighlight(1, "fstH", 3); + d.expectedHighlight(1, "sndH", 1, 2, 3); - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); + d.expectedHighlight(2, "fstH", 3); + d.expectedHighlight(2, "sndH", 2, 3); - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); + d.expectedHighlight(3, "fstH", 3); + d.expectedHighlight(3, "sndH", 3); - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.checkHighlights("release", release, "fstH", "sndH"); + } } /* @@ -867,2622 +209,2448 @@ public final class CounterExampleReleaseUnitTest { */ @Test public void testReleaseTrueDefinitionOnInfinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3, 0, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 0, 1, 2 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 1, 2 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FFFT, g-TTTF, f R g-FFFF - */ - @Test - public void testReleaseFalseDefinitionOnInfinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); + for (int entry = 0; entry < 4; entry++) { + final LtlTestDescription d = LtlTestDescription.loop(4, entry); + final CounterExampleProposition fst = d.addArgument("fst", "ffff"); + final CounterExampleProposition snd = d.addArgument("snd", "tttt"); + final CounterExampleBinaryOperator release = new CounterExampleRelease( + d.getCounterExample(), fst, snd); + d.checkValues("release", release, "tttt"); - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.expectedHighlight(0, "fstH"); + d.expectedHighlight(0, "sndH", 0, 1, 2, 3); - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); + d.expectedHighlight(1, "fstH"); + d.expectedHighlight(1, "sndH", future(1, 4, entry)); - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); + d.expectedHighlight(2, "fstH"); + d.expectedHighlight(2, "sndH", future(2, 4, entry)); - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 1, - firstArgument, secondArgument); + d.expectedHighlight(3, "fstH"); + d.expectedHighlight(3, "sndH", future(3, 4, entry)); - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FFFF, g-TTTF, f R g-FFFF - */ - @Test - public void testReleaseFalseDefinitionOnInfinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + d.checkHighlights("release", release, "fstH", "sndH"); + } } - /* - * f-TFTF, g-TFFT, f R g-TFFT - */ - @Test - public void testReleaseOnInfinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - releaseOperator = new CounterExampleRelease(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = releaseOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); + // /* + // * f-FFFT, g-TTTF, f R g-FFFF + // */ + // @Test + // public void testReleaseFalseDefinitionOnInfinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FFFF, g-TTTF, f R g-FFFF + // */ + // @Test + // public void testReleaseFalseDefinitionOnInfinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TFTF, g-TFFT, f R g-TFFT + // */ + // @Test + // public void testReleaseOnInfinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // releaseOperator = new CounterExampleRelease(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = releaseOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UUUT, g-TTTT, f R g-TTTT + // */ + // @Test + // public void testReleaseTrueDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FFFF, g-TTTT, f R g-UUUU + // */ + // @Test + // public void testReleaseTrueDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FFFT, g-TTTF, f R g-FFFF + // */ + // @Test + // public void testReleaseFalseDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FFFF, g-FTTT, f R g-FUUU + // */ + // @Test + // public void testReleaseFalseDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FUTU, g-UTUU, f R g-UTTU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FUUU, g-UTFU, f R g-UUFU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FUUU, g-UTUU, f R g-UUUU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FFFF, g-TTTT, f R g-UUUU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath4() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FFFF, g-UUUU, f R g-UUUU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath5() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UUUU, g-UUUU, f R g-UUUU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath6() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UUTF, g-FTTT, f R g-FTTU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath7() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FUTU, g-TUTU, f R g-UUTU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath8() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FFTU, g-TUTU, f R g-UUTU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath9() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FUUU, g-UTFU, f R g-UUFU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath10() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FUUU, g-UUFU, f R g-UUFU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath11() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FTUF, g-FTUU, f R g-FTUU + // */ + // @Test + // public void testReleaseUnknownDefinitionOnReducedPath12() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator releaseOperator = new + // CounterExampleRelease( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = releaseOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = releaseOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = releaseOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + + private static int[] future(int current, int size, int entry) { + final int first = current <= entry ? current : entry; + final int resSize = size - first; + int[] res = new int[resSize]; + for (int i = 0; i < resSize; i++) { + res[i] = first + i; + } + return res; } - /* - * f-UUUT, g-TTTT, f R g-TTTT - */ - @Test - public void testReleaseTrueDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FFFF, g-TTTT, f R g-UUUU - */ - @Test - public void testReleaseTrueDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FFFT, g-TTTF, f R g-FFFF - */ - @Test - public void testReleaseFalseDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FFFF, g-FTTT, f R g-FUUU - */ - @Test - public void testReleaseFalseDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FUTU, g-UTUU, f R g-UTTU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FUUU, g-UTFU, f R g-UUFU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FUUU, g-UTUU, f R g-UUUU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FFFF, g-TTTT, f R g-UUUU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath4() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FFFF, g-UUUU, f R g-UUUU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath5() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UUUU, g-UUUU, f R g-UUUU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath6() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UUTF, g-FTTT, f R g-FTTU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath7() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FUTU, g-TUTU, f R g-UUTU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath8() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - assertTrue(secondHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FFTU, g-TUTU, f R g-UUTU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath9() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FUUU, g-UTFU, f R g-UUFU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath10() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FUUU, g-UUFU, f R g-UUFU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath11() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - assertTrue(secondHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FTUF, g-FTUU, f R g-FTUU - */ - @Test - public void testReleaseUnknownDefinitionOnReducedPath12() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator releaseOperator = new CounterExampleRelease( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = releaseOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = releaseOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = releaseOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleSinceUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleSinceUnitTest.java index d41d7a2918a41f56474509b8567db88188b2ba13..967f926419d1ce9f784d37d9830cc00394ecfa26 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleSinceUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleSinceUnitTest.java @@ -1,18 +1,5 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - -import org.junit.Test; - -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; -import de.prob.core.domainobjects.ltl.CounterExampleProposition; -import de.prob.core.domainobjects.ltl.CounterExampleSince; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; /** * Unit test for a "since" operator. @@ -21,3224 +8,3293 @@ import de.prob.core.domainobjects.ltl.CounterExampleValueType; * */ public final class CounterExampleSinceUnitTest { - /* - * f-FTTT, g-TFFF, f S g-TTTT - */ - @Test - public void testSinceTrueDefinitionOnFinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-FFTT, g-TFFF, f S g-TFFF - */ - @Test - public void testSinceFalseDefinitionOnFinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-FTTT, g-FFFF, f S g-FFFF - */ - @Test - public void testSinceFalseDefinitionOnFinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-TTTT, g-FFFF, f S g-FFFF - */ - @Test - public void testSinceFalseDefinitionOnFinitePath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f - TFFT g - FTFF f S g - FTFF - */ - @Test - public void testSinceOnFinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - } - - /* - * f-FTTT, g-TFFF, f S g-TTTT - */ - @Test - public void testSinceTrueDefinitionOnInfinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-FFTT, g-TFFF, f S g-TFFF - */ - @Test - public void testSinceFalseDefinitionOnInfinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-FTTT, g-FFFF, f S g-FFFF - */ - @Test - public void testSinceFalseDefinitionOnInfinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-TTTT, g-FFFF, f S g-FFFF - */ - @Test - public void testSinceFalseDefinitionOnInfinitePath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - sinceOperator = new CounterExampleSince(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-FTTT, g-TFFF, f S g-TTTT - */ - @Test - public void testSinceTrueDefinitionOnReducedPath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-FFTT, g-TFFF, f S g-TFFF - */ - @Test - public void testSinceFalseDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-FTTT, g-FFFF, f S g-FFFF - */ - @Test - public void testSinceFalseDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-TTTT, g-FFFF, f S g-FFFF - */ - @Test - public void testSinceFalseDefinitionOnReducedPath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-UUTU, g-UTUF, f S g-UTTU - */ - @Test - public void testSinceUnknownDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-UFUU, g-UUFF, f S g-UUUU - */ - @Test - public void testSinceUnknownDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-UUTU, g-UUUF, f S g-UUUU - */ - @Test - public void testSinceUnknownDefinitionOnReducedPath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-TTTT, g-FFFF, f S g-FFFF - */ - @Test - public void testSinceUnknownDefinitionOnReducedPath4() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-TTTT, g-UUUU, f S g-UUUU - */ - @Test - public void testSinceUnknownDefinitionOnReducedPath5() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - // f-TUTU, g-UFUF, f S g-UUUU - @Test - public void testSinceUnknownDefinitionOnReducedPath6() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - // f-UFTU, g-FFTF, f S g-UFTU - @Test - public void testSinceUnknownDefinitionOnReducedPath7() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - } - - // f-UUUU, g-TUUU, f S g-TUUU - @Test - public void testSinceUnknownDefinitionOnReducedPath8() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUFU, g-TUFU, f S g- TUFU - @Test - public void testSinceUnknownDefinitionOnReducedPath9() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-FFUU, g-FUUU, f S g-FUUU - @Test - public void testSinceUnknownDefinitionOnReducedPath10() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUUU, g-UTUU, f S g-UTUU - @Test - public void testSinceUnknownDefinitionOnReducedPath11() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UFUU, g-UUUU, f S g-UUUU - @Test - public void testSinceUnknownDefinitionOnReducedPath12() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UFTU, g-FFTF, f S g-UFTU - */ - @Test - public void testSinceUnknownDefinitionOnReducedPath13() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - } - - /* - * f-UUUU, g-UUUU, f S g-UUUU - */ - @Test - public void testSinceUnknownDefinitionOnReducedPath14() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = sinceOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = sinceOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = sinceOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } + // /* + // * f-FTTT, g-TFFF, f S g-TTTT + // */ + // @Test + // public void testSinceTrueDefinitionOnFinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-FFTT, g-TFFF, f S g-TFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnFinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-FTTT, g-FFFF, f S g-FFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnFinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-TTTT, g-FFFF, f S g-FFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnFinitePath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f - TFFT g - FTFF f S g - FTFF + // */ + // @Test + // public void testSinceOnFinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // } + // + // /* + // * f-FTTT, g-TFFF, f S g-TTTT + // */ + // @Test + // public void testSinceTrueDefinitionOnInfinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-FFTT, g-TFFF, f S g-TFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnInfinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-FTTT, g-FFFF, f S g-FFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnInfinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-TTTT, g-FFFF, f S g-FFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnInfinitePath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator sinceOperator = new CounterExampleSince( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // sinceOperator = new CounterExampleSince(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-FTTT, g-TFFF, f S g-TTTT + // */ + // @Test + // public void testSinceTrueDefinitionOnReducedPath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-FFTT, g-TFFF, f S g-TFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-FTTT, g-FFFF, f S g-FFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-TTTT, g-FFFF, f S g-FFFF + // */ + // @Test + // public void testSinceFalseDefinitionOnReducedPath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-UUTU, g-UTUF, f S g-UTTU + // */ + // @Test + // public void testSinceUnknownDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-UFUU, g-UUFF, f S g-UUUU + // */ + // @Test + // public void testSinceUnknownDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-UUTU, g-UUUF, f S g-UUUU + // */ + // @Test + // public void testSinceUnknownDefinitionOnReducedPath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-TTTT, g-FFFF, f S g-FFFF + // */ + // @Test + // public void testSinceUnknownDefinitionOnReducedPath4() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-TTTT, g-UUUU, f S g-UUUU + // */ + // @Test + // public void testSinceUnknownDefinitionOnReducedPath5() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // // f-TUTU, g-UFUF, f S g-UUUU + // @Test + // public void testSinceUnknownDefinitionOnReducedPath6() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // // f-UFTU, g-FFTF, f S g-UFTU + // @Test + // public void testSinceUnknownDefinitionOnReducedPath7() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // } + // + // // f-UUUU, g-TUUU, f S g-TUUU + // @Test + // public void testSinceUnknownDefinitionOnReducedPath8() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUFU, g-TUFU, f S g- TUFU + // @Test + // public void testSinceUnknownDefinitionOnReducedPath9() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-FFUU, g-FUUU, f S g-FUUU + // @Test + // public void testSinceUnknownDefinitionOnReducedPath10() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUUU, g-UTUU, f S g-UTUU + // @Test + // public void testSinceUnknownDefinitionOnReducedPath11() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UFUU, g-UUUU, f S g-UUUU + // @Test + // public void testSinceUnknownDefinitionOnReducedPath12() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UFTU, g-FFTF, f S g-UFTU + // */ + // @Test + // public void testSinceUnknownDefinitionOnReducedPath13() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // } + // + // /* + // * f-UUUU, g-UUUU, f S g-UUUU + // */ + // @Test + // public void testSinceUnknownDefinitionOnReducedPath14() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator sinceOperator = new + // CounterExampleSince( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = sinceOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = sinceOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = sinceOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleTriggerUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleTriggerUnitTest.java index 8726fa19ecabd2e3593d70e6c0fd2a8e45a4394d..45bc1d3d5c0258adbbfb1d2d38e29e6870a231cc 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleTriggerUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleTriggerUnitTest.java @@ -1,18 +1,5 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - -import org.junit.Test; - -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; -import de.prob.core.domainobjects.ltl.CounterExampleProposition; -import de.prob.core.domainobjects.ltl.CounterExampleTrigger; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; /** * Unit test for a "trigger" operator. @@ -21,3432 +8,3496 @@ import de.prob.core.domainobjects.ltl.CounterExampleValueType; * */ public final class CounterExampleTriggerUnitTest { - /* - * f-TFFF, g-TTTT, f T g-TTTT - */ - @Test - public void testTriggerTrueDefinitionOnFinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-FFFF, g-TTTT, f T g-TTTT - */ - @Test - public void testTriggerTrueDefinitionOnFinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-TFFF, g-FTTT, f T g-FFFF - */ - @Test - public void testTriggerFalseDefinitionOnFinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-FFFF, g-FTTT, f T g-FFFF - */ - @Test - public void testTriggerFalseDefinitionOnFinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-FTFT, g-TFFT, f T g-TFFT - */ - @Test - public void testTriggerOnFinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FTTF, g-TTFT, f T g-TTFF - */ - @Test - public void testTriggerOnFinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.FINITE, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); - } - - /* - * f-TFFF, g-TTTT, f T g-TTTT - */ - @Test - public void testTriggerTrueDefinitionOnInfinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-FFFF, g-TTTT, f T g-TTTT - */ - @Test - public void testTriggerTrueDefinitionOnInfinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-TFFF, g-FTTT, f T g-FFFF - */ - @Test - public void testTriggerFalseDefinitionOnInfinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-FFFF, g-FTTT, f T g-FFFF - */ - @Test - public void testTriggerFalseDefinitionOnInfinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-FTFT, g-TFFT, f T g-TFFT - */ - @Test - public void testTriggerOnInfinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = triggerOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TFFF, g-TTTT, f T g-TTTT - */ - @Test - public void testTriggerTrueDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-FFFF, g-TTTT, f T g-TTTT - */ - @Test - public void testTriggerTrueDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-TFFF, g-FTTT, f T g-FFFF - */ - @Test - public void testTriggerFalseDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-FFFF, g-FTTT, f T g-FFFF - */ - @Test - public void testTriggerFalseDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - } - - /* - * f-UTUF, g-UUTU, f T g-UTTU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-UUUF, g-UFTU, f T g-UFFU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-UUUF, g-UUTU, f T g-UUUU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-FFFF, g-TTTT, f T g-TTTT - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath4() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-FFFF, g-UUUU, f T g-UUUU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath5() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 0 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1, 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1, 0 })); - } - - /* - * f-UUUU, g-UUUU, f T g-UUUU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath6() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-FTUU, g-TTTF, f T g-TTTF - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath7() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTUF, g-UTUT, f T g-UTUU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath8() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - } - - /* - * f-UTFF, g-UTUT, f T g-UTUU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath9() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-UUUF, g-UFTU, f T g-UFUU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath10() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - assertTrue(secondHighlightedPositions.get(3).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2, 1 })); - } - - /* - * f-UUUF, g-UFUU, f T g-UFUU - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath11() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - } - - /* - * f-FUTF, g-UUTF, f T g-UUTF - */ - @Test - public void testTriggerUnknownDefinitionOnReducedPath12() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = triggerOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = triggerOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = triggerOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } + // /* + // * f-TFFF, g-TTTT, f T g-TTTT + // */ + // @Test + // public void testTriggerTrueDefinitionOnFinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.FINITE, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-FFFF, g-TTTT, f T g-TTTT + // */ + // @Test + // public void testTriggerTrueDefinitionOnFinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-TFFF, g-FTTT, f T g-FFFF + // */ + // @Test + // public void testTriggerFalseDefinitionOnFinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-FFFF, g-FTTT, f T g-FFFF + // */ + // @Test + // public void testTriggerFalseDefinitionOnFinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-FTFT, g-TFFT, f T g-TFFT + // */ + // @Test + // public void testTriggerOnFinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FTTF, g-TTFT, f T g-TTFF + // */ + // @Test + // public void testTriggerOnFinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.FINITE, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.FINITE, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.FINITE, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 2 })); + // } + // + // /* + // * f-TFFF, g-TTTT, f T g-TTTT + // */ + // @Test + // public void testTriggerTrueDefinitionOnInfinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-FFFF, g-TTTT, f T g-TTTT + // */ + // @Test + // public void testTriggerTrueDefinitionOnInfinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-TFFF, g-FTTT, f T g-FFFF + // */ + // @Test + // public void testTriggerFalseDefinitionOnInfinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-FFFF, g-FTTT, f T g-FFFF + // */ + // @Test + // public void testTriggerFalseDefinitionOnInfinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-FTFT, g-TFFT, f T g-TFFT + // */ + // @Test + // public void testTriggerOnInfinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate(PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // triggerOperator = new CounterExampleTrigger(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = triggerOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TFFF, g-TTTT, f T g-TTTT + // */ + // @Test + // public void testTriggerTrueDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-FFFF, g-TTTT, f T g-TTTT + // */ + // @Test + // public void testTriggerTrueDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-TFFF, g-FTTT, f T g-FFFF + // */ + // @Test + // public void testTriggerFalseDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-FFFF, g-FTTT, f T g-FFFF + // */ + // @Test + // public void testTriggerFalseDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // } + // + // /* + // * f-UTUF, g-UUTU, f T g-UTTU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-UUUF, g-UFTU, f T g-UFFU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-UUUF, g-UUTU, f T g-UUUU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-FFFF, g-TTTT, f T g-TTTT + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath4() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-FFFF, g-UUUU, f T g-UUUU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath5() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 0 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1, 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1, 0 })); + // } + // + // /* + // * f-UUUU, g-UUUU, f T g-UUUU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath6() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-FTUU, g-TTTF, f T g-TTTF + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath7() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTUF, g-UTUT, f T g-UTUU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath8() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // } + // + // /* + // * f-UTFF, g-UTUT, f T g-UTUU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath9() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-UUUF, g-UFTU, f T g-UFUU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath10() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2, 1 })); + // } + // + // /* + // * f-UUUF, g-UFUU, f T g-UFUU + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath11() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator triggerOperator = new + // CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // } + // + // /* + // * f-FUTF, g-UUTF, f T g-UUTF + // */ + // @Test + // public void testTriggerUnknownDefinitionOnReducedPath12() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator triggerOperator = new CounterExampleTrigger( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = triggerOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = triggerOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = triggerOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleUntilUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleUntilUnitTest.java index 1e7e0a7b5bf586f945c8d80ce7663d29f92c27de..f94c169e5c6fd88020decff033c4368f33660e9f 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleUntilUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleUntilUnitTest.java @@ -1,18 +1,5 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - -import org.junit.Test; - -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; -import de.prob.core.domainobjects.ltl.CounterExampleProposition; -import de.prob.core.domainobjects.ltl.CounterExampleUntil; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; /** * Unit test for an "until" operator. @@ -21,2286 +8,2352 @@ import de.prob.core.domainobjects.ltl.CounterExampleValueType; * */ public final class CounterExampleUntilUnitTest { - /* - * f-TTTF, g-FFFT, f U g-TTTT - */ - @Test - public void testUntilTrueDefinitionOnFinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTTF, g-FFFF, f U g-FFFF - */ - @Test - public void testUntilFalseDefinitionOnFinitePath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTFF, g-FFFT, f U g-FFFT - */ - @Test - public void testUntilFalseDefinitionOnFinitePath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTTT, g-FFFF, f U g-FFFF - */ - @Test - public void testUntilFalseDefinitionOnFinitePath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f - TFFT g - FTFF f U g - TTFF - */ - @Test - public void testUntilOnFinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f - TFFT g - FTFF - */ - @Test - public void testUntilOnInfinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 0 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - untilOperator = new CounterExampleUntil(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - untilOperator = new CounterExampleUntil(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - untilOperator = new CounterExampleUntil(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTTU, g-UUUT, f U g-TTTT - */ - @Test - public void testUntilTrueDefinitionOnReducedPath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UUFU, g-FFFT, f U g-FFFT - */ - @Test - public void testUntilFalseDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UUUF, g-FFFF, f U g-FFFF - */ - @Test - public void testUntilFalseDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTUU, g-FUTU, f U g-UTTU - */ - @Test - public void testUntilUnknownDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UUFU, g-FFUU, f U g-UUUU - */ - @Test - public void testUntilUnknownDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTUU, g-FUUU, f U g-UUUU - */ - @Test - public void testUntilUnknownDefinitionOnReducedPath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTTT, g-FFFF, f U g-UUUU - */ - @Test - public void testUntilUnknownDefinitionOnReducedPath4() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTTT, g-UUUU, f U g-UUUU - */ - @Test - public void testUntilUnknownDefinitionOnReducedPath5() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTUT, g-FUFU, f U g-UUUU - */ - @Test - public void testUntilOnReducedPathUnknownDefinition6() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTFU, g-FTFF, f U g-UTFU - */ - @Test - public void testUntilOnReducedPathUnknownDefinition7() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUUU, g-UUUT, f U g-UUUT - @Test - public void testUntilUnknownDefinitionOnReducedPath8() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UFUU, g-UFUT, f U g-UFUT - @Test - public void testUntilUnknownDefinitionOnReducedPath9() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUFF, g-UUUF, f U g-UUUF - @Test - public void testUntilUnknownDefinitionOnReducedPath10() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUUU, g-UUTU, f U g-UUTU - @Test - public void testUntilUnknownDefinitionOnReducedPath11() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUFU, g-UUUU, f U g-UUUU - @Test - public void testUntilUnknownDefinitionOnReducedPath12() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f - UTFU g - FTFF f U g - UTFU - */ - @Test - public void testUntilOnReducedPathUnknownDefinition13() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f - UUUU g - UUUU f U g - UUUU - */ - @Test - public void testUntilOnReducedPathUnknownDefinition14() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = untilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = untilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = untilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } + // /* + // * f-TTTF, g-FFFT, f U g-TTTT + // */ + // @Test + // public void testUntilTrueDefinitionOnFinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTTF, g-FFFF, f U g-FFFF + // */ + // @Test + // public void testUntilFalseDefinitionOnFinitePath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTFF, g-FFFT, f U g-FFFT + // */ + // @Test + // public void testUntilFalseDefinitionOnFinitePath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTTT, g-FFFF, f U g-FFFF + // */ + // @Test + // public void testUntilFalseDefinitionOnFinitePath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f - TFFT g - FTFF f U g - TTFF + // */ + // @Test + // public void testUntilOnFinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f - TFFT g - FTFF + // */ + // @Test + // public void testUntilOnInfinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator untilOperator = new CounterExampleUntil( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 0 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // untilOperator = new CounterExampleUntil(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // untilOperator = new CounterExampleUntil(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // untilOperator = new CounterExampleUntil(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTTU, g-UUUT, f U g-TTTT + // */ + // @Test + // public void testUntilTrueDefinitionOnReducedPath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UUFU, g-FFFT, f U g-FFFT + // */ + // @Test + // public void testUntilFalseDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UUUF, g-FFFF, f U g-FFFF + // */ + // @Test + // public void testUntilFalseDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTUU, g-FUTU, f U g-UTTU + // */ + // @Test + // public void testUntilUnknownDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UUFU, g-FFUU, f U g-UUUU + // */ + // @Test + // public void testUntilUnknownDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTUU, g-FUUU, f U g-UUUU + // */ + // @Test + // public void testUntilUnknownDefinitionOnReducedPath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTTT, g-FFFF, f U g-UUUU + // */ + // @Test + // public void testUntilUnknownDefinitionOnReducedPath4() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTTT, g-UUUU, f U g-UUUU + // */ + // @Test + // public void testUntilUnknownDefinitionOnReducedPath5() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTUT, g-FUFU, f U g-UUUU + // */ + // @Test + // public void testUntilOnReducedPathUnknownDefinition6() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTFU, g-FTFF, f U g-UTFU + // */ + // @Test + // public void testUntilOnReducedPathUnknownDefinition7() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUUU, g-UUUT, f U g-UUUT + // @Test + // public void testUntilUnknownDefinitionOnReducedPath8() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UFUU, g-UFUT, f U g-UFUT + // @Test + // public void testUntilUnknownDefinitionOnReducedPath9() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUFF, g-UUUF, f U g-UUUF + // @Test + // public void testUntilUnknownDefinitionOnReducedPath10() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUUU, g-UUTU, f U g-UUTU + // @Test + // public void testUntilUnknownDefinitionOnReducedPath11() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUFU, g-UUUU, f U g-UUUU + // @Test + // public void testUntilUnknownDefinitionOnReducedPath12() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f - UTFU g - FTFF f U g - UTFU + // */ + // @Test + // public void testUntilOnReducedPathUnknownDefinition13() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f - UUUU g - UUUU f U g - UUUU + // */ + // @Test + // public void testUntilOnReducedPathUnknownDefinition14() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator untilOperator = new + // CounterExampleUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = untilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = untilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = untilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleWeakUntilUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleWeakUntilUnitTest.java index d34fdc6c62a857834503910b379c40483b121801..db33abab5280f1fe13d283aec6c4e1a095dd5086 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleWeakUntilUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleWeakUntilUnitTest.java @@ -1,18 +1,5 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - -import org.junit.Test; - -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; -import de.prob.core.domainobjects.ltl.CounterExampleProposition; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; -import de.prob.core.domainobjects.ltl.CounterExampleWeakUntil; /** * Unit test for a "weak until" operator. @@ -21,2111 +8,2172 @@ import de.prob.core.domainobjects.ltl.CounterExampleWeakUntil; * */ public final class CounterExampleWeakUntilUnitTest { - /* - * f-TTTF, g-FFFT, f WU g-TTTT - */ - @Test - public void testWeakUntilOnFinitePathTrueDefinition1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTTT, g-FFFF, f WU g-TTTT - */ - @Test - public void testWeakUntilOnFinitePathTrueDefinition2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 0); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 0); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 0); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 0); - } - - /* - * f-TTTF, g-FFFF, f WU g-FFFF - */ - @Test - public void testWeakUntilOnFinitePathFalseDefinition1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTFF, g-FFFT, f WU g-FFFT - */ - @Test - public void testWeakUntilOnFinitePathFalseDefinition2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f - FFTT g - TFFF f WU g - TFTT - */ - @Test - public void testWeakUntilOnFinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 0); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 0); - } - - /* - * f - FFTT g - TFFF - */ - @Test - public void testWeakUntilOnInfinitePath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // Loop entry = 0 - // create first argument - CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, firstArgumentValues); - - // create second argument - CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.INFINITE, 0, secondArgumentValues); - - // create an operator - CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.INFINITE, 0, firstArgument, secondArgument); - - // check result values - List<CounterExampleValueType> values = weakUntilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 0 })); - - // Loop entry = 1 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, - secondArgumentValues); - - // create an operator - weakUntilOperator = new CounterExampleWeakUntil(PathType.INFINITE, 1, - firstArgument, secondArgument); - - // check result values - values = weakUntilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(2).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3, 1 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 1 })); - - // Loop entry = 2 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, - secondArgumentValues); - - // create an operator - weakUntilOperator = new CounterExampleWeakUntil(PathType.INFINITE, 2, - firstArgument, secondArgument); - - // check result values - values = weakUntilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 0); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3, 2 })); - assertTrue(secondHighlightedPositions.get(3).size() == 0); - - // Loop entry = 3 - // create first argument - firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - firstArgumentValues); - - // create second argument - secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, - secondArgumentValues); - - // create an operator - weakUntilOperator = new CounterExampleWeakUntil(PathType.INFINITE, 3, - firstArgument, secondArgument); - - // check result values - values = weakUntilOperator.getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 0); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 0); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 0); - } - - /* - * f-TTTU, g-UUUT, f WU g-TTTT - */ - @Test - public void testWeakUntilTrueDefinitionOnReducedPath() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.FINITE, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.FINITE, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.TRUE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTUU, g-FUTU, f WU g-UTTU - */ - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath1() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UUFU, g-FFUU, f WU g-UUUU - */ - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath2() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTUU, g-FUUU, f WU g-UUUU - */ - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath3() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - assertTrue(secondHighlightedPositions.get(0).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - assertTrue(secondHighlightedPositions.get(1).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTTT, g-FFFF, f WU g-UUUU - */ - @Test - public void testWeakUntilOnReducedPathUnknownDefinition4() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-TTTT, g-UUUU, f WU g-UUUU - */ - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath5() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTUT, g-FUFU, f WU g-UUUU - */ - @Test - public void testWeakUntilOnReducedPathUnknownDefinition6() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(0).size() == 4); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1, 2, 3 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - assertTrue(secondHighlightedPositions.get(1).size() == 3); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1, 2, 3 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - assertTrue(secondHighlightedPositions.get(2).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2, 3 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f-UTFU, g-FTFF, f WU g-UTFU - */ - @Test - public void testWeakUntilOnReducedPathUnknownDefinition7() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUUU, g-UUUT, f WU g-UUUT - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath8() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UFUU, g-UFUT, f WU g-UFUT - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath9() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.TRUE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 0); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUFF, g-UUUF, f WU g-UUUF - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath10() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUUU, g-UUTU, f WU g-UUTU - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath11() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 0); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - // f-UUFU, g-UUUU, f WU g-UUUU - @Test - public void testWeakUntilUnknownDefinitionOnReducedPath12() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - PathType.REDUCED, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - PathType.REDUCED, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f - UTFU g - FTFF f WU g - UTFU - */ - @Test - public void testWeakUntilOnReducedPathUnknownDefinition13() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.FALSE }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.FALSE); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 2); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0, 1 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 0); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } - - /* - * f - UUUU g - UUUU f WU g - UUUU - */ - @Test - public void testWeakUntilOnReducedPathUnknownDefinition14() { - // create first argument values - final List<CounterExampleValueType> firstArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create second argument values - final List<CounterExampleValueType> secondArgumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.UNKNOWN }); - - // create first argument - final CounterExampleProposition firstArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, firstArgumentValues); - - // create second argument - final CounterExampleProposition secondArgument = new CounterExamplePredicate( - "", PathType.REDUCED, -1, secondArgumentValues); - - // create an operator - final CounterExampleBinaryOperator weakUntilOperator = new CounterExampleWeakUntil( - PathType.REDUCED, -1, firstArgument, secondArgument); - - // check result values - final List<CounterExampleValueType> values = weakUntilOperator - .getValues(); - assertTrue(values.size() == firstArgumentValues.size()); - assertTrue(values.size() == secondArgumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); - - // check highlighted positions - final List<List<Integer>> firstHighlightedPositions = weakUntilOperator - .getFirstHighlightedPositions(); - final List<List<Integer>> secondHighlightedPositions = weakUntilOperator - .getSecondHighlightedPositions(); - assertTrue(firstHighlightedPositions.size() == firstArgumentValues - .size()); - assertTrue(secondHighlightedPositions.size() == secondArgumentValues - .size()); - - // State 0 - assertTrue(firstHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - assertTrue(secondHighlightedPositions.get(0).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(0).toArray(new Integer[0]), - new Integer[] { 0 })); - - // State 1 - assertTrue(firstHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - assertTrue(secondHighlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 1 })); - - // State 2 - assertTrue(firstHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - assertTrue(secondHighlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 2 })); - - // State 3 - assertTrue(firstHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - firstHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - assertTrue(secondHighlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - secondHighlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 3 })); - } + // /* + // * f-TTTF, g-FFFT, f WU g-TTTT + // */ + // @Test + // public void testWeakUntilOnFinitePathTrueDefinition1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTTT, g-FFFF, f WU g-TTTT + // */ + // @Test + // public void testWeakUntilOnFinitePathTrueDefinition2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 0); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 0); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 0); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 0); + // } + // + // /* + // * f-TTTF, g-FFFF, f WU g-FFFF + // */ + // @Test + // public void testWeakUntilOnFinitePathFalseDefinition1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTFF, g-FFFT, f WU g-FFFT + // */ + // @Test + // public void testWeakUntilOnFinitePathFalseDefinition2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.FALSE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f - FFTT g - TFFF f WU g - TFTT + // */ + // @Test + // public void testWeakUntilOnFinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 0); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 0); + // } + // + // /* + // * f - FFTT g - TFFF + // */ + // @Test + // public void testWeakUntilOnInfinitePath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // Loop entry = 0 + // // create first argument + // CounterExampleProposition firstArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, firstArgumentValues); + // + // // create second argument + // CounterExampleProposition secondArgument = new CounterExamplePredicate( + // "", PathType.INFINITE, 0, secondArgumentValues); + // + // // create an operator + // CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.INFINITE, 0, firstArgument, secondArgument); + // + // // check result values + // List<CounterExampleValueType> values = weakUntilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // Loop entry = 1 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 1, + // secondArgumentValues); + // + // // create an operator + // weakUntilOperator = new CounterExampleWeakUntil(PathType.INFINITE, 1, + // firstArgument, secondArgument); + // + // // check result values + // values = weakUntilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3, 1 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 1 })); + // + // // Loop entry = 2 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 2, + // secondArgumentValues); + // + // // create an operator + // weakUntilOperator = new CounterExampleWeakUntil(PathType.INFINITE, 2, + // firstArgument, secondArgument); + // + // // check result values + // values = weakUntilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 0); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3, 2 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 0); + // + // // Loop entry = 3 + // // create first argument + // firstArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // firstArgumentValues); + // + // // create second argument + // secondArgument = new CounterExamplePredicate("", PathType.INFINITE, 3, + // secondArgumentValues); + // + // // create an operator + // weakUntilOperator = new CounterExampleWeakUntil(PathType.INFINITE, 3, + // firstArgument, secondArgument); + // + // // check result values + // values = weakUntilOperator.getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 0); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 0); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 0); + // } + // + // /* + // * f-TTTU, g-UUUT, f WU g-TTTT + // */ + // @Test + // public void testWeakUntilTrueDefinitionOnReducedPath() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.FINITE, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.FINITE, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.TRUE); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTUU, g-FUTU, f WU g-UTTU + // */ + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath1() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UUFU, g-FFUU, f WU g-UUUU + // */ + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath2() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTUU, g-FUUU, f WU g-UUUU + // */ + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath3() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTTT, g-FFFF, f WU g-UUUU + // */ + // @Test + // public void testWeakUntilOnReducedPathUnknownDefinition4() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-TTTT, g-UUUU, f WU g-UUUU + // */ + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath5() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTUT, g-FUFU, f WU g-UUUU + // */ + // @Test + // public void testWeakUntilOnReducedPathUnknownDefinition6() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 4); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1, 2, 3 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 3); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1, 2, 3 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2, 3 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f-UTFU, g-FTFF, f WU g-UTFU + // */ + // @Test + // public void testWeakUntilOnReducedPathUnknownDefinition7() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUUU, g-UUUT, f WU g-UUUT + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath8() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UFUU, g-UFUT, f WU g-UFUT + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath9() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.FALSE); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.TRUE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 0); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUFF, g-UUUF, f WU g-UUUF + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath10() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.FALSE); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUUU, g-UUTU, f WU g-UUTU + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath11() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.TRUE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 0); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // // f-UUFU, g-UUUU, f WU g-UUUU + // @Test + // public void testWeakUntilUnknownDefinitionOnReducedPath12() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // PathType.REDUCED, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f - UTFU g - FTFF f WU g - UTFU + // */ + // @Test + // public void testWeakUntilOnReducedPathUnknownDefinition13() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.FALSE, + // CounterExampleValueType.TRUE, + // CounterExampleValueType.FALSE, + // CounterExampleValueType.FALSE }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.TRUE); + // assertTrue(values.get(2) == CounterExampleValueType.FALSE); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 2); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0, 1 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 0); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } + // + // /* + // * f - UUUU g - UUUU f WU g - UUUU + // */ + // @Test + // public void testWeakUntilOnReducedPathUnknownDefinition14() { + // // create first argument values + // final List<CounterExampleValueType> firstArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create second argument values + // final List<CounterExampleValueType> secondArgumentValues = Arrays + // .asList(new CounterExampleValueType[] { + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN, + // CounterExampleValueType.UNKNOWN }); + // + // // create first argument + // final CounterExampleProposition firstArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, firstArgumentValues); + // + // // create second argument + // final CounterExampleProposition secondArgument = new + // CounterExamplePredicate( + // "", PathType.REDUCED, -1, secondArgumentValues); + // + // // create an operator + // final CounterExampleBinaryOperator weakUntilOperator = new + // CounterExampleWeakUntil( + // PathType.REDUCED, -1, firstArgument, secondArgument); + // + // // check result values + // final List<CounterExampleValueType> values = weakUntilOperator + // .getValues(); + // assertTrue(values.size() == firstArgumentValues.size()); + // assertTrue(values.size() == secondArgumentValues.size()); + // assertTrue(values.get(0) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(1) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); + // assertTrue(values.get(3) == CounterExampleValueType.UNKNOWN); + // + // // check highlighted positions + // final List<List<Integer>> firstHighlightedPositions = weakUntilOperator + // .getFirstHighlightedPositions(); + // final List<List<Integer>> secondHighlightedPositions = weakUntilOperator + // .getSecondHighlightedPositions(); + // assertTrue(firstHighlightedPositions.size() == firstArgumentValues + // .size()); + // assertTrue(secondHighlightedPositions.size() == secondArgumentValues + // .size()); + // + // // State 0 + // assertTrue(firstHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // assertTrue(secondHighlightedPositions.get(0).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(0).toArray(new Integer[0]), + // new Integer[] { 0 })); + // + // // State 1 + // assertTrue(firstHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // assertTrue(secondHighlightedPositions.get(1).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(1).toArray(new Integer[0]), + // new Integer[] { 1 })); + // + // // State 2 + // assertTrue(firstHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // assertTrue(secondHighlightedPositions.get(2).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(2).toArray(new Integer[0]), + // new Integer[] { 2 })); + // + // // State 3 + // assertTrue(firstHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // firstHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // assertTrue(secondHighlightedPositions.get(3).size() == 1); + // assertTrue(Arrays.equals( + // secondHighlightedPositions.get(3).toArray(new Integer[0]), + // new Integer[] { 3 })); + // } } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleYesterdayUnitTest.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleYesterdayUnitTest.java index 5518e5b60f3cba0ce65f9b7b95471c1137e3176c..b7b7e2548bc1d2494bea2ebd6251a825db651e77 100644 --- a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleYesterdayUnitTest.java +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/CounterExampleYesterdayUnitTest.java @@ -1,17 +1,9 @@ package de.prob.core.domainobjects.ltl.unittests; -import static org.junit.Assert.assertTrue; - -import java.util.Arrays; -import java.util.List; - import org.junit.Test; -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.core.domainobjects.ltl.CounterExamplePredicate; import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleUnaryOperator; -import de.prob.core.domainobjects.ltl.CounterExampleValueType; import de.prob.core.domainobjects.ltl.CounterExampleYesterday; /** @@ -27,52 +19,8 @@ public final class CounterExampleYesterdayUnitTest { */ @Test public void testYesterdayOnFinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - PathType.FINITE, argumentValues); - - // create an operator - final CounterExampleUnaryOperator yesterdayOperator = new CounterExampleYesterday( - PathType.FINITE, argument); - - // check result values - final List<CounterExampleValueType> values = yesterdayOperator - .getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = yesterdayOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - assertTrue(highlightedPositions.get(0).size() == 0); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); + final LtlTestDescription d = LtlTestDescription.finite(4); + checkYesterdayFTFT(d); } /* @@ -80,166 +28,10 @@ public final class CounterExampleYesterdayUnitTest { */ @Test public void testYesterdayOnInfinitePath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // Loop entry = 0 - // create an argument - CounterExampleProposition argument = new CounterExamplePredicate( - PathType.INFINITE, 0, argumentValues); - - // create an operator - CounterExampleUnaryOperator yesterdayOperator = new CounterExampleYesterday( - PathType.INFINITE, 0, argument); - - // check result values - List<CounterExampleValueType> values = yesterdayOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - List<List<Integer>> highlightedPositions = yesterdayOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - assertTrue(highlightedPositions.get(0).size() == 0); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); - - // Loop entry = 1 - // create an argument - argument = new CounterExamplePredicate(PathType.INFINITE, 1, - argumentValues); - - // create an operator - yesterdayOperator = new CounterExampleYesterday(PathType.INFINITE, 1, - argument); - - // check result values - values = yesterdayOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = yesterdayOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - assertTrue(highlightedPositions.get(0).size() == 0); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); - - // Loop entry = 2 - // create an argument - argument = new CounterExamplePredicate(PathType.INFINITE, 2, - argumentValues); - - // create an operator - yesterdayOperator = new CounterExampleYesterday(PathType.INFINITE, 2, - argument); - - // check result values - values = yesterdayOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = yesterdayOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - assertTrue(highlightedPositions.get(0).size() == 0); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); - - // Loop entry = 3 - // create an argument - argument = new CounterExamplePredicate(PathType.INFINITE, 3, - argumentValues); - - // create an operator - yesterdayOperator = new CounterExampleYesterday(PathType.INFINITE, 3, - argument); - - // check result values - values = yesterdayOperator.getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.FALSE); - assertTrue(values.get(2) == CounterExampleValueType.TRUE); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - highlightedPositions = yesterdayOperator.getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - assertTrue(highlightedPositions.get(0).size() == 0); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); + for (int entry = 0; entry < 4; entry++) { + final LtlTestDescription d = LtlTestDescription.loop(4, entry); + checkYesterdayFTFT(d); + } } /* @@ -247,52 +39,28 @@ public final class CounterExampleYesterdayUnitTest { */ @Test public void testYesterdayOnReducedPath() { - // create argument values - final List<CounterExampleValueType> argumentValues = Arrays - .asList(new CounterExampleValueType[] { - CounterExampleValueType.TRUE, - CounterExampleValueType.UNKNOWN, - CounterExampleValueType.FALSE, - CounterExampleValueType.TRUE }); - - // create an argument - final CounterExampleProposition argument = new CounterExamplePredicate( - PathType.REDUCED, argumentValues); - - // create an operator - final CounterExampleUnaryOperator yesterdayOperator = new CounterExampleYesterday( - PathType.REDUCED, argument); - - // check result values - final List<CounterExampleValueType> values = yesterdayOperator - .getValues(); - assertTrue(values.size() == argumentValues.size()); - assertTrue(values.get(0) == CounterExampleValueType.FALSE); - assertTrue(values.get(1) == CounterExampleValueType.TRUE); - assertTrue(values.get(2) == CounterExampleValueType.UNKNOWN); - assertTrue(values.get(3) == CounterExampleValueType.FALSE); - - // check highlighted positions - final List<List<Integer>> highlightedPositions = yesterdayOperator - .getHighlightedPositions(); - assertTrue(highlightedPositions.size() == argumentValues.size()); - - assertTrue(highlightedPositions.get(0).size() == 0); - - assertTrue(highlightedPositions.get(1).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(1).toArray(new Integer[0]), - new Integer[] { 0 })); - - assertTrue(highlightedPositions.get(2).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(2).toArray(new Integer[0]), - new Integer[] { 1 })); - - assertTrue(highlightedPositions.get(3).size() == 1); - assertTrue(Arrays.equals( - highlightedPositions.get(3).toArray(new Integer[0]), - new Integer[] { 2 })); + final LtlTestDescription d = LtlTestDescription.reduced(4); + final CounterExampleProposition arg = d.addArgument("arg", "tuft"); + final CounterExampleUnaryOperator yesterday = new CounterExampleYesterday( + d.getCounterExample(), arg); + d.checkValues("yesterday", yesterday, "ftuf"); + d.expectedHighlight(0, "yestH"); + d.expectedHighlight(1, "yestH", 0); + d.expectedHighlight(2, "yestH", 1); + d.expectedHighlight(3, "yestH", 2); + d.checkHighlights("yesterday", yesterday, "yestH"); + } + private void checkYesterdayFTFT(final LtlTestDescription d) { + final CounterExampleProposition arg = d.addArgument("arg", "ftft"); + final CounterExampleUnaryOperator yesterday = new CounterExampleYesterday( + d.getCounterExample(), arg); + d.checkValues("yesterday", yesterday, "fftf"); + d.expectedHighlight(0, "yestH"); + d.expectedHighlight(1, "yestH", 0); + d.expectedHighlight(2, "yestH", 1); + d.expectedHighlight(3, "yestH", 2); + d.checkHighlights("yesterday", yesterday, "yestH"); } + } diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/LtlTestDescription.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/LtlTestDescription.java new file mode 100644 index 0000000000000000000000000000000000000000..20b7f4000b856cb5646c96f32811ff325979e105 --- /dev/null +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/LtlTestDescription.java @@ -0,0 +1,146 @@ +package de.prob.core.domainobjects.ltl.unittests; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; + +import junit.framework.Assert; +import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.ltl.CounterExample; +import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; +import de.prob.core.domainobjects.ltl.CounterExamplePredicate; +import de.prob.core.domainobjects.ltl.CounterExampleProposition; +import de.prob.core.domainobjects.ltl.CounterExampleUnaryOperator; +import de.prob.core.domainobjects.ltl.CounterExampleValueType; + +public class LtlTestDescription { + private final CounterExample counterExample; + private final Map<String, ArrayList<int[]>> expectedHighlights = new HashMap<String, ArrayList<int[]>>(); + + private LtlTestDescription(int size, PathType pathType, int loopEntry) { + super(); + this.counterExample = new TestCounterExample(loopEntry, pathType, size); + } + + public static LtlTestDescription loop(int size, int entry) { + if (entry < 0 || entry >= size) { + throw new IllegalArgumentException("unexpected entry point"); + } + return new LtlTestDescription(size, PathType.INFINITE, entry); + } + + public static LtlTestDescription finite(int size) { + return new LtlTestDescription(size, PathType.FINITE, -1); + } + + public static LtlTestDescription reduced(int size) { + return new LtlTestDescription(size, PathType.REDUCED, -1); + } + + public CounterExampleProposition addArgument(final String name, + final String desc) { + List<CounterExampleValueType> values = createValues(desc); + CounterExamplePredicate prop = new CounterExamplePredicate(name, + counterExample, values); + return prop; + } + + private List<CounterExampleValueType> createValues(final String desc) { + final int length = desc.length(); + final int size = counterExample.getCounterExampleSize(); + if (length != size) { + throw new IllegalArgumentException("Expected length " + size + + " for argument '" + desc + "'"); + } + List<CounterExampleValueType> values = new ArrayList<CounterExampleValueType>(); + for (int i = 0; i < length; i++) { + final char c = desc.charAt(i); + final CounterExampleValueType value; + switch (c) { + case 't': + value = CounterExampleValueType.TRUE; + break; + case 'f': + value = CounterExampleValueType.FALSE; + break; + case 'u': + value = CounterExampleValueType.UNKNOWN; + break; + default: + throw new IllegalArgumentException("unexpected char " + c + + "in '" + desc + "'"); + } + values.add(value); + } + return values; + } + + public CounterExample getCounterExample() { + return counterExample; + } + + public void expectedHighlight(final int pos, final String name, + final int... highlights) { + if (expectedHighlights.containsKey(name)) { + + } else { + expectedHighlights.put(name, new ArrayList<int[]>()); + } + Collection<int[]> highlightList = expectedHighlights.get(name); + final int expectedPos = highlightList.size(); + if (expectedPos != pos) { + throw new IllegalArgumentException("Unexpected position (was " + + pos + " instead of " + expectedPos + + ")for Highlight list '" + name + "'"); + } + highlightList.add(highlights); + } + + public void checkValues(String name, CounterExampleProposition prop, + String expected) { + final List<CounterExampleValueType> values = prop.getValues(); + List<CounterExampleValueType> expValues = createValues(expected); + Assert.assertEquals(name + ": values", expValues, values); + } + + public void checkHighlights(String name, CounterExampleUnaryOperator op, + String highlights) { + checkHighlights(name, op.getHighlightedPositions(), highlights); + } + + public void checkHighlights(String name, CounterExampleBinaryOperator op, + String highlights1, String highlights2) { + checkHighlights(name, op.getFirstHighlightedPositions(), highlights1); + checkHighlights(name, op.getSecondHighlightedPositions(), highlights2); + } + + private void checkHighlights(String name, List<List<Integer>> actual, + String highlights) { + ArrayList<int[]> hl = expectedHighlights.get(highlights); + if (hl == null) { + throw new IllegalArgumentException(name + ": highlights '" + + highlights + "' not registered"); + } + int size = counterExample.getCounterExampleSize(); + if (hl.size() != size) { + throw new IllegalArgumentException(name + ": expected " + size + + " highlights but only " + hl.size() + " registered in '" + + highlights + "'"); + } + Assert.assertEquals(name + ": number of highlights", size, + actual.size()); + for (int i = 0; i < size; i++) { + Set<Integer> expectedH = new TreeSet<Integer>(); + for (int e : hl.get(i)) { + expectedH.add(e); + } + Set<Integer> actualH = new TreeSet<Integer>(actual.get(i)); + Assert.assertEquals(name + ": highlight pos " + i, expectedH, + actualH); + } + } +} diff --git a/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/TestCounterExample.java b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/TestCounterExample.java new file mode 100644 index 0000000000000000000000000000000000000000..2c075e9da5fee99d9da865c7a3e9a77ed735eb16 --- /dev/null +++ b/de.prob.core/test/de/prob/core/domainobjects/ltl/unittests/TestCounterExample.java @@ -0,0 +1,22 @@ +package de.prob.core.domainobjects.ltl.unittests; + +import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.ltl.CounterExample; + +public class TestCounterExample extends CounterExample { + public TestCounterExample(int loopEntry, PathType pathType, int ceSize) { + super(null, loopEntry, null, pathType, ceSize); + } + + public static CounterExample finite(int size) { + return new TestCounterExample(-1, PathType.FINITE, size); + } + + public static CounterExample reduced(int size) { + return new TestCounterExample(-1, PathType.REDUCED, size); + } + + public static CounterExample loop(int entry, int size) { + return new TestCounterExample(entry, PathType.INFINITE, size); + } +} \ No newline at end of file diff --git a/de.prob.releng/build.gradle b/de.prob.releng/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..305917fb15e6f7ee5021f8da9bff4224b75d1a7a --- /dev/null +++ b/de.prob.releng/build.gradle @@ -0,0 +1,97 @@ + +targetRepositories = ["http://cobra.cs.uni-duesseldorf.de/prob_dev_target/","http://download.eclipse.org/releases/indigo/","http://rodin-b-sharp.sourceforge.net/updates"] + +apply from: 'tycho_build.gradle' + +// Local tasks + + +project(':de.prob.core') { + + repositories { + maven { + name "cobra" + url "http://cobra.cs.uni-duesseldorf.de/artifactory/repo" + } + } + + + def parser_version = '2.4.8-SNAPSHOT' + + dependencies { + compile group: "de.prob", name: "answerparser", version: parser_version , changing: true + compile group: "de.prob", name: "bparser", version: parser_version , changing: true + compile group: "de.prob", name: "cliparser", version: parser_version , changing: true + compile group: "de.prob", name: "ltlparser", version: parser_version , changing: true + compile group: "de.prob", name: "parserbase", version: parser_version , changing: true + compile group: "de.prob", name: "prologlib", version: parser_version , changing: true + compile group: "de.prob", name: "unicode", version: parser_version , changing: true + compile 'jgrapht:jgrapht:0.8.3' + compile 'commons-lang:commons-lang:2.6' + } + +} + +project(':de.prob.ui') { + repositories { + maven { + name "cobra" + url "http://cobra.cs.uni-duesseldorf.de/artifactory/repo" + } + } + dependencies { + compile 'commons-codec:commons-codec:1.6' + } +} + + +def download(address,target) { + def file = new FileOutputStream(target) + def out = new BufferedOutputStream(file) + out << new URL(address).openStream() + out.close() +} + +task downloadCli << { + dir = workspacePath+'de.prob.core/prob/' + delete file(dir) + new File(dir).mkdirs() + + ['leopard64':'macos','linux':'linux','linux64':'linux64','win32':'windows'].each { + n = it.getKey() + + targetdir = dir+it.getValue() + targetzip = dir+"probcli_${n}.zip" + url = "http://nightly.cobra.cs.uni-duesseldorf.de/cli/probcli_${n}.zip" + download(url,targetzip) + FileTree zip = zipTree(targetzip) + copy { + from zip + into targetdir + } + delete file(targetzip) + } + + targetdir = dir+"windows/" + targetzip = targetdir+"windowslib.zip" + download("http://nightly.cobra.cs.uni-duesseldorf.de/cli/windowslib.zip",targetzip) + FileTree zip = zipTree(targetzip) + copy { + from zip + into targetdir + } + delete file(targetzip) + +} + +task deleteOldArtifacts(type: Delete) { + String updateSite = workspacePath+'updatesite' + delete updateSite +} + +task collectArtifacts(type:Copy) { + from "../"+groupID+'.repository/target/repository/' + into '../updatesite' + from "../index.html" + into '../updatesite' +} diff --git a/settings.gradle b/de.prob.releng/settings.gradle similarity index 100% rename from settings.gradle rename to de.prob.releng/settings.gradle diff --git a/tycho_build.gradle b/de.prob.releng/tycho_build.gradle similarity index 60% rename from tycho_build.gradle rename to de.prob.releng/tycho_build.gradle index 05a0e2c8a1b769b0eeefb73e558fa9a1c6420bda..25a3644e6f169ad9d90a7c823f30081f0b6fabe8 100644 --- a/tycho_build.gradle +++ b/de.prob.releng/tycho_build.gradle @@ -1,5 +1,86 @@ apply plugin: 'base' +import groovy.io.FileType +tychoVersion = "0.14.1" + + +try{ + workspacePath = workspacePath +}catch(MissingPropertyException e){ + workspacePath = "../" +} + + +try{ + dependencyFolder = dependencyFolder +}catch(MissingPropertyException e){ + dependencyFolder = "lib/dependencies/" // Folder in each subproject where +} + +try{ + groupID = groupID +}catch(MissingPropertyException e){ + + // workspace nach releng durchsuchen + def folderNames = [] + def folders = [] + println "folders:" + new File(workspacePath+".").listFiles().each{ dir -> + if( dir.isDirectory() ) folders << dir.getName() + } + + folders.each(){ it -> + it = (String)it.replaceFirst(/\.\//, "") + if( !( ( it ==~ /\..+/ ) || (it ==~ /.*.repository/) || (it ==~ /.*.parent/) ) ) folderNames << it // subProjects eventuell unnötig settings.gradle datei stattdessen benutzen + } + + + groupID = "group" + for( i = 0; i < folderNames.size(); i++ ){ + + if( folderNames[i] ==~ /.*\.[rR]eleng/ ){ + groupID = folderNames[i] + groupID = groupID.replace( ".releng", "") + groupID = groupID.replace( ".Releng", "") + } + } + +} + + +try{ + features = features +}catch(MissingPropertyException e){ + + features = [] + for( i = 0; i < subprojects.name.size(); i++ ){ + if( subprojects.name[i] ==~ /.*\.[fF]eature/ ){ + features.add( subprojects.name[i] ) + } + } + +} + + +try{ + repositoryName = repositoryName +}catch(MissingPropertyException e){ + repositoryName = groupID+".repository" +} + +try{ + parentID = parentID +}catch(MissingPropertyException e){ + parentID = groupID+".parent" +} + + +try{ + targetRepositories = targetRepositories +}catch(MissingPropertyException e){ + targetRepositories = ["http://download.eclipse.org/releases/indigo/"] +} + def projects(int i){ @@ -12,7 +93,7 @@ def numberOfProjects(){ return subprojects.name.size() } // returns the number of projects listed in the settings.gradle file - +// @@ -40,6 +121,8 @@ def groupId(){ */ + + ///////////////////////////////////////////////////////////////////////////////////////// // -- !!! DEFINING SUB PROJECTS !!! -- // ///////////////////////////////////////////////////////////////////////////////////////// @@ -47,17 +130,27 @@ def groupId(){ subprojects { apply plugin: 'base' + apply plugin: 'java' task deleteArtifacts(type: Delete) { delete 'target','pom.xml' } - + + ///// Copy Dependencies into subprojects DependencyFolder ///// + task collectDependencies(type: Copy){ + + from configurations.compile + + into "../"+workspacePath+project.name+"/${dependencyFolder}" + + } + //////////////////////////////////////////////////////////////////////////////////////////// + task deploy() <<{ description = "\tGenerating the Tycho Poms. Please remember to add a '.qualifier' to the version numbers!" - versionNumber = 'Version Number Error:\tcheck Manifest for Bundle-Version Number and make sure to add a ".qualifier" to the version numbers!\n' - - artifactId = 'Could not find Bundle-SymbolicName in Manifest.file' + String versionNumber = 'Version Number Error:\tcheck Manifest for Bundle-Version Number and make sure to add a ".qualifier" to the version numbers!\n' + String artifactId = 'Could not find Bundle-SymbolicName in Manifest.file' /* -- In case of changed Manifest File in Eclipse: @@ -70,11 +163,11 @@ subprojects { if(features.every{ it != project.name }){ // Generating Poms for sub projects except features - content = new File("${project.name}/META-INF/MANIFEST.MF").getText("UTF-8") + content = new File(workspacePath+"${project.name}/META-INF/MANIFEST.MF").getText("UTF-8") printFileLine = { if( it ==~ /Bundle-Version.+qualifier/ ){ - versionNumber = it.substring(16) // possibile error: cuts off first 16 chars + versionNumber = it.substring(16) // possibile error: cuts off first 16 chars /* Version Number is taken from Bundle-Version in Manifest.MF * If there is no Bundle-Version or the versionnumber needs to @@ -84,8 +177,11 @@ subprojects { } if( it ==~ /Bundle-SymbolicName:.+/ ){ - artifactId = it.substring(21) - artifactId = artifactId.replace(";singleton:=true",'') + artifactId = it + artifactId = artifactId.replace("Bundle-SymbolicName:", ''); + artifactId = artifactId.replace(";",'') + artifactId = artifactId.replace(" ",'') + artifactId = artifactId.replace("singleton:=true",'') } /* Artifact ID is taken from Bundle-SymbolicName minus the * 16 chars ';singleton:=true' @@ -98,63 +194,43 @@ subprojects { println artifactId println "\t"+versionNumber - def f = new File(artifactId+'/pom.xml') + def f = new File(workspacePath+artifactId+'/pom.xml') f.delete() - f << start()+elder()+artifact(artifactId, versionNumber)+end() - /* - * old pom.xml files are deleted and replaced by new auto generated Tycho pom.xml files - */ - }else{ // if subprojects aren't a feature - + + // ---- Test Cases ------ // + if( project.name ==~ /.*\.[tT]ests*/){ + + f << start()+elder()+testArtifact(artifactId, versionNumber)+end() + }else{ + + // ---- Normal Plugin ----- // + f << start()+elder()+artifact(artifactId, versionNumber)+end() + /* + * old pom.xml files are deleted and replaced by new auto generated Tycho pom.xml files + */ + } + }else{ // if subprojects aren't a feature // -- Features -- // if(features.any{ it == project.name } ){ - boolean idfound = false - - content = new File("${project.name}/feature.xml").getText("UTF-8") + def parsedXml = new XmlParser().parse(workspacePath+"${project.name}/feature.xml") - printFileLine = { - - if( it ==~ /.+version.+qualifier.+/ ){ - versionNumber = it.substring(15,it.size()-1) - // possibile error: cuts off first 15 chars and leaves out last '"' - - /* Version Number is taken from Feature.xml - * feature.xml is searched for version="version.qualifier" - * first 15 chars and last '"' are cut off - */ + artifactId = parsedXml.attribute("id") + versionNumber = parsedXml.attribute("version") - } - - - if( it ==~ /.+id=".+/ && idfound == false ){ - artifactId = it.substring(10,it.length()-1) - idfound = true - } - /* Artifact ID is taken from Bundle-SymbolicName minus the - * 16 chars ';singleton:=true' - */ - } - - content.eachLine( printFileLine ) - - println artifactId println "\t"+versionNumber - - def f = new File(artifactId+'/pom.xml') + def f = new File(workspacePath+artifactId+'/pom.xml') f.delete() f << feature(artifactId, versionNumber) } - } - } - + }//deploy }// defining subprojects @@ -167,11 +243,11 @@ clean { task createParent() << { // --------- define Parent --------- // - new File("${parentID}").mkdir() - versionNumber = '1.0.0.qualifier' - artifactId = parentId() + new File(workspacePath+"${parentID}").mkdir() + String versionNumber = '1.0.0.qualifier' + String artifactId = parentId() - def f = new File(artifactId+'/pom.xml') + def f = new File(workspacePath+artifactId+'/pom.xml') f.delete() f << parentPom(artifactId) for(int i = 0; i < targetRepositories.size(); i++){ @@ -192,41 +268,40 @@ task createRepository() << { // ------------ define Repository --------- // - new File("${repositoryName}").mkdir() + new File(workspacePath+"${repositoryName}").mkdir() + + descriptions = [ [:],[:] ] // label and descriptions of the features - versionNumber = '1.0.0.qualifier' - artifactId = repositoryName - featureVersionNumber = '1.0.0.qualifier' - def f = new File(artifactId+'/category.xml') + String versionNumber = '1.0.0.qualifier' + String artifactId = repositoryName + String featureVersionNumber = '1.0.0.qualifier' + String featureArtifactId + def f = new File(workspacePath+artifactId+'/category.xml') f.delete() f << categoryHead() for(int i = 0; i < features.size(); i++){ - - content = new File("${features[i]}/feature.xml").getText("UTF-8") - printFileLine = { - if( it ==~ /.+version.+qualifier.+/ ){ - featureVersionNumber = it.substring(15,it.size()-1) - // possibile error: cuts off first 15 chars and leaves out last '"' - - /* Version Number is taken from Feature.xml - * feature.xml is searched for version="version.qualifier" - * first 15 chars and last '"' are cut off - */ - } - } - content.eachLine( printFileLine ) - f << categoryFeatures(features[i], featureVersionNumber) + + def parsedXml = new XmlParser().parse("${workspacePath}${features[i]}/feature.xml") + + featureVersionNumber = parsedXml.attribute("version") + featureArtifactId = parsedXml.attribute("id") + + + descriptions[0].put( features[i], parsedXml.attribute("label") ) + descriptions[1].put( features[i], parsedXml.description.text() ) + + f << categoryFeatures(featureArtifactId.replace(workspacePath,''), featureVersionNumber) }// for for(int i = 0; i < features.size(); i++){ - - f << categoryDescription(features[i], descriptions[features[i]][0] ,descriptions[features[i]][1]) + + f << categoryDescription(features[i], descriptions[0][features[i]] ,descriptions[1][features[i]] ) // featureName, label, description }//for f << categoryEnd() - def pom = new File(artifactId+'/pom.xml') + def pom = new File(workspacePath+artifactId+'/pom.xml') pom.delete() pom << reposi() }// end of repository definition @@ -237,7 +312,13 @@ task createPoms(dependsOn: [createParent, createRepository, subprojects.deploy]) task install(dependsOn: [createPoms] , type:Exec) { description = "\tExecutes a 'mvn install' of the parent pom.xml and auto-generates Tycho Poms" - commandLine 'mvn', 'install', '-f', parentID+'/pom.xml' + commandLine 'mvn', 'install', '-f', workspacePath+parentID+'/pom.xml' +} + +task completeInstall(dependsOn: [subprojects.collectDependencies, createPoms], type:Exec ){ + + description = "\tCopies dependencies into dependencyFolder of each subproject and executes a 'mvn install' of the parent pom.xml and auto-generates Tycho Poms" + commandLine 'mvn', 'install', '-f', workspacePath+parentID+'/pom.xml' } @@ -251,6 +332,12 @@ task install(dependsOn: [createPoms] , type:Exec) { <packaging>eclipse-plugin</packaging> """ } + def testArtifact(artifactId,versionNumber) { """ + <groupId>${groupId()}</groupId> + <artifactId>${artifactId}</artifactId> + <version>${versionNumber}</version> + <packaging>eclipse-test-plugin</packaging> + """ } def start() { """<?xml version="1.0" encoding="UTF-8"?> @@ -291,7 +378,7 @@ def parentPom(artifactId) { """<?xml version="1.0" encoding="UTF-8"?> <!-- this is the parent POM from which all modules inherit common settings --> <properties> - <tycho-version>0.14.1</tycho-version> + <tycho-version>${tychoVersion}</tycho-version> </properties> <repositories> @@ -322,7 +409,7 @@ def endRepos() {""" <!-- enable tycho build extension --> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-maven-plugin</artifactId> - <version>0.14.1</version> + <version>${tychoVersion}</version> <extensions>true</extensions> </plugin> </plugins> @@ -416,7 +503,7 @@ def feature(artifactId, versionNumber) { """ // end of feature pom + // Build Script can be executed via gradle install // Pom Generation can be executed via gradle deploy - diff --git a/de.prob.ui/.classpath b/de.prob.ui/.classpath index 88ce79dcd66db4de0f421cd37cdc52dd427558ac..f67843181ee95a7771d0edd1009be1faaed415b0 100644 --- a/de.prob.ui/.classpath +++ b/de.prob.ui/.classpath @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> + <classpathentry exported="true" kind="lib" path="lib/dependencies/commons-codec-1.6.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="src" path="src"/> diff --git a/de.prob.ui/META-INF/MANIFEST.MF b/de.prob.ui/META-INF/MANIFEST.MF index 1118ed6d0fa832ec59dd9891220081deb071a964..0ab9a6cf07669d654268e69b8f68c9b0964f3c49 100644 --- a/de.prob.ui/META-INF/MANIFEST.MF +++ b/de.prob.ui/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: ProB Ui Plug-in Bundle-SymbolicName: de.prob.ui;singleton:=true -Bundle-Version: 7.2.1.qualifier +Bundle-Version: 7.2.2.qualifier Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)", org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)", org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)", @@ -10,7 +10,9 @@ Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)", de.prob.core;bundle-version="[9.2.0,9.3.0)", org.eventb.core;bundle-version="[2.1.0,2.6.0)", org.eclipse.core.expressions;bundle-version="[3.4.101,4.0.0)", - org.eclipse.gef;bundle-version="[3.5.0,4.0.0)" + org.eclipse.gef;bundle-version="[3.5.0,4.0.0)", + org.eventb.emf.core;bundle-version="2.2.4", + org.eventb.emf.persistence;bundle-version="2.4.0" Bundle-ActivationPolicy: lazy Bundle-Vendor: HHU Düsseldorf STUPS Group Bundle-Activator: de.prob.ui.ProbUiPlugin @@ -18,4 +20,5 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Export-Package: de.prob.ui Bundle-ClassPath: lib/apache_xmlrpc.jar, lib/ws_commons.jar, + lib/dependencies/commons-codec-1.6.jar, . diff --git a/de.prob.ui/build.properties b/de.prob.ui/build.properties index 7bb2e5aa6d67c9fa9f937b447952842643f8bb36..ebde6b8f79bbb0cfd7a64cb582dcfc2a31e04089 100644 --- a/de.prob.ui/build.properties +++ b/de.prob.ui/build.properties @@ -5,4 +5,5 @@ bin.includes = META-INF/,\ plugin.xml,\ icons/,\ lib/apache_xmlrpc.jar,\ - lib/ws_commons.jar + lib/ws_commons.jar,\ + lib/dependencies/commons-codec-1.6.jar diff --git a/de.prob.ui/plugin.xml b/de.prob.ui/plugin.xml index 80705a13c2376c92e62ab564f2ec2a213fcd6a03..d1b07bd82110aa5b4467bc12b6c9d1cb75165606 100644 --- a/de.prob.ui/plugin.xml +++ b/de.prob.ui/plugin.xml @@ -341,6 +341,10 @@ id="de.prob.ui.ltl.counterexampleprinthandler" name="CounterExample Print"> </command> + <command + id="de.prob.ui.newcore.export" + name="Export for new Core"> + </command> </extension> <extension point="org.eclipse.ui.handlers"> @@ -378,7 +382,7 @@ </with> </enabledWhen> <class - class="de.prob.ui.ltl.LtlCommand"> + class="de.prob.ui.ltl.handler.LtlCommand"> </class> </handler> <handler @@ -559,23 +563,6 @@ </with> </enabledWhen> </handler> - <handler - commandId="de.prob.ui.classic.export"> - <class - class="de.prob.ui.eventb.ExportClassicHandler"> - </class> - <enabledWhen> - <with - variable="selection"> - <iterate - operator="or"> - <instanceof - value="org.eventb.core.IEventBRoot"> - </instanceof> - </iterate> - </with> - </enabledWhen> - </handler> <handler commandId="de.prob.ui.classic.open"> <class @@ -668,7 +655,7 @@ </class> </handler> <handler commandId="de.prob.ui.ltl.counterexampleviewmenuhandler"> - <class class="de.prob.ui.ltl.CounterExampleViewMenuHandler"/> + <class class="de.prob.ui.ltl.handler.CounterExampleViewMenuHandler"/> <enabledWhen> <with variable="de.prob.ui.ltl.counterexample_loaded"> <equals @@ -678,7 +665,7 @@ </enabledWhen> </handler> <handler commandId="de.prob.ui.ltl.counterexamplezoominhandler"> - <class class="de.prob.ui.ltl.CounterExampleZoomInHandler"/> + <class class="de.prob.ui.ltl.handler.CounterExampleZoomInHandler"/> <enabledWhen> <with variable="de.prob.ui.ltl.counterexample_loaded"> <equals @@ -688,7 +675,7 @@ </enabledWhen> </handler> <handler commandId="de.prob.ui.ltl.counterexamplezoomouthandler"> - <class class="de.prob.ui.ltl.CounterExampleZoomOutHandler"/> + <class class="de.prob.ui.ltl.handler.CounterExampleZoomOutHandler"/> <enabledWhen> <with variable="de.prob.ui.ltl.counterexample_loaded"> <equals @@ -698,7 +685,7 @@ </enabledWhen> </handler> <handler commandId="de.prob.ui.ltl.counterexampleprinthandler"> - <class class="de.prob.ui.ltl.CounterExamplePrintHandler"/> + <class class="de.prob.ui.ltl.handler.CounterExamplePrintHandler"/> <enabledWhen> <with variable="de.prob.ui.ltl.counterexample_loaded"> <equals @@ -708,7 +695,7 @@ </enabledWhen> </handler> <handler commandId="de.prob.ui.ltl.showcounterexampleinhistory"> - <class class="de.prob.ui.ltl.CounterExampleHistoryHandler"/> + <class class="de.prob.ui.ltl.handler.CounterExampleHistoryHandler"/> <enabledWhen> <with variable="de.prob.ui.ltl.counterexample_loaded"> <equals @@ -717,6 +704,23 @@ </with> </enabledWhen> </handler> + <handler + commandId="de.prob.ui.newcore.export"> + <class + class="de.prob.ui.eventb.ExportNewCoreHandler"> + </class> + <enabledWhen> + <with + variable="selection"> + <iterate + operator="or"> + <instanceof + value="org.eventb.core.IEventBRoot"> + </instanceof> + </iterate> + </with> + </enabledWhen> + </handler> <!-- <handler commandId="de.prob.ui.startdmc"> <class @@ -750,20 +754,10 @@ </parameter> </command> <command - commandId="de.prob.ui.openWebsite" + commandId="de.prob.ui.bugreport" label="Open Bugtracker Website" mnemonic="W" style="push"> - <parameter - name="de.prob.ui.openwebsite.url" - value="https://cobra.cs.uni-duesseldorf.de/trac/newticket?type=bug&priority=major&component=Eclipse%20Plugin&keywords=user%20discovered%20bug"> - </parameter> - </command> - <command - commandId="de.prob.ui.bugreport" - label="Submit bugreport" - mnemonic="B" - style="push"> </command> </menuContribution> @@ -984,7 +978,7 @@ </with> </visibleWhen> <command - commandId="de.prob.ui.classic.export" + commandId="de.prob.ui.newcore.export" icon="icons/prob_mini_logo.gif" label="Export for use in ProB classic" style="push"> @@ -1061,7 +1055,7 @@ style="radio"> <parameter name="org.eclipse.ui.commands.radioStateParameter" - value="Table"> + value="TABLE"> </parameter> </command> <command @@ -1070,7 +1064,7 @@ style="radio"> <parameter name="org.eclipse.ui.commands.radioStateParameter" - value="Tree"> + value="TREE"> </parameter> </command> <command @@ -1079,7 +1073,7 @@ style="radio"> <parameter name="org.eclipse.ui.commands.radioStateParameter" - value="Interactive"> + value="INTERACTIVE"> </parameter> </command> </menu> diff --git a/de.prob.ui/src/de/prob/ui/PerspectiveFactory.java b/de.prob.ui/src/de/prob/ui/PerspectiveFactory.java index f44845d1d0ad058e9f5d925ba7a156d31c1c5b43..abfced80bde4ed6144536889e8e07ff3ce75bf3f 100644 --- a/de.prob.ui/src/de/prob/ui/PerspectiveFactory.java +++ b/de.prob.ui/src/de/prob/ui/PerspectiveFactory.java @@ -50,6 +50,7 @@ public class PerspectiveFactory implements IPerspectiveFactory { IWorkbench workbench = PlatformUI.getWorkbench(); workbench.showPerspective(PROB_PERSPECTIVE, workbench.getActiveWorkbenchWindow()); + workbench.getActiveWorkbenchWindow().addPerspectiveListener(new PerspectiveListener()); } catch (WorkbenchException e) { final String message = "Error opening ProB perspective."; Logger.notifyUser(message, e); diff --git a/de.prob.ui/src/de/prob/ui/PerspectiveListener.java b/de.prob.ui/src/de/prob/ui/PerspectiveListener.java new file mode 100644 index 0000000000000000000000000000000000000000..f1307923deeb843abe98e5ec26fe4247563d7e25 --- /dev/null +++ b/de.prob.ui/src/de/prob/ui/PerspectiveListener.java @@ -0,0 +1,60 @@ +package de.prob.ui; + +import org.eclipse.ui.IPerspectiveDescriptor; +import org.eclipse.ui.IPerspectiveListener4; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPartReference; + +import de.prob.ui.operationview.OperationTableViewer; + +public class PerspectiveListener implements IPerspectiveListener4 { + + @Override + public void perspectiveActivated(IWorkbenchPage page, + IPerspectiveDescriptor perspective) { + + } + + @Override + public void perspectiveChanged(IWorkbenchPage page, + IPerspectiveDescriptor perspective, String changeId) { + + } + + @Override + public void perspectiveOpened(IWorkbenchPage page, + IPerspectiveDescriptor perspective) { + } + + @Override + public void perspectiveClosed(IWorkbenchPage page, + IPerspectiveDescriptor perspective) { + OperationTableViewer.destroy(); + } + + @Override + public void perspectiveDeactivated(IWorkbenchPage page, + IPerspectiveDescriptor perspective) { + } + + @Override + public void perspectiveSavedAs(IWorkbenchPage page, + IPerspectiveDescriptor oldPerspective, + IPerspectiveDescriptor newPerspective) { + + } + + @Override + public void perspectiveChanged(IWorkbenchPage page, + IPerspectiveDescriptor perspective, + IWorkbenchPartReference partRef, String changeId) { + + } + + @Override + public void perspectivePreDeactivate(IWorkbenchPage page, + IPerspectiveDescriptor perspective) { + + } + +} diff --git a/de.prob.ui/src/de/prob/ui/eventb/ExportClassicHandler.java b/de.prob.ui/src/de/prob/ui/eventb/ExportClassicHandler.java index a789cc14e295f6e5752a55320e200516e2c30c65..858938c0de120fc8d1caaeff0f7eb91be3dc421b 100644 --- a/de.prob.ui/src/de/prob/ui/eventb/ExportClassicHandler.java +++ b/de.prob.ui/src/de/prob/ui/eventb/ExportClassicHandler.java @@ -28,6 +28,11 @@ import de.prob.core.translator.TranslationFailedException; import de.prob.eventb.translator.TranslatorFactory; import de.prob.logging.Logger; +/** + * @author bendisposto + * @deprecated Use ExpprtNewCoreHandler instead + */ +@Deprecated public class ExportClassicHandler extends AbstractHandler implements IHandler { public Object execute(final ExecutionEvent event) throws ExecutionException { diff --git a/de.prob.ui/src/de/prob/ui/eventb/ExportNewCoreHandler.java b/de.prob.ui/src/de/prob/ui/eventb/ExportNewCoreHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..79af767fe8c25b3e2ebca407f41d4d0d67f11c77 --- /dev/null +++ b/de.prob.ui/src/de/prob/ui/eventb/ExportNewCoreHandler.java @@ -0,0 +1,165 @@ +package de.prob.ui.eventb; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.codec.binary.Base64; +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.IHandler; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.preferences.InstanceScope; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eventb.core.IEventBRoot; +import org.eventb.core.IMachineRoot; +import org.eventb.emf.core.Project; +import org.eventb.emf.persistence.ProjectResource; +import org.osgi.service.prefs.BackingStoreException; +import org.osgi.service.prefs.Preferences; +import org.rodinp.core.IRodinProject; + +import de.prob.core.translator.TranslationFailedException; +import de.prob.eventb.translator.TranslatorFactory; +import de.prob.logging.Logger; + +public class ExportNewCoreHandler extends AbstractHandler implements IHandler { + + public Object execute(final ExecutionEvent event) throws ExecutionException { + final IEventBRoot root = getSelectedEventBRoot(event); + if (root != null) { + final Preferences prefs = Platform.getPreferencesService() + .getRootNode().node(InstanceScope.SCOPE) + .node("prob_export_preferences"); + final Shell shell = HandlerUtil.getActiveShell(event); + final String fileName = askForExportFile(prefs, shell, root); + if (fileName != null) { + exportToClassic(fileName, root); + } + } + return null; + } + + private IEventBRoot getSelectedEventBRoot(final ExecutionEvent event) { + final ISelection fSelection = HandlerUtil.getCurrentSelection(event); + IEventBRoot root = null; + if (fSelection instanceof IStructuredSelection) { + final IStructuredSelection ssel = (IStructuredSelection) fSelection; + if (ssel.size() == 1 + && ssel.getFirstElement() instanceof IEventBRoot) { + root = (IEventBRoot) ssel.getFirstElement(); + } + } + return root; + } + + private String askForExportFile(final Preferences prefs, final Shell shell, + final IEventBRoot root) { + final String path = prefs.get("dir", System.getProperty("user.home")); + + final FileDialog dialog = new FileDialog(shell, SWT.SAVE); + dialog.setFilterExtensions(new String[] { "*.eventb" }); + + dialog.setFilterPath(path); + final String subext = (root instanceof IMachineRoot) ? "_mch" : "_ctx"; + dialog.setFileName(root.getComponentName() + subext + ".eventb"); + String result = dialog.open(); + if (result != null) { + final String newPath = dialog.getFilterPath(); + if (!path.equals(newPath)) { + prefs.put("dir", newPath); + try { + prefs.flush(); + } catch (BackingStoreException e) { + // Ignore, if preferences are not stored correctly we simply + // ignore it (annoying, but not critical) + } + } + if (!result.endsWith(".eventb")) { + result += ".eventb"; + } + } + return result; + } + + public static void exportToClassic(final String filename, + final IEventBRoot root) { + final boolean isSafeToWrite = isSafeToWrite(filename); + + IRodinProject rodinProject = root.getRodinProject(); + ProjectResource resource = new ProjectResource(rodinProject); + try { + resource.load(null); + } catch (IOException e) { + e.printStackTrace(); + } + Project project = (Project) resource.getContents().get(0); + + if (isSafeToWrite) { + Writer fw = null; + try { + fw = new FileWriter(filename); + TranslatorFactory.translate(root, new PrintWriter(fw)); + fw.append('\n'); + + fw.append("emf_model('" + root.getComponentName() + "',\"" + + serialize(project) + "\")."); + + } catch (TranslationFailedException e) { + e.notifyUserOnce(); + } catch (IOException e) { + Logger.notifyUser("Unable to create file '" + filename + "'"); + } finally { + if (fw != null) { + try { + fw.close(); + } catch (IOException e) { + } + } + } + } + } + + private static String serialize(Project project) { + + StringWriter sw = new StringWriter(); + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ROOT_OBJECTS, + Collections.singletonList(project)); + options.put(XMLResource.OPTION_FORMATTED, false); + XMLResourceImpl ri = new XMLResourceImpl(); + try { + ri.save(sw, options); + } catch (IOException e1) { + e1.printStackTrace(); + } + + String xml = Base64.encodeBase64String(sw.toString().getBytes()); + return xml; + } + + private static boolean isSafeToWrite(final String filename) { + if (new File(filename).exists()) { + final MessageDialog dialog = new MessageDialog(null, "File exists", + null, "The file exists. Do you want to overwrite it?", + MessageDialog.QUESTION, new String[] { "Yes", "No" }, 0); + return dialog.open() == 0; + } else + return true; + } +} diff --git a/de.prob.ui/src/de/prob/ui/eventb/OpenClassicHandler.java b/de.prob.ui/src/de/prob/ui/eventb/OpenClassicHandler.java index c53488f10b328de79cffebc948172c8e3470a743..47cd0d4d47b989635fc5520e5c2cb9d73a3ff5b5 100644 --- a/de.prob.ui/src/de/prob/ui/eventb/OpenClassicHandler.java +++ b/de.prob.ui/src/de/prob/ui/eventb/OpenClassicHandler.java @@ -35,8 +35,7 @@ public class OpenClassicHandler extends AbstractHandler implements IHandler { if (root != null) { final File temp = createTempFile(); final String tmp = temp.getAbsolutePath(); - ExportClassicHandler.exportToClassic(tmp, root); - + ExportNewCoreHandler.exportToClassic(tmp, root); runProBClassic(location, tmp); } } diff --git a/de.prob.ui/src/de/prob/ui/eventb/StartAnimationHandler.java b/de.prob.ui/src/de/prob/ui/eventb/StartAnimationHandler.java index 3635bc29a0290ab49569005982bd1e4a98fb5532..bad71c487cf3bcc693af280eae6889e452261296 100644 --- a/de.prob.ui/src/de/prob/ui/eventb/StartAnimationHandler.java +++ b/de.prob.ui/src/de/prob/ui/eventb/StartAnimationHandler.java @@ -1,5 +1,8 @@ package de.prob.ui.eventb; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; @@ -67,9 +70,22 @@ public class StartAnimationHandler extends AbstractHandler implements IHandler { final IEventBRoot rootElement = getRootElement(); final IFile resource = extractResource(rootElement); - if (!checkErrorMarkers(resource)) { - String message = "A model/context in your project contains Errors or Warnings. This can lead to unexpected behavior (e.g. missing variables) when animating."; - Logger.notifyUserWithoutBugreport(message); + ArrayList<String> errors = new ArrayList<String>(); + boolean realError = checkErrorMarkers(resource, errors); + if (!errors.isEmpty()) { + String message = "Some components in your project contain " + + (realError ? "errors" : "warnings") + + ". This can lead to unexpected behavior (e.g. missing variables) when animating.\n\nDetails:\n"; + StringBuffer stringBuffer = new StringBuffer(message); + for (String string : errors) { + stringBuffer.append(string); + stringBuffer.append('\n'); + } + if (realError) + Logger.notifyUserWithoutBugreport(stringBuffer.toString()); + else + Logger.notifyUserAboutWarningWithoutBugreport(stringBuffer + .toString()); } ; @@ -90,17 +106,25 @@ public class StartAnimationHandler extends AbstractHandler implements IHandler { return null; } - private boolean checkErrorMarkers(final IFile resource) { + private boolean checkErrorMarkers(final IFile resource, List<String> errors) { + boolean result = false; IProject project = resource.getProject(); try { IMarker[] markers = project.findMarkers( "org.eclipse.core.resources.problemmarker", true, IResource.DEPTH_INFINITE); - return markers.length == 0; - } catch (CoreException e1) { + for (IMarker iMarker : markers) { + errors.add(iMarker.getResource().getName() + + ": " + + iMarker + .getAttribute(IMarker.MESSAGE, "unknown Error")); + result = result + || (Integer) iMarker.getAttribute(IMarker.SEVERITY) == IMarker.SEVERITY_ERROR; + } + } catch (CoreException e1) { } - return false; + return result; } private IEventBRoot getRootElement() { diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleBinaryFigure.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleBinaryFigure.java index 404c6a2157a618c13f23885dc9930e62e47ee5dd..b128a21d9c8edeab52318f49b8be690f9c4db03d 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleBinaryFigure.java +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleBinaryFigure.java @@ -21,6 +21,7 @@ import de.prob.core.domainobjects.ltl.CounterExampleBinaryOperator; import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.exceptions.ProBException; import de.prob.logging.Logger; +import de.prob.ui.ltl.handler.CounterExampleHistoryHandler; public final class CounterExampleBinaryFigure extends CounterExamplePropositionFigure { diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleFigure.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleFigure.java index 8b4ca05196b6036470043b792a3de3b3943488ee..bbca84afd39a4069a6f98f2ff240621e32d03dbc 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleFigure.java +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleFigure.java @@ -12,13 +12,13 @@ import org.eclipse.draw2d.XYLayout; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; import de.prob.core.domainobjects.ltl.CounterExample; public final class CounterExampleFigure extends Figure { private final CounterExample model; + // These are the rectangles that should show which is the current state + // At most one of them is visible at the same time private final List<RectangleFigure> states = new ArrayList<RectangleFigure>(); public CounterExampleFigure(CounterExample model) { @@ -69,11 +69,8 @@ public final class CounterExampleFigure extends Figure { // } public void update() { - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .findView(CounterExampleViewPart.ID); - + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .getDefault(); if (counterExampleView != null) { final int currentIndex = counterExampleView.getCurrentIndex(); diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePredicateFigure.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePredicateFigure.java index e60be2c9dda37deadd32cf51d2d90fc7cd8e241b..de76d8f4e507fcf1f0d5988f28e363bb272bcadc 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePredicateFigure.java +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePredicateFigure.java @@ -28,6 +28,7 @@ import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleValueType; import de.prob.exceptions.ProBException; import de.prob.logging.Logger; +import de.prob.ui.ltl.handler.CounterExampleHistoryHandler; public final class CounterExamplePredicateFigure extends CounterExamplePropositionFigure { diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePropositionFigure.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePropositionFigure.java index 3de3e529ea6d8647c02a632f199b029aa0b45106..08bac75624e8cdfd82190f3b114193c03aaa4900 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePropositionFigure.java +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePropositionFigure.java @@ -32,8 +32,10 @@ import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Display; import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.Operation; import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.core.domainobjects.ltl.CounterExampleProposition; +import de.prob.core.domainobjects.ltl.CounterExampleState; import de.prob.core.domainobjects.ltl.CounterExampleValueType; public abstract class CounterExamplePropositionFigure extends Figure implements @@ -145,8 +147,10 @@ public abstract class CounterExamplePropositionFigure extends Figure implements protected String getOperationName(final int index) { final CounterExampleFigure parentFigure = (CounterExampleFigure) getParent(); final CounterExample parentModel = parentFigure.getModel(); - final String operationName = parentModel.getStates().get(index) - .getOperation().getName(); + final List<CounterExampleState> states = parentModel.getStates(); + final CounterExampleState state = states.get(index); + final Operation operation = state.getOperation(); + final String operationName = operation.getName(); return operationName; } @@ -172,9 +176,9 @@ public abstract class CounterExamplePropositionFigure extends Figure implements final Rectangle targetBounds = target.getBounds(); points.addPoint(new Point(sourceBounds.x + size + insets.left, sourceBounds.y + size / 2 + insets.top)); - points.addPoint(new Point(sourceBounds.x + size + 3.0 / 10 * size + points.addPoint(new Point(sourceBounds.x + size + (3 * size) / 10 + insets.left, sourceBounds.y + size / 2 + insets.top)); - points.addPoint(new Point(sourceBounds.x + size + 3.0 / 10 * size + points.addPoint(new Point(sourceBounds.x + size + (3 * size) / 10 + insets.left, sourceBounds.y - size / 5 + insets.top)); points.addPoint(new Point(targetBounds.x + size / 2 + insets.left, targetBounds.y - size / 5 + insets.top)); @@ -211,13 +215,12 @@ public abstract class CounterExamplePropositionFigure extends Figure implements final Rectangle sourceBounds = source.getBounds(); points.addPoint(new Point(sourceBounds.x + size + insets.left, sourceBounds.y + size / 2 + insets.top)); - points.addPoint(new Point(sourceBounds.x + size + 3.0 / 10 * size + points.addPoint(new Point(sourceBounds.x + size + (3 * size) / 10 + insets.left, sourceBounds.y + size / 2 + insets.top)); - points.addPoint(new Point(sourceBounds.x + size + 3.0 / 10 * size + points.addPoint(new Point(sourceBounds.x + size + (3 * size) / 10 + insets.left, sourceBounds.y + insets.top + size / 4)); - points.addPoint(new Point(sourceBounds.x + size + 3.0 / 10 * size - + insets.left, sourceBounds.y + insets.top - + (int) (3.0 / 4 * size))); + points.addPoint(new Point(sourceBounds.x + size + (3 * size) / 10 + + insets.left, sourceBounds.y + insets.top + (3 * size) / 4)); polyline.setPoints(points); return polyline; @@ -289,129 +292,158 @@ public abstract class CounterExamplePropositionFigure extends Figure implements add(panel); for (int i = 0; i < values.size(); i++) { - final CounterExampleValueType value = values.get(i); - final Ellipse ellipse = new Ellipse(); + createColumn(bounds, argument, positions, ellipses1, ellipses2, + argumentHeight, pathType, values, panel, i); + } - if (!positions.contains(i)) { - ellipse.setAlpha(Alpha.MASKED); - } + if (parent != null) { + final Ellipse ellipse = ellipses2.get(stateId); + drawChildParentConnection(ellipse, stateId, parent); + } - ellipse.setAntialias(SWT.ON); - ellipse.setLineWidth(2); - ellipse.setOpaque(true); - ellipse.addMouseListener(this); - ellipse.addMouseMotionListener(this); - ellipse.setBackgroundColor(getEllipseColor(value)); + return panel; + } - ellipses1.put(ellipse, i); - ellipses2.put(i, ellipse); + private void createColumn(final Rectangle bounds, + final CounterExampleProposition argument, + final List<Integer> positions, + final Hashtable<Ellipse, Integer> ellipses1, + final Hashtable<Integer, Ellipse> ellipses2, + final int argumentHeight, final PathType pathType, + final List<CounterExampleValueType> values, Panel panel, int i) { + final CounterExampleValueType value = values.get(i); + final Ellipse ellipse = new Ellipse(); - final Label label = new Label(value.toString()); - label.setOpaque(false); + if (!positions.contains(i)) { + ellipse.setAlpha(Alpha.MASKED); + } - ellipse.setLayoutManager(new BorderLayout()); - ellipse.add(label, BorderLayout.CENTER); + ellipse.setAntialias(SWT.ON); + ellipse.setLineWidth(2); + ellipse.setOpaque(true); + ellipse.addMouseListener(this); + ellipse.addMouseMotionListener(this); + ellipse.setBackgroundColor(getEllipseColor(value)); - panel.add(ellipse); + ellipses1.put(ellipse, i); + ellipses2.put(i, ellipse); - final int x = (bounds.x + size) * (i + 1); - final int y = bounds.y + argumentHeight - + (pathType == PathType.INFINITE ? size / 10 : 0); - ellipse.setBounds(new Rectangle(x, y, size, size)); + final Label label = new Label(value.toString()); + label.setOpaque(false); - if (i > 0) { - final ChopboxAnchor source = new ChopboxAnchor(ellipse); - final Ellipse targetEllipse = ellipses2.get(i - 1); + ellipse.setLayoutManager(new BorderLayout()); + ellipse.add(label, BorderLayout.CENTER); - if (targetEllipse == null) - continue; + panel.add(ellipse); - final ChopboxAnchor target = new ChopboxAnchor(targetEllipse); + final int x = (bounds.x + size) * (i + 1); + final int y = bounds.y + argumentHeight + + (pathType == PathType.INFINITE ? size / 10 : 0); + ellipse.setBounds(new Rectangle(x, y, size, size)); - final PolylineConnection connection = new PolylineConnection(); - connection.setAlpha(Alpha.MASKED); - connection.setAntialias(SWT.ON); - connection.setLineStyle(SWT.LINE_SOLID); - connection.setLineWidth(2); - connection.setToolTip(new Label(getOperationName(i - 1))); - connection.setSourceAnchor(source); - connection.setTargetAnchor(target); + if (i > 0) { + final ChopboxAnchor source = new ChopboxAnchor(ellipse); + final Ellipse targetEllipse = ellipses2.get(i - 1); - final PolygonDecoration decoration = new PolygonDecoration(); - decoration.setAlpha(Alpha.MASKED); - decoration.setAntialias(SWT.ON); + if (targetEllipse == null) + return; - final PointList decorationPointList = new PointList(); - decorationPointList.addPoint(0, 0); - decorationPointList.addPoint(-1, 1); - decorationPointList.addPoint(-1, 0); - decorationPointList.addPoint(-1, -1); - decoration.setTemplate(decorationPointList); + final ChopboxAnchor target = new ChopboxAnchor(targetEllipse); - // highlight the transition - if (positions.contains(i) && positions.contains(i - 1)) { - connection.setAlpha(Alpha.HIGHLIGHED); - decoration.setAlpha(Alpha.HIGHLIGHED); - } + final PolylineConnection connection = new PolylineConnection(); + connection.setAlpha(Alpha.MASKED); + connection.setAntialias(SWT.ON); + connection.setLineStyle(SWT.LINE_SOLID); + connection.setLineWidth(2); + connection.setToolTip(new Label(getOperationName(i - 1))); + connection.setSourceAnchor(source); + connection.setTargetAnchor(target); - // highlight and color the transition - if (model.isTransition() || argument.isTransition()) { - if (positions.contains(i - 1)) { - connection.setAlpha(Alpha.HIGHLIGHED); - decoration.setAlpha(Alpha.HIGHLIGHED); - Color transitionColor = getEllipseColor(values - .get(i - 1)); - connection.setForegroundColor(transitionColor); - decoration.setForegroundColor(transitionColor); - } - } + final PolygonDecoration decoration = new PolygonDecoration(); + decoration.setAlpha(Alpha.MASKED); + decoration.setAntialias(SWT.ON); - connection.setSourceDecoration(decoration); + final PointList decorationPointList = new PointList(); + decorationPointList.addPoint(0, 0); + decorationPointList.addPoint(-1, 1); + decorationPointList.addPoint(-1, 0); + decorationPointList.addPoint(-1, -1); + decoration.setTemplate(decorationPointList); - panel.add(connection); + // highlight the transition + if (positions.contains(i) && positions.contains(i - 1)) { + connection.setAlpha(Alpha.HIGHLIGHED); + decoration.setAlpha(Alpha.HIGHLIGHED); } - if (i == values.size() - 1) { - if (pathType.equals(PathType.INFINITE)) { - final String operationName = getOperationName(ellipses1 - .get(ellipse)); - final Ellipse target = ellipses2.get(model.getLoopEntry()); - - int alpha = Alpha.MASKED; - Color loopTransitionColor = ColorConstants.black; + // highlight and color the transition + if (model.isTransition() || argument.isTransition()) { + if (positions.contains(i - 1)) { + connection.setAlpha(Alpha.HIGHLIGHED); + decoration.setAlpha(Alpha.HIGHLIGHED); + Color transitionColor = getEllipseColor(values.get(i - 1)); + connection.setForegroundColor(transitionColor); + decoration.setForegroundColor(transitionColor); + } + } - if (positions.contains(i) && positions.contains(i - 1)) { - alpha = Alpha.HIGHLIGHED; - } + connection.setSourceDecoration(decoration); - if (model.isTransition() || argument.isTransition()) { - if (positions.contains(i)) { - alpha = Alpha.HIGHLIGHED; - loopTransitionColor = getEllipseColor(values.get(i)); - } - } + panel.add(connection); + } - final PolylineConnection loop = createLoop(getInsets(), - ellipse, target, alpha, operationName, - loopTransitionColor); + boolean isLastElement = i == values.size() - 1; + if (isLastElement) { + createEnd(argument, positions, ellipses1, ellipses2, pathType, + values, panel, i, ellipse); + } + } - panel.add(loop); - } else if (pathType.equals(PathType.REDUCED)) { - final Polyline reduced = createReduced(getInsets(), - ellipse, positions.contains(i) ? Alpha.HIGHLIGHED - : Alpha.MASKED); + private void createEnd(final CounterExampleProposition argument, + final List<Integer> positions, + final Hashtable<Ellipse, Integer> ellipses1, + final Hashtable<Integer, Ellipse> ellipses2, + final PathType pathType, + final List<CounterExampleValueType> values, Panel panel, int i, + final Ellipse ellipse) { + final IFigure figure; + switch (pathType) { + case INFINITE: + final String operationName = getOperationName(ellipses1 + .get(ellipse)); + final Ellipse target = ellipses2.get(model.getLoopEntry()); + + int alpha = Alpha.MASKED; + Color loopTransitionColor = ColorConstants.black; + + final boolean highlightLoop = positions.contains(i) + && positions.contains(i - 1); + if (highlightLoop) { + alpha = Alpha.HIGHLIGHED; + } - panel.add(reduced); + if (model.isTransition() || argument.isTransition()) { + if (positions.contains(i)) { + alpha = Alpha.HIGHLIGHED; + loopTransitionColor = getEllipseColor(values.get(i)); } } + figure = createLoop(getInsets(), ellipse, target, alpha, + operationName, loopTransitionColor); + break; + + case REDUCED: + figure = createReduced(getInsets(), ellipse, + positions.contains(i) ? Alpha.HIGHLIGHED : Alpha.MASKED); + break; + + default: + figure = null; + break; } - - if (parent != null) { - final Ellipse ellipse = ellipses2.get(stateId); - drawChildParentConnection(ellipse, stateId, parent); + if (figure != null) { + panel.add(figure); } - - return panel; } @Override diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTab.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTab.java new file mode 100644 index 0000000000000000000000000000000000000000..f3170291f8de5203287d1e9fc52cafee06d9bd99 --- /dev/null +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTab.java @@ -0,0 +1,369 @@ +/** + * + */ +package de.prob.ui.ltl; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.eclipse.gef.DefaultEditDomain; +import org.eclipse.gef.EditDomain; +import org.eclipse.gef.EditPart; +import org.eclipse.gef.GraphicalViewer; +import org.eclipse.gef.editparts.ScalableRootEditPart; +import org.eclipse.gef.editparts.ZoomManager; +import org.eclipse.gef.print.PrintGraphicalViewerOperation; +import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer; +import org.eclipse.jface.layout.TableColumnLayout; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.ColumnWeightData; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.TreeViewerColumn; +import org.eclipse.swt.SWT; +import org.eclipse.swt.SWTException; +import org.eclipse.swt.custom.CTabFolder; +import org.eclipse.swt.custom.CTabItem; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.custom.StackLayout; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.printing.PrintDialog; +import org.eclipse.swt.printing.Printer; +import org.eclipse.swt.printing.PrinterData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; + +import de.prob.core.Animator; +import de.prob.core.command.LtlCheckingCommand.PathType; +import de.prob.core.domainobjects.History; +import de.prob.core.domainobjects.HistoryItem; +import de.prob.core.domainobjects.Operation; +import de.prob.core.domainobjects.State; +import de.prob.core.domainobjects.ltl.CounterExample; +import de.prob.core.domainobjects.ltl.CounterExampleProposition; +import de.prob.core.domainobjects.ltl.CounterExampleState; +import de.prob.logging.Logger; +import de.prob.ui.ltl.CounterExampleViewPart.ViewType; + +/** + * @author plagge + * + */ +public class CounterExampleTab { + private final CounterExample counterExample; + + private final CTabItem tabItem; + private final StackLayout layout; + + // Table view + private final TableViewer tableViewer; + + // Tree view + private final TreeViewer treeViewer; + + // Graphical view + private final ScalableRootEditPart rootEditPart; + private final GraphicalViewer graphicalViewer; + private final Control interactiveView; + + // TODO remove it! + private int currentIndex = -1; + + public CounterExampleTab(final CTabFolder tabFolder, + final CounterExample counterExample) { + this.counterExample = counterExample; + + tabItem = new CTabItem(tabFolder, SWT.CLOSE); + tabItem.setText(counterExample.getPropositionRoot().toString()); + + final Composite sashForm = new SashForm(tabFolder, SWT.HORIZONTAL); + tabItem.setControl(sashForm); + + final Composite composite = new Composite(sashForm, SWT.None); + + layout = new StackLayout(); + composite.setLayout(layout); + + final Composite tableView = new Composite(composite, SWT.None); + tableViewer = createTableViewer(tableView, counterExample); + // createPopupMenu(tableViewer.getTable(), tableViewer); + + final Composite treeView = new Composite(composite, SWT.None); + treeView.setLayout(new FillLayout()); + treeViewer = createTreeViewer(treeView, counterExample); + // createPopupMenu(treeViewer.getTree(), treeViewer); + + rootEditPart = new ScalableRootEditPart(); + graphicalViewer = new ScrollingGraphicalViewer(); + + interactiveView = graphicalViewer.createControl(composite); + interactiveView.setBackground(Display.getDefault().getSystemColor( + SWT.COLOR_WHITE)); + // createPopupMenu(interactiveView, graphicalViewer); + + graphicalViewer.setRootEditPart(rootEditPart); + graphicalViewer.setEditPartFactory(new CounterExampleEditPartFactory()); + graphicalViewer.setContents(counterExample); + + EditDomain editDomain = new DefaultEditDomain(null); + editDomain.addViewer(graphicalViewer); + } + + public CTabItem getTabitem() { + return tabItem; + } + + private TableViewer createTableViewer(Composite parent, + final CounterExample counterExample) { + final CounterExampleTableViewer tableViewer = new CounterExampleTableViewer( + parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); + tableViewer.getTable().setHeaderVisible(true); + tableViewer.getTable().setLinesVisible(true); + + final TableColumnLayout layout = new TableColumnLayout(); + parent.setLayout(layout); + createEventColumn(tableViewer, layout); + + final Collection<CounterExampleProposition> propositions = counterExample + .getPropositionRoot().getChildren(); + + for (CounterExampleProposition proposition : propositions) { + createPropositionColumn(tableViewer, layout, proposition); + } + + tableViewer.getTable().setToolTipText( + "Click to show the state in the history"); + + tableViewer.getTable() + .addMouseListener( + new CounterExampleTableMouseAdapter(tableViewer, + counterExample)); + + tableViewer.setContentProvider(new ArrayContentProvider()); + tableViewer.setInput(counterExample.getStates()); + + return tableViewer; + } + + private void createEventColumn(final TableViewer tableViewer, + final TableColumnLayout layout) { + final TableViewerColumn tableViewerColumn = new TableViewerColumn( + tableViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new TableColumnEventLabelProvider()); + tableViewerColumn.getColumn().setText("Event"); + tableViewerColumn.getColumn().setAlignment(SWT.CENTER); + layout.setColumnData(tableViewerColumn.getColumn(), + new ColumnWeightData(1)); + } + + private void createPropositionColumn(final TableViewer tableViewer, + final TableColumnLayout layout, + final CounterExampleProposition proposition) { + final TableViewerColumn tableViewerColumn = new TableViewerColumn( + tableViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new TableColumnValueLabelProvider( + proposition)); + tableViewerColumn.getColumn().setText(proposition.toString()); + tableViewerColumn.getColumn().setAlignment(SWT.CENTER); + layout.setColumnData(tableViewerColumn.getColumn(), + new ColumnWeightData(1)); + } + + private TreeViewer createTreeViewer(Composite parent, + CounterExample counterExample) { + final CounterExampleTreeViewer treeViewer = new CounterExampleTreeViewer( + parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); + + treeViewer.getTree().setHeaderVisible(true); + treeViewer.getTree().setLinesVisible(true); + + TreeViewerColumn propositionColumn = new TreeViewerColumn(treeViewer, + SWT.CENTER); + propositionColumn + .setLabelProvider(new TreeColumnPropositionLabelProvider()); + propositionColumn.getColumn().setAlignment(SWT.CENTER); + propositionColumn.getColumn().setText("Proposition"); + + for (int j = 0; j < counterExample.getStates().size(); j++) { + TreeViewerColumn column = new TreeViewerColumn(treeViewer, + SWT.CENTER); + column.getColumn().setAlignment(SWT.CENTER); + + CounterExampleState state = counterExample.getStates().get(j); + column.setLabelProvider(new TreeColumnValueLabelProvider(state)); + Operation operation = state.getOperation(); + + if (operation != null) + column.getColumn().setText(operation.getName()); + else + column.getColumn().setText("No operation"); + + column.getColumn().pack(); + } + + treeViewer.getTree().setToolTipText( + "Click to show the state in the history"); + + treeViewer.getTree().addMouseListener( + new CounterExampleTreeMouseAdapter(treeViewer, counterExample)); + + // treeViewer.getTree().addMouseMoveListener( + // new CounterExampleTreeMouseMoveAdapter(treeViewer)); + + treeViewer.setContentProvider(new CounterExampleContentProvider()); + treeViewer.setInput(Arrays + .asList(new CounterExampleProposition[] { counterExample + .getPropositionRoot() })); + + treeViewer.expandAll(); + propositionColumn.getColumn().pack(); + + return treeViewer; + } + + public void printCounterExample(final String title) { + final PrintDialog dialog = new PrintDialog(graphicalViewer.getControl() + .getShell(), SWT.NULL); + + try { + final PrinterData printerData = dialog.open(); + if (printerData != null) { + final PrintGraphicalViewerOperation viewerOperation = new PrintGraphicalViewerOperation( + new Printer(printerData), graphicalViewer); + + viewerOperation.run(title); + } + } catch (SWTException e) { + Logger.notifyUser("Failed to print the LTL counter example.", e); + } + } + + public void updateTopControl(final ViewType viewType) { + final Control topControl; + switch (viewType) { + case TABLE: + topControl = tableViewer.getControl(); + break; + case TREE: + topControl = treeViewer.getControl(); + break; + case INTERACTIVE: + topControl = interactiveView; + break; + default: + throw new IllegalStateException( + "Unexpected view type in LTL counter-example view"); + } + + layout.topControl = topControl; + if (layout.topControl != null) { + final Composite parent = layout.topControl.getParent(); + if (parent != null) { + parent.layout(); + } + } + + } + + public CounterExample getCounterExample() { + return counterExample; + } + + public void zoomIn() { + final ZoomManager zoomManager = rootEditPart.getZoomManager(); + if (zoomManager != null) { + if (zoomManager != null && zoomManager.canZoomIn()) { + zoomManager.setZoom(zoomManager.getNextZoomLevel()); + } + } + } + + public void zoomOut() { + final ZoomManager zoomManager = rootEditPart.getZoomManager(); + if (zoomManager != null) { + if (zoomManager != null && zoomManager.canZoomOut()) { + zoomManager.setZoom(zoomManager.getPreviousZoomLevel()); + } + } + } + + protected void stateChanged(final State activeState, + final Operation operation) { + if (activeState.isInitialized()) { + final List<Operation> fullPath = counterExample.getFullPath(); + + final Animator animator = Animator.getAnimator(); + final History history = animator.getHistory(); + + if (isCounterExampleLoadedInHistory(counterExample)) { + final int initPathSize = counterExample.getInitPath().size(); + + currentIndex = history.getCurrentPosition() - initPathSize; + + // HistoryItem item = history.getCurrent(); + + if (counterExample.getPathType() == PathType.INFINITE + && currentIndex == fullPath.size() - initPathSize) { + currentIndex = counterExample.getLoopEntry(); + } + } + + treeViewer.refresh(); + tableViewer.refresh(); + // We know that each element is of type + // EditPart, but AbstractEditPart.getChildren() returns just + // a list + @SuppressWarnings("unchecked") + List<EditPart> children = rootEditPart.getChildren(); + for (EditPart child : children) { + child.refresh(); + } + + currentIndex = -1; + } + } + + private boolean isCounterExampleLoadedInHistory(final CounterExample ce) { + final List<Operation> fullPath = ce.getFullPath(); + + final Animator animator = Animator.getAnimator(); + final History history = animator.getHistory(); + final List<HistoryItem> historyItems = new ArrayList<HistoryItem>( + Arrays.asList(history.getAllItems())); + + final boolean isLoaded; + if (!historyItems.isEmpty()) { + if (historyItems.get(historyItems.size() - 1).getOperation() == null) { + historyItems.remove(historyItems.size() - 1); + } + + if (fullPath.size() == historyItems.size()) { + boolean ceIsEqual = true; + for (int i = 0; i < fullPath.size(); i++) { + final Operation ceOperation = fullPath.get(i); + final Operation histOperation = historyItems.get(i) + .getOperation(); + if (!ceOperation.equals(histOperation)) { + ceIsEqual = false; + break; + } + } + isLoaded = ceIsEqual; + } else { + isLoaded = false; + } + } else { + isLoaded = false; + } + return isLoaded; + } + + public int getCurrentIndex() { + return currentIndex; + } + +} diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTableMouseAdapter.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTableMouseAdapter.java index 7399feca88a77453a4c4508cd6b614b164e36c38..19d74cff543391e2ac936de767380ea4be699751 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTableMouseAdapter.java +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTableMouseAdapter.java @@ -15,6 +15,7 @@ import de.prob.core.domainobjects.History; import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.exceptions.ProBException; import de.prob.logging.Logger; +import de.prob.ui.ltl.handler.CounterExampleHistoryHandler; public final class CounterExampleTableMouseAdapter extends MouseAdapter { private final CounterExampleTableViewer tableViewer; diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTreeMouseAdapter.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTreeMouseAdapter.java index 727f22092560709510d4935e015500876d9e3833..19e3dd0e5805a1843e5faee7c5df177b38105eb1 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTreeMouseAdapter.java +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleTreeMouseAdapter.java @@ -11,6 +11,7 @@ import de.prob.core.domainobjects.History; import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.exceptions.ProBException; import de.prob.logging.Logger; +import de.prob.ui.ltl.handler.CounterExampleHistoryHandler; public final class CounterExampleTreeMouseAdapter extends MouseAdapter { private final CounterExampleTreeViewer treeViewer; diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleUnaryFigure.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleUnaryFigure.java index 3052fadb3ca9e4531859f10f8fa9990023b56620..814cf4b94b8d76889f1cc02c927d034b184aae77 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleUnaryFigure.java +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleUnaryFigure.java @@ -22,6 +22,7 @@ import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleUnaryOperator; import de.prob.exceptions.ProBException; import de.prob.logging.Logger; +import de.prob.ui.ltl.handler.CounterExampleHistoryHandler; public final class CounterExampleUnaryFigure extends CounterExamplePropositionFigure implements MouseMotionListener { diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleViewPart.java b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleViewPart.java index 49a1b67c4af5a2f958a8fe2f1eac320bc17066ac..ccc78b7ee67206ec55bb01e1f5e4db83c56bb6e1 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleViewPart.java +++ b/de.prob.ui/src/de/prob/ui/ltl/CounterExampleViewPart.java @@ -1,59 +1,27 @@ package de.prob.ui.ltl; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - import org.eclipse.core.commands.Command; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.ParameterizedCommand; -import org.eclipse.gef.DefaultEditDomain; -import org.eclipse.gef.EditDomain; -import org.eclipse.gef.EditPart; -import org.eclipse.gef.GraphicalViewer; -import org.eclipse.gef.RootEditPart; -import org.eclipse.gef.editparts.ScalableRootEditPart; -import org.eclipse.gef.editparts.ZoomManager; -import org.eclipse.gef.print.PrintGraphicalViewerOperation; -import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer; import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.layout.TableColumnLayout; -import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.ColumnWeightData; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.viewers.TableViewerColumn; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.TreeViewerColumn; -import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; -import org.eclipse.swt.SWTException; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabFolder2Adapter; import org.eclipse.swt.custom.CTabFolderEvent; import org.eclipse.swt.custom.CTabItem; -import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.custom.StackLayout; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.printing.PrintDialog; -import org.eclipse.swt.printing.Printer; -import org.eclipse.swt.printing.PrinterData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.menus.CommandContributionItem; import org.eclipse.ui.services.ISourceProviderService; -import de.prob.core.Animator; -import de.prob.core.command.LtlCheckingCommand.PathType; -import de.prob.core.domainobjects.History; -import de.prob.core.domainobjects.HistoryItem; import de.prob.core.domainobjects.Operation; import de.prob.core.domainobjects.State; import de.prob.core.domainobjects.ltl.CounterExample; -import de.prob.core.domainobjects.ltl.CounterExampleProposition; -import de.prob.core.domainobjects.ltl.CounterExampleState; import de.prob.logging.Logger; import de.prob.ui.StateBasedViewPart; @@ -64,23 +32,35 @@ import de.prob.ui.StateBasedViewPart; * */ public final class CounterExampleViewPart extends StateBasedViewPart { - public static final String ID = "de.prob.ui.ltl.CounterExampleView"; + private static final String ID = "de.prob.ui.ltl.CounterExampleView"; - private static final String COUNTEREXAMPLE_DATA_KEY = "counterexample"; - private static final String EDITPART_DATA_KEY = "editpart"; - private static final String GRAPHICALVIEWER_DATA_KEY = "graphicalviewer"; - private static final String LAYOUT_DATA_KEY = "layout"; - private static final String TABLEVIEW_DATA_KEY = "tableview"; - private static final String TREEVIEW_DATA_KEY = "treeview"; - private static final String INTERACTIVEVIEW_DATA_KEY = "interactiveview"; - private static final String TABLEVIEWER_DATA_KEY = "tableviewer"; - private static final String TREEVIEWER_DATA_KEY = "treeviewer"; + private static final String DATA_KEY = "tabdata"; - private final List<CounterExample> counterExamples = new ArrayList<CounterExample>(); + public static enum ViewType { + INTERACTIVE, TREE, TABLE + }; private CTabFolder tabFolder; - private String viewType = "Interactive"; - private int currentIndex = -1; + private ViewType viewType = ViewType.INTERACTIVE; + + public static CounterExampleViewPart showDefault() { + final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow().getActivePage(); + CounterExampleViewPart counterExampleView = null; + try { + counterExampleView = (CounterExampleViewPart) workbenchPage + .showView(ID); + } catch (PartInitException e) { + Logger.notifyUser("Failed to show the LTL view.", e); + } + return counterExampleView; + } + + public static CounterExampleViewPart getDefault() { + final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow().getActivePage(); + return (CounterExampleViewPart) workbenchPage.findView(ID); + } @Override protected Control createStatePartControl(Composite parent) { @@ -98,6 +78,22 @@ public final class CounterExampleViewPart extends StateBasedViewPart { } public void addCounterExample(final CounterExample counterExample) { + initializeMenuSetting(); + updateCounterExampleLoadedProvider(true); + + final Runnable runnable = new Runnable() { + @Override + public void run() { + final CTabItem tabItem = createTabItem(counterExample); + tabFolder.setSelection(tabItem); + tabFolder.update(); + } + }; + + Display.getDefault().asyncExec(runnable); + } + + private void initializeMenuSetting() { if (tabFolder.getItemCount() == 0) { MenuManager manager = (MenuManager) getViewSite().getActionBars() .getMenuManager(); @@ -117,210 +113,56 @@ public final class CounterExampleViewPart extends StateBasedViewPart { Command command = parameterizedCommand.getCommand(); try { - HandlerUtil.updateRadioState(command, viewType); + HandlerUtil.updateRadioState(command, + viewType.name()); } catch (ExecutionException e) { } } } } } - - updateCounterExampleLoadedProvider(true); - counterExamples.add(counterExample); - - final Runnable runnable = new Runnable() { - @Override - public void run() { - final CTabItem tabItem = createTabItem(counterExample); - tabFolder.setSelection(tabItem); - tabFolder.update(); - } - }; - - Display.getDefault().asyncExec(runnable); - } - - public CounterExample getCurrentCounterExample() { - final CTabItem selection = tabFolder.getSelection(); - return selection == null ? null : (CounterExample) selection - .getData(COUNTEREXAMPLE_DATA_KEY); } public void zoomInCounterExample() { - final CTabItem tabItem = tabFolder.getSelection(); - - if (tabItem != null) { - ScalableRootEditPart editPart = (ScalableRootEditPart) tabItem - .getData(EDITPART_DATA_KEY); - - if (editPart != null) { - ZoomManager manager = editPart.getZoomManager(); - - if (manager != null && manager.canZoomIn()) { - manager.setZoom(manager.getNextZoomLevel()); - } - } + final CounterExampleTab tab = getCurrentTab(); + if (tab != null) { + tab.zoomIn(); } } public void zoomOutCounterExample() { - final CTabItem tabItem = tabFolder.getSelection(); - - if (tabItem != null) { - ScalableRootEditPart editPart = (ScalableRootEditPart) tabItem - .getData(EDITPART_DATA_KEY); - - if (editPart != null) { - ZoomManager manager = editPart.getZoomManager(); - - if (manager != null && manager.canZoomOut()) { - manager.setZoom(manager.getPreviousZoomLevel()); - } - } + final CounterExampleTab tab = getCurrentTab(); + if (tab != null) { + tab.zoomOut(); } } public void printCounterExample() { - final CTabItem tabItem = tabFolder.getSelection(); - - if (tabItem != null) { - GraphicalViewer graphicalViewer = (GraphicalViewer) tabItem - .getData(GRAPHICALVIEWER_DATA_KEY); - - if (graphicalViewer != null) { - PrintDialog dialog = new PrintDialog(graphicalViewer - .getControl().getShell(), SWT.NULL); - - try { - PrinterData data = dialog.open(); - - if (data != null) { - PrintGraphicalViewerOperation viewerOperation = new PrintGraphicalViewerOperation( - new Printer(data), graphicalViewer); - - viewerOperation.run(getTitle()); - } - } catch (SWTException e) { - Logger.notifyUser( - "Failed to print the LTL counter example.", e); - } - } + final CounterExampleTab tab = getCurrentTab(); + if (tab != null) { + tab.printCounterExample(getTitle()); } } - public void setViewType(String viewType) { + public void setViewType(ViewType viewType) { this.viewType = viewType; - for (CTabItem tabItem : tabFolder.getItems()) { - StackLayout layout = (StackLayout) tabItem.getData(LAYOUT_DATA_KEY); - - if (viewType.equals("Table")) { - layout.topControl = (Composite) tabItem - .getData(TABLEVIEW_DATA_KEY); - } else if (viewType.equals("Tree")) { - layout.topControl = (Composite) tabItem - .getData(TREEVIEW_DATA_KEY); - } else if (viewType.equals("Interactive")) { - layout.topControl = (Composite) tabItem - .getData(INTERACTIVEVIEW_DATA_KEY); - } - - if (layout.topControl != null) { - Composite parent = layout.topControl.getParent(); - - if (parent != null) - parent.layout(); - } + final CounterExampleTab tab = getTab(tabItem); + tab.updateTopControl(viewType); } } public int getCurrentIndex() { - return currentIndex; + final CounterExampleTab tab = getCurrentTab(); + return tab != null ? tab.getCurrentIndex() : -1; } @Override protected void stateChanged(final State activeState, final Operation operation) { - if (tabFolder != null) { - CTabItem selection = tabFolder.getSelection(); - - if (selection != null) { - if (activeState.isInitialized()) { - CounterExample ce = (CounterExample) selection - .getData(COUNTEREXAMPLE_DATA_KEY); - - if (ce != null) { - final List<Operation> fullPath = ce.getFullPath(); - - Animator animator = Animator.getAnimator(); - History history = animator.getHistory(); - ArrayList<HistoryItem> historyItems = new ArrayList<HistoryItem>( - Arrays.asList(history.getAllItems())); - - if (!historyItems.isEmpty()) { - if (historyItems.get(historyItems.size() - 1) - .getOperation() == null) { - historyItems.remove(historyItems.size() - 1); - } - - if (fullPath.size() == historyItems.size()) { - boolean ceLoaded = true; - - for (int i = 0; i < fullPath.size(); i++) { - if (!fullPath.get(i).equals( - historyItems.get(i).getOperation())) { - ceLoaded = false; - } - } - - if (ceLoaded) { - final int initPathSize = ce.getInitPath() - .size(); - - currentIndex = history.getCurrentPosition() - - initPathSize; - - // HistoryItem item = history.getCurrent(); - - if (ce.getPathType() == PathType.INFINITE - && currentIndex == fullPath.size() - - initPathSize) { - currentIndex = ce.getLoopEntry(); - } - } - } - } - } - } - - Viewer treeViewer = (Viewer) selection - .getData(TREEVIEWER_DATA_KEY); - - if (treeViewer != null) - treeViewer.refresh(); - - Viewer tableViewer = (Viewer) selection - .getData(TABLEVIEWER_DATA_KEY); - - if (tableViewer != null) - tableViewer.refresh(); - - ScalableRootEditPart editPart = (ScalableRootEditPart) selection - .getData(EDITPART_DATA_KEY); - - if (editPart != null) { - // We know that each element is of type - // EditPart, but AbstractEditPart.getChildren() returns just - // a list - @SuppressWarnings("unchecked") - List<EditPart> children = editPart.getChildren(); - for (EditPart child : children) { - child.refresh(); - } - } - - currentIndex = -1; - } + final CounterExampleTab tab = getCurrentTab(); + if (tab != null) { + tab.stateChanged(activeState, operation); } } @@ -336,6 +178,11 @@ public final class CounterExampleViewPart extends StateBasedViewPart { updateCounterExampleLoadedProvider(false); } + public CounterExample getCurrentCounterExample() { + final CounterExampleTab data = getCurrentTab(); + return data == null ? null : data.getCounterExample(); + } + private void updateCounterExampleLoadedProvider(boolean enabled) { ISourceProviderService service = (ISourceProviderService) getSite() .getService(ISourceProviderService.class); @@ -346,177 +193,27 @@ public final class CounterExampleViewPart extends StateBasedViewPart { } private CTabItem createTabItem(final CounterExample counterExample) { - final CTabItem tabItem = new CTabItem(tabFolder, SWT.CLOSE); - tabItem.setText(counterExample.getPropositionRoot().toString()); - tabItem.setData(COUNTEREXAMPLE_DATA_KEY, counterExample); - - final Composite sashForm = new SashForm(tabFolder, SWT.HORIZONTAL); - tabItem.setControl(sashForm); - - Composite composite = new Composite(sashForm, SWT.None); - - StackLayout layout = new StackLayout(); - composite.setLayout(layout); - tabItem.setData(LAYOUT_DATA_KEY, layout); - - Composite tableView = new Composite(composite, SWT.None); - TableViewer tableViewer = createTableViewer(tableView, counterExample); - tabItem.setData(TABLEVIEW_DATA_KEY, tableView); - tabItem.setData(TABLEVIEWER_DATA_KEY, tableViewer); - // createPopupMenu(tableViewer.getTable(), tableViewer); - - Composite treeView = new Composite(composite, SWT.None); - treeView.setLayout(new FillLayout()); - TreeViewer treeViewer = createTreeViewer(treeView, counterExample); - tabItem.setData(TREEVIEW_DATA_KEY, treeView); - tabItem.setData(TREEVIEWER_DATA_KEY, treeViewer); - // createPopupMenu(treeViewer.getTree(), treeViewer); - - RootEditPart rootEditPart = new ScalableRootEditPart(); - tabItem.setData(EDITPART_DATA_KEY, rootEditPart); - - GraphicalViewer graphicalViewer = new ScrollingGraphicalViewer(); - tabItem.setData(GRAPHICALVIEWER_DATA_KEY, graphicalViewer); - - Control interactiveView = graphicalViewer.createControl(composite); - interactiveView.setBackground(Display.getDefault().getSystemColor( - SWT.COLOR_WHITE)); - // createPopupMenu(interactiveView, graphicalViewer); - - tabItem.setData(INTERACTIVEVIEW_DATA_KEY, interactiveView); - - graphicalViewer.setRootEditPart(rootEditPart); - graphicalViewer.setEditPartFactory(new CounterExampleEditPartFactory()); - graphicalViewer.setContents(counterExample); - - EditDomain editDomain = new DefaultEditDomain(null); - editDomain.addViewer(graphicalViewer); - - if (viewType.equals("Table")) { - layout.topControl = tableView; - } else if (viewType.equals("Tree")) { - layout.topControl = treeView; - } else if (viewType.equals("Interactive")) { - layout.topControl = interactiveView; - } + final CounterExampleTab ceTab = new CounterExampleTab(tabFolder, + counterExample); + final CTabItem tabItem = ceTab.getTabitem(); + tabItem.setData(DATA_KEY, ceTab); + ceTab.updateTopControl(viewType); return tabItem; } - private TableViewer createTableViewer(Composite parent, - final CounterExample counterExample) { - final CounterExampleTableViewer tableViewer = new CounterExampleTableViewer( - parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); - tableViewer.getTable().setHeaderVisible(true); - tableViewer.getTable().setLinesVisible(true); - - final TableColumnLayout layout = new TableColumnLayout(); - parent.setLayout(layout); - createEventColumn(tableViewer, layout); - - final Collection<CounterExampleProposition> propositions = counterExample - .getPropositionRoot().getChildren(); - - for (CounterExampleProposition proposition : propositions) { - createPropositionColumn(tableViewer, layout, proposition); + private CounterExampleTab getCurrentTab() { + final CounterExampleTab tab; + if (tabFolder != null) { + final CTabItem selection = tabFolder.getSelection(); + tab = getTab(selection); + } else { + tab = null; } - - tableViewer.getTable().setToolTipText( - "Click to show the state in the history"); - - tableViewer.getTable() - .addMouseListener( - new CounterExampleTableMouseAdapter(tableViewer, - counterExample)); - - tableViewer.setContentProvider(new ArrayContentProvider()); - tableViewer.setInput(counterExample.getStates()); - - return tableViewer; - } - - private void createEventColumn(final TableViewer tableViewer, - final TableColumnLayout layout) { - final TableViewerColumn tableViewerColumn = new TableViewerColumn( - tableViewer, SWT.NONE); - tableViewerColumn.setLabelProvider(new TableColumnEventLabelProvider()); - tableViewerColumn.getColumn().setText("Event"); - tableViewerColumn.getColumn().setAlignment(SWT.CENTER); - layout.setColumnData(tableViewerColumn.getColumn(), - new ColumnWeightData(1)); + return tab; } - private void createPropositionColumn(final TableViewer tableViewer, - final TableColumnLayout layout, - final CounterExampleProposition proposition) { - final TableViewerColumn tableViewerColumn = new TableViewerColumn( - tableViewer, SWT.NONE); - tableViewerColumn.setLabelProvider(new TableColumnValueLabelProvider( - proposition)); - tableViewerColumn.getColumn().setText(proposition.toString()); - tableViewerColumn.getColumn().setAlignment(SWT.CENTER); - layout.setColumnData(tableViewerColumn.getColumn(), - new ColumnWeightData(1)); + private CounterExampleTab getTab(final CTabItem item) { + return item == null ? null : (CounterExampleTab) item.getData(DATA_KEY); } - - private TreeViewer createTreeViewer(Composite parent, - CounterExample counterExample) { - final CounterExampleTreeViewer treeViewer = new CounterExampleTreeViewer( - parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); - - treeViewer.getTree().setHeaderVisible(true); - treeViewer.getTree().setLinesVisible(true); - - TreeViewerColumn propositionColumn = new TreeViewerColumn(treeViewer, - SWT.CENTER); - propositionColumn - .setLabelProvider(new TreeColumnPropositionLabelProvider()); - propositionColumn.getColumn().setAlignment(SWT.CENTER); - propositionColumn.getColumn().setText("Proposition"); - - for (int j = 0; j < counterExample.getStates().size(); j++) { - TreeViewerColumn column = new TreeViewerColumn(treeViewer, - SWT.CENTER); - column.getColumn().setAlignment(SWT.CENTER); - - CounterExampleState state = counterExample.getStates().get(j); - column.setLabelProvider(new TreeColumnValueLabelProvider(state)); - Operation operation = state.getOperation(); - - if (operation != null) - column.getColumn().setText(operation.getName()); - else - column.getColumn().setText("No operation"); - - column.getColumn().pack(); - } - - treeViewer.getTree().setToolTipText( - "Click to show the state in the history"); - - treeViewer.getTree().addMouseListener( - new CounterExampleTreeMouseAdapter(treeViewer, counterExample)); - - // treeViewer.getTree().addMouseMoveListener( - // new CounterExampleTreeMouseMoveAdapter(treeViewer)); - - treeViewer.setContentProvider(new CounterExampleContentProvider()); - treeViewer.setInput(Arrays - .asList(new CounterExampleProposition[] { counterExample - .getPropositionRoot() })); - - treeViewer.expandAll(); - propositionColumn.getColumn().pack(); - - return treeViewer; - } - - // private void createPopupMenu(Control control, - // ISelectionProvider selectionProvider) { - // MenuManager menuManager = new MenuManager(); - // Menu viewMenu = menuManager.createContextMenu(control); - // control.setMenu(viewMenu); - // getSite().registerContextMenu(menuManager, selectionProvider); - // getSite().setSelectionProvider(selectionProvider); - // } } \ No newline at end of file diff --git a/de.prob.ui/src/de/prob/ui/ltl/LtlCheckingDialog.java b/de.prob.ui/src/de/prob/ui/ltl/LtlCheckingDialog.java index 3686f170f6440d3123286bf2164717c7c93da81e..d8abf60cbb848ab0759118ed6a1639b476b2675e 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/LtlCheckingDialog.java +++ b/de.prob.ui/src/de/prob/ui/ltl/LtlCheckingDialog.java @@ -25,7 +25,6 @@ import org.eclipse.core.runtime.jobs.Job; import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.core.runtime.preferences.ConfigurationScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; -import org.eclipse.core.runtime.preferences.IScopeContext; import org.eclipse.jface.dialogs.DialogTray; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; @@ -63,6 +62,8 @@ import de.prob.prolog.term.PrologTerm; import de.prob.ui.DialogHelpers; public final class LtlCheckingDialog extends TrayDialog { + private static final String CONFIGURATION_ID = "de.prob.ui.ltl.CounterExampleViewPart"; + private static final StartOption[] START_MODES = new StartOption[] { new StartOption(LtlCheckingCommand.StartMode.init, "Start in the (possible several) initialisation states of the model"), @@ -79,7 +80,7 @@ public final class LtlCheckingDialog extends TrayDialog { private Combo startingPointOptions = null; private Combo symmetryOptions = null; - protected LtlCheckingDialog(final Shell shell) { + public LtlCheckingDialog(final Shell shell) { super(shell); this.shell = shell; } @@ -227,9 +228,8 @@ public final class LtlCheckingDialog extends TrayDialog { } private void saveFormulas(Set<String> formulas) { - IScopeContext configContext = new ConfigurationScope(); - IEclipsePreferences configNode = configContext - .getNode("de.prob.ui.ltl.CounterExampleViewPart"); + final IEclipsePreferences configNode = ConfigurationScope.INSTANCE + .getNode(CONFIGURATION_ID); if (configNode != null) { try { @@ -252,9 +252,8 @@ public final class LtlCheckingDialog extends TrayDialog { @SuppressWarnings("unchecked") private Set<String> getFormulas() { - IScopeContext configContext = new ConfigurationScope(); - IEclipsePreferences configNode = configContext - .getNode("de.prob.ui.ltl.CounterExampleViewPart"); + IEclipsePreferences configNode = ConfigurationScope.INSTANCE + .getNode(CONFIGURATION_ID); byte[] formula = null; if (configNode != null) { diff --git a/de.prob.ui/src/de/prob/ui/ltl/LtlCheckingFinishedListener.java b/de.prob.ui/src/de/prob/ui/ltl/LtlCheckingFinishedListener.java index fd82ad567b63d930c8fafe8a8bae9939de89ff8e..4bef5235041480ed300081c61d6b055ce1a6e62f 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/LtlCheckingFinishedListener.java +++ b/de.prob.ui/src/de/prob/ui/ltl/LtlCheckingFinishedListener.java @@ -12,9 +12,6 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; import de.prob.core.command.LtlCheckingCommand.Result; import de.prob.core.domainobjects.ltl.CounterExample; @@ -46,16 +43,9 @@ public class LtlCheckingFinishedListener extends JobChangeAdapter { protected void showCounterexampleInView(final Result modelCheckingResult) { final CounterExample counterExample = new CounterExample( modelCheckingResult); - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - - try { - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .showView(CounterExampleViewPart.ID); - counterExampleView.addCounterExample(counterExample); - } catch (PartInitException e) { - Logger.notifyUser("Failed to show the LTL view.", e); - } + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .showDefault(); + counterExampleView.addCounterExample(counterExample); } private void showResult(final Result modelCheckingResult) { diff --git a/de.prob.ui/src/de/prob/ui/ltl/TableColumnEventLabelProvider.java b/de.prob.ui/src/de/prob/ui/ltl/TableColumnEventLabelProvider.java index 98efaa00838dee20cec58bf253d7448a7980bb2c..b7154dfd3cb40ea3f1f612baad7f2e7a0b7080cb 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/TableColumnEventLabelProvider.java +++ b/de.prob.ui/src/de/prob/ui/ltl/TableColumnEventLabelProvider.java @@ -8,8 +8,6 @@ import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; import de.prob.core.domainobjects.Operation; import de.prob.core.domainobjects.ltl.CounterExampleState; @@ -32,24 +30,21 @@ public final class TableColumnEventLabelProvider extends CellLabelProvider { final Operation operation = state.getOperation(); final int index = state.getIndex(); - if (operation != null) - cell.setText(operation.getName()); - else - cell.setText("No operation"); - - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .findView(CounterExampleViewPart.ID); + final String opText = operation != null ? operation.getName() + : "No operation"; + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .getDefault(); + final Font font; if (counterExampleView != null) { final int currentIndex = counterExampleView.getCurrentIndex(); - - if (index != currentIndex) - cell.setFont(normal); - else - cell.setFont(bold); + font = index == currentIndex ? bold : normal; + } else { + font = normal; } + + cell.setText(opText); + cell.setFont(font); } } } diff --git a/de.prob.ui/src/de/prob/ui/ltl/TableColumnValueLabelProvider.java b/de.prob.ui/src/de/prob/ui/ltl/TableColumnValueLabelProvider.java index 7ad1c16682f3cd6157cb052f5e70340a12648184..80ca2adcb04c4246bd82d9d24e2e86fce39b6841 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/TableColumnValueLabelProvider.java +++ b/de.prob.ui/src/de/prob/ui/ltl/TableColumnValueLabelProvider.java @@ -8,8 +8,6 @@ import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleState; @@ -42,11 +40,8 @@ public final class TableColumnValueLabelProvider extends CellLabelProvider { index); cell.setText(value.toString()); - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .findView(CounterExampleViewPart.ID); - + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .getDefault(); if (counterExampleView != null) { final int currentIndex = counterExampleView.getCurrentIndex(); diff --git a/de.prob.ui/src/de/prob/ui/ltl/TreeColumnValueLabelProvider.java b/de.prob.ui/src/de/prob/ui/ltl/TreeColumnValueLabelProvider.java index 8692b6bfd618ccfd57ef8399be1ffa67753f9837..abdc58d8eb5c5b943366526dcf5ae2e0731e68ea 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/TreeColumnValueLabelProvider.java +++ b/de.prob.ui/src/de/prob/ui/ltl/TreeColumnValueLabelProvider.java @@ -5,8 +5,6 @@ import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; import de.prob.core.domainobjects.ltl.CounterExampleProposition; import de.prob.core.domainobjects.ltl.CounterExampleState; @@ -43,11 +41,8 @@ public final class TreeColumnValueLabelProvider extends CellLabelProvider { .get(index); cell.setText(value.toString()); - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .findView(CounterExampleViewPart.ID); - + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .getDefault(); if (counterExampleView != null) { final int currentIndex = counterExampleView .getCurrentIndex(); diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleHistoryHandler.java b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleHistoryHandler.java similarity index 58% rename from de.prob.ui/src/de/prob/ui/ltl/CounterExampleHistoryHandler.java rename to de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleHistoryHandler.java index c6c7bc757d33634e14a0d886c9213199ee59b203..39992f973cb5617f7a82c1d79f8e8019b435c083 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleHistoryHandler.java +++ b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleHistoryHandler.java @@ -1,7 +1,7 @@ /** * */ -package de.prob.ui.ltl; +package de.prob.ui.ltl.handler; import java.util.List; @@ -9,17 +9,13 @@ import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; import de.prob.core.Animator; import de.prob.core.command.SetTraceCommand; import de.prob.core.domainobjects.Operation; import de.prob.core.domainobjects.ltl.CounterExample; import de.prob.exceptions.ProBException; -import de.prob.ui.ProbUiPlugin; +import de.prob.ui.ltl.CounterExampleViewPart; /** * This handler is used to take the current counter-example and fill it into the @@ -38,16 +34,12 @@ public final class CounterExampleHistoryHandler extends AbstractHandler } public static void showCounterExampleInAnimator() throws ExecutionException { - final IWorkbenchWindow window = ProbUiPlugin.getDefault() - .getWorkbench().getActiveWorkbenchWindow(); - final CounterExampleViewPart view = findCEView(window); - + final CounterExampleViewPart view = CounterExampleViewPart.getDefault(); if (view != null) { final CounterExample ce = view.getCurrentCounterExample(); if (ce != null) { try { - final List<Operation> fullPath = ce.getFullPath(); final SetTraceCommand cmd = new SetTraceCommand(fullPath); final Animator animator = Animator.getAnimator(); @@ -62,23 +54,4 @@ public final class CounterExampleHistoryHandler extends AbstractHandler } } - private static CounterExampleViewPart findCEView( - final IWorkbenchWindow window) { - final IWorkbenchPage page = window.getActivePage(); - IViewPart view = page.findView(CounterExampleViewPart.ID); - if (view == null) { - MessageDialog.openError(window.getShell(), "Internal Error", - "Cannot find the History View"); - return null; - } else { - if (view instanceof CounterExampleViewPart) - return (CounterExampleViewPart) view; - else { - MessageDialog.openError(window.getShell(), "Internal Error", - "Not expected type of the Counter Example View: " - + view.getClass().getName()); - return null; - } - } - } } diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePrintHandler.java b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExamplePrintHandler.java similarity index 56% rename from de.prob.ui/src/de/prob/ui/ltl/CounterExamplePrintHandler.java rename to de.prob.ui/src/de/prob/ui/ltl/handler/CounterExamplePrintHandler.java index 888b8672c5c8e7c4623392f7a419a92c90510ac9..84c71012c805c044b3703679c249600f2b38d641 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExamplePrintHandler.java +++ b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExamplePrintHandler.java @@ -1,27 +1,21 @@ -package de.prob.ui.ltl; +package de.prob.ui.ltl.handler; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; + +import de.prob.ui.ltl.CounterExampleViewPart; public class CounterExamplePrintHandler extends AbstractHandler implements IHandler { @Override public Object execute(final ExecutionEvent event) throws ExecutionException { - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .findView(CounterExampleViewPart.ID); - + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .getDefault(); if (counterExampleView != null) { counterExampleView.printCounterExample(); } - return null; - } } diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleViewMenuHandler.java b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleViewMenuHandler.java similarity index 54% rename from de.prob.ui/src/de/prob/ui/ltl/CounterExampleViewMenuHandler.java rename to de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleViewMenuHandler.java index c8dd42c8a413a7498f59f58716e6661f0f13d7fc..1fe417817482af12885ecf0fe817b257f64d4a82 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleViewMenuHandler.java +++ b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleViewMenuHandler.java @@ -1,14 +1,15 @@ -package de.prob.ui.ltl; +package de.prob.ui.ltl.handler; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.handlers.RadioState; +import de.prob.ui.ltl.CounterExampleViewPart; +import de.prob.ui.ltl.CounterExampleViewPart.ViewType; + /*** * Provides a menu handler for a menu in a counter-example view * @@ -24,17 +25,15 @@ public final class CounterExampleViewMenuHandler extends AbstractHandler if (HandlerUtil.matchesRadioState(event)) return null; - String currentViewType = event.getParameter(RadioState.PARAMETER_ID); - HandlerUtil.updateRadioState(event.getCommand(), currentViewType); - - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .findView(CounterExampleViewPart.ID); + final String viewTypeAsString = event + .getParameter(RadioState.PARAMETER_ID); + final ViewType viewType = ViewType.valueOf(viewTypeAsString); + HandlerUtil.updateRadioState(event.getCommand(), viewTypeAsString); + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .getDefault(); if (counterExampleView != null) - counterExampleView.setViewType(currentViewType); + counterExampleView.setViewType(viewType); return null; } diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleZoomInHandler.java b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleZoomInHandler.java similarity index 56% rename from de.prob.ui/src/de/prob/ui/ltl/CounterExampleZoomInHandler.java rename to de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleZoomInHandler.java index 62a6bca34c2fb8295cbb4d417229cbcc752f3575..2195ede6a1cec7485cf91a61e514dd2259fa3eda 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleZoomInHandler.java +++ b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleZoomInHandler.java @@ -1,26 +1,21 @@ -package de.prob.ui.ltl; +package de.prob.ui.ltl.handler; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; + +import de.prob.ui.ltl.CounterExampleViewPart; public class CounterExampleZoomInHandler extends AbstractHandler implements IHandler { @Override public Object execute(final ExecutionEvent event) throws ExecutionException { - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .findView(CounterExampleViewPart.ID); - + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .getDefault(); if (counterExampleView != null) { counterExampleView.zoomInCounterExample(); } - return null; } diff --git a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleZoomOutHandler.java b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleZoomOutHandler.java similarity index 56% rename from de.prob.ui/src/de/prob/ui/ltl/CounterExampleZoomOutHandler.java rename to de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleZoomOutHandler.java index 6d4be5746e941a45ff8c60c0fa6de227671e9e62..a665b2320ad24c400c4798679a7c02af8aabfcba 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/CounterExampleZoomOutHandler.java +++ b/de.prob.ui/src/de/prob/ui/ltl/handler/CounterExampleZoomOutHandler.java @@ -1,26 +1,21 @@ -package de.prob.ui.ltl; +package de.prob.ui.ltl.handler; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; + +import de.prob.ui.ltl.CounterExampleViewPart; public class CounterExampleZoomOutHandler extends AbstractHandler implements IHandler { @Override public Object execute(final ExecutionEvent event) throws ExecutionException { - final IWorkbenchPage workbenchPage = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - - final CounterExampleViewPart counterExampleView = (CounterExampleViewPart) workbenchPage - .findView(CounterExampleViewPart.ID); - + final CounterExampleViewPart counterExampleView = CounterExampleViewPart + .getDefault(); if (counterExampleView != null) { counterExampleView.zoomOutCounterExample(); } - return null; } } diff --git a/de.prob.ui/src/de/prob/ui/ltl/LtlCommand.java b/de.prob.ui/src/de/prob/ui/ltl/handler/LtlCommand.java similarity index 96% rename from de.prob.ui/src/de/prob/ui/ltl/LtlCommand.java rename to de.prob.ui/src/de/prob/ui/ltl/handler/LtlCommand.java index be753d9ad23a0a39891335b324d389f9a9f47374..765e3a2ccb4c154ef4f9a4f0e98addb4de7e0777 100644 --- a/de.prob.ui/src/de/prob/ui/ltl/LtlCommand.java +++ b/de.prob.ui/src/de/prob/ui/ltl/handler/LtlCommand.java @@ -1,4 +1,4 @@ -package de.prob.ui.ltl; +package de.prob.ui.ltl.handler; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; @@ -15,6 +15,7 @@ import org.eclipse.ui.services.ISourceProviderService; import de.prob.core.Animator; import de.prob.ui.PerspectiveFactory; import de.prob.ui.ProbUiPlugin; +import de.prob.ui.ltl.LtlCheckingDialog; import de.prob.ui.services.ModelLoadedProvider; public final class LtlCommand extends AbstractHandler implements IHandler { diff --git a/de.prob.ui/src/de/prob/ui/ticket/ProBLogListener.java b/de.prob.ui/src/de/prob/ui/ticket/ProBLogListener.java index c0c749c27d1de128f1aea516cb4270c0450fbc49..c877085a3805a0b4dc296afb623a1d92db468a9d 100644 --- a/de.prob.ui/src/de/prob/ui/ticket/ProBLogListener.java +++ b/de.prob.ui/src/de/prob/ui/ticket/ProBLogListener.java @@ -27,12 +27,14 @@ public final class ProBLogListener implements ILogListener { final int code = status.getCode(); if (code == Logger.BUGREPORT || code == Logger.NOBUGREPORT) { - final boolean bugreport = code == Logger.BUGREPORT; + final boolean bugreport = false; // ;code == Logger.BUGREPORT; display.asyncExec(new Runnable() { public void run() { + String title = (status.getSeverity() == IStatus.ERROR) ? "An Error occured" + : "Warning"; // Notice: ErrorTICKETDialog to provide Bugreport-Button ErrorTicketDialog.openError(display.getActiveShell(), - "Error", "An error occured.", status, bugreport); + "ProB Problem", title, status, bugreport); } }); } diff --git a/de.prob.ui/src/de/prob/ui/ticket/SubmitBugreportCommand.java b/de.prob.ui/src/de/prob/ui/ticket/SubmitBugreportCommand.java index 3cb0e178981fefcb9f2a61985cf4b4637e13f59a..8c31fb0ad40867867d6db6021b6fd8b210cde0ae 100644 --- a/de.prob.ui/src/de/prob/ui/ticket/SubmitBugreportCommand.java +++ b/de.prob.ui/src/de/prob/ui/ticket/SubmitBugreportCommand.java @@ -1,23 +1,36 @@ package de.prob.ui.ticket; +import java.net.MalformedURLException; +import java.net.URL; + import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IHandler; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.browser.IWebBrowser; public class SubmitBugreportCommand extends AbstractHandler implements IHandler { public Object execute(final ExecutionEvent event) throws ExecutionException { - IWorkbenchWindow window = HandlerUtil - .getActiveWorkbenchWindowChecked(event); - - BugReportWizard wizard = new BugReportWizard(); - WizardDialog dialog = new WizardDialog(window.getShell(), wizard); - dialog.open(); +// IWorkbenchWindow window = HandlerUtil +// .getActiveWorkbenchWindowChecked(event); +// +// BugReportWizard wizard = new BugReportWizard(); +// WizardDialog dialog = new WizardDialog(window.getShell(), wizard); +// dialog.open(); +// return null; + IWebBrowser browser; + try { + browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser("jira"); + browser.openURL(new URL("http://jira.cobra.cs.uni-duesseldorf.de/")); + } catch (PartInitException e) { + e.printStackTrace(); + } catch (MalformedURLException e) { + e.printStackTrace(); + } return null; } diff --git a/de.prob.update_site/.project b/de.prob.update_site/.project deleted file mode 100644 index ddd7b57afddd1eeecaa7f00f6877ce31828b1ef8..0000000000000000000000000000000000000000 --- a/de.prob.update_site/.project +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>de.prob.update_site</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.pde.FeatureBuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.pde.FeatureNature</nature> - </natures> -</projectDescription> diff --git a/de.prob.update_site/.settings/org.eclipse.core.resources.prefs b/de.prob.update_site/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 9f3f851442f920f3afc44d26bb6550c6f06d219f..0000000000000000000000000000000000000000 --- a/de.prob.update_site/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Tue Nov 29 16:17:16 CET 2011 -eclipse.preferences.version=1 -encoding/<project>=UTF-8 diff --git a/de.prob.update_site/.settings/org.eclipse.core.runtime.prefs b/de.prob.update_site/.settings/org.eclipse.core.runtime.prefs deleted file mode 100644 index 9b07aedef9e83878fc9861167a9fe25d96899537..0000000000000000000000000000000000000000 --- a/de.prob.update_site/.settings/org.eclipse.core.runtime.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Tue Nov 29 16:17:16 CET 2011 -eclipse.preferences.version=1 -line.separator=\n diff --git a/de.prob.update_site/buckminster.properties b/de.prob.update_site/buckminster.properties deleted file mode 100644 index 9d7bcbcf75396f1b2d3760e840fc257420f9ed75..0000000000000000000000000000000000000000 --- a/de.prob.update_site/buckminster.properties +++ /dev/null @@ -1,6 +0,0 @@ -# Where all the output should go -buckminster.output.root=${user.home}/prob_updatesite -# Where the temp files should go -buckminster.temp.root=/tmp/prob_updatesite.tmp -# How .qualifier in versions should be replaced -qualifier.replacement.*=generator:lastRevision \ No newline at end of file diff --git a/de.prob.update_site/build.properties b/de.prob.update_site/build.properties deleted file mode 100644 index 77674ccfa39d732d3f4bbedaf4be95c66b56f0fc..0000000000000000000000000000000000000000 --- a/de.prob.update_site/build.properties +++ /dev/null @@ -1,4 +0,0 @@ -bin.includes = feature.xml -category.id.de.prob.category=ProB for Rodin2 -category.members.de.prob.category=de.prob2.feature -category.description.de.prob.category=ProB Animator and Modelchecker \ No newline at end of file diff --git a/de.prob.update_site/feature.xml b/de.prob.update_site/feature.xml deleted file mode 100644 index 9f7635349c7d089138de1dcd3f6b6ce4b57104d3..0000000000000000000000000000000000000000 --- a/de.prob.update_site/feature.xml +++ /dev/null @@ -1,235 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<feature - id="de.prob.update_site" - label="Update_site" - version="1.0.3"> - - <description url="http://www.stups.uni-duesseldorf.de/ProB"> - ProB is an animator and model checker for the B-Method. It allows -fully automatic animation of many B specifications, and can be -used to systematically check a specification for errors. -Part of the research and development was conducted within the -EPSRC funded projects ABCD and iMoc, and within the EU funded -project Rodin. -Development is continued under the EU funded project Deploy and -the DFG project Gepavas. -ProB has been successfully used on various industrial specifications -and is now being used within Siemens. - </description> - - <copyright> - (C) 2000-2011 Michael Leuschel (and many others) All rights reserved. - </copyright> - - <license url="http://www.eclipse.org/org/documents/epl-v10.html"> - ProB can be used freely for commercial, non-commercial and academic -use under the Eclipse Public Licence v. 1.0. (below) -For availability of commercial support, please contact the author -(http://www.stups.uni-duesseldorf.de/~leuschel). -Use of ProB's nauty library for symmetry reduction implies further -restrictions (no applications with nontrivial military significance, -see http://cs.anu.edu.au/~bdm/nauty/). ---- -Eclipse Public License - v. 1.0 -THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS -ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR -DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE -OF THIS AGREEMENT. -1. DEFINITIONS -"Contribution" means: -a) in the case of the initial Contributor, the initial code and -documentation distributed under this Agreement, and -b) in the case of each subsequent Contributor: -i) changes to the Program, and -ii) additions to the Program; -where such changes and/or additions to the Program originate -from and are distributed by that particular Contributor. A Contribution -'originates' from a Contributor if it was added to the Program -by such Contributor itself or anyone acting on such Contributor's -behalf. Contributions do not include additions to the Program -which: (i) are separate modules of software distributed in conjunction -with the Program under their own license agreement, and (ii) -are not derivative works of the Program. -"Contributor" means any person or entity that distributes the -Program. -"Licensed Patents" mean patent claims licensable by a Contributor -which are necessarily infringed by the use or sale of its Contribution -alone or when combined with the Program. -"Program" means the Contributions distributed in accordance with -this Agreement. -"Recipient" means anyone who receives the Program under this -Agreement, including all Contributors. -2. GRANT OF RIGHTS -a) Subject to the terms of this Agreement, each Contributor hereby -grants Recipient a non-exclusive, worldwide, royalty-free copyright -license to reproduce, prepare derivative works of, publicly display, -publicly perform, distribute and sublicense the Contribution -of such Contributor, if any, and such derivative works, in source -code and object code form. -b) Subject to the terms of this Agreement, each Contributor hereby -grants Recipient a non-exclusive, worldwide, royalty-free patent -license under Licensed Patents to make, use, sell, offer to sell, -import and otherwise transfer the Contribution of such Contributor, -if any, in source code and object code form. This patent license -shall apply to the combination of the Contribution and the Program -if, at the time the Contribution is added by the Contributor, -such addition of the Contribution causes such combination to -be covered by the Licensed Patents. The patent license shall -not apply to any other combinations which include the Contribution. -No hardware per se is licensed hereunder. -c) Recipient understands that although each Contributor grants -the licenses to its Contributions set forth herein, no assurances -are provided by any Contributor that the Program does not infringe -the patent or other intellectual property rights of any other -entity. Each Contributor disclaims any liability to Recipient -for claims brought by any other entity based on infringement -of intellectual property rights or otherwise. As a condition -to exercising the rights and licenses granted hereunder, each -Recipient hereby assumes sole responsibility to secure any other -intellectual property rights needed, if any. For example, if -a third party patent license is required to allow Recipient to -distribute the Program, it is Recipient's responsibility to acquire -that license before distributing the Program. -d) Each Contributor represents that to its knowledge it has sufficient -copyright rights in its Contribution, if any, to grant the copyright -license set forth in this Agreement. -3. REQUIREMENTS -A Contributor may choose to distribute the Program in object -code form under its own license agreement, provided that: -a) it complies with the terms and conditions of this Agreement; -and -b) its license agreement: -i) effectively disclaims on behalf of all Contributors all warranties -and conditions, express and implied, including warranties or -conditions of title and non-infringement, and implied warranties -or conditions of merchantability and fitness for a particular -purpose; -ii) effectively excludes on behalf of all Contributors all liability -for damages, including direct, indirect, special, incidental -and consequential damages, such as lost profits; -iii) states that any provisions which differ from this Agreement -are offered by that Contributor alone and not by any other party; -and -iv) states that source code for the Program is available from -such Contributor, and informs licensees how to obtain it in a -reasonable manner on or through a medium customarily used for -software exchange. -When the Program is made available in source code form: -a) it must be made available under this Agreement; and -b) a copy of this Agreement must be included with each copy of -the Program. -Contributors may not remove or alter any copyright notices contained -within the Program. -Each Contributor must identify itself as the originator of its -Contribution, if any, in a manner that reasonably allows subsequent -Recipients to identify the originator of the Contribution. -4. COMMERCIAL DISTRIBUTION -Commercial distributors of software may accept certain responsibilities -with respect to end users, business partners and the like. While -this license is intended to facilitate the commercial use of -the Program, the Contributor who includes the Program in a commercial -product offering should do so in a manner which does not create -potential liability for other Contributors. Therefore, if a Contributor -includes the Program in a commercial product offering, such Contributor -("Commercial Contributor") hereby agrees to defend and indemnify -every other Contributor ("Indemnified Contributor") against any -losses, damages and costs (collectively "Losses") arising from -claims, lawsuits and other legal actions brought by a third party -against the Indemnified Contributor to the extent caused by the -acts or omissions of such Commercial Contributor in connection -with its distribution of the Program in a commercial product -offering. The obligations in this section do not apply to any -claims or Losses relating to any actual or alleged intellectual -property infringement. In order to qualify, an Indemnified Contributor -must: a) promptly notify the Commercial Contributor in writing -of such claim, and b) allow the Commercial Contributor to control, -and cooperate with the Commercial Contributor in, the defense -and any related settlement negotiations. The Indemnified Contributor -may participate in any such claim at its own expense. -For example, a Contributor might include the Program in a commercial -product offering, Product X. That Contributor is then a Commercial -Contributor. If that Commercial Contributor then makes performance -claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility -alone. Under this section, the Commercial Contributor would have -to defend claims against the other Contributors related to those -performance claims and warranties, and if a court requires any -other Contributor to pay any damages as a result, the Commercial -Contributor must pay those damages. -5. NO WARRANTY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM -IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS -OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, -ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY -OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely -responsible for determining the appropriateness of using and -distributing the Program and assumes all risks associated with -its exercise of rights under this Agreement , including but not -limited to the risks and costs of program errors, compliance -with applicable laws, damage to or loss of data, programs or -equipment, and unavailability or interruption of operations. -6. DISCLAIMER OF LIABILITY -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT -NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE -OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY -OF SUCH DAMAGES. -7. GENERAL -If any provision of this Agreement is invalid or unenforceable -under applicable law, it shall not affect the validity or enforceability -of the remainder of the terms of this Agreement, and without -further action by the parties hereto, such provision shall be -reformed to the minimum extent necessary to make such provision -valid and enforceable. -If Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging -that the Program itself (excluding combinations of the Program -with other software or hardware) infringes such Recipient's patent(s), -then such Recipient's rights granted under Section 2(b) shall -terminate as of the date such litigation is filed. -All Recipient's rights under this Agreement shall terminate if -it fails to comply with any of the material terms or conditions -of this Agreement and does not cure such failure in a reasonable -period of time after becoming aware of such noncompliance. If -all Recipient's rights under this Agreement terminate, Recipient -agrees to cease use and distribution of the Program as soon as -reasonably practicable. However, Recipient's obligations under -this Agreement and any licenses granted by Recipient relating -to the Program shall continue and survive. -Everyone is permitted to copy and distribute copies of this Agreement, -but in order to avoid inconsistency the Agreement is copyrighted -and may only be modified in the following manner. The Agreement -Steward reserves the right to publish new versions (including -revisions) of this Agreement from time to time. No one other -than the Agreement Steward has the right to modify this Agreement. -The Eclipse Foundation is the initial Agreement Steward. The -Eclipse Foundation may assign the responsibility to serve as -the Agreement Steward to a suitable separate entity. Each new -version of the Agreement will be given a distinguishing version -number. The Program (including Contributions) may always be distributed -subject to the version of the Agreement under which it was received. -In addition, after a new version of the Agreement is published, -Contributor may elect to distribute the Program (including its -Contributions) under the new version. Except as expressly stated -in Sections 2(a) and 2(b) above, Recipient receives no rights -or licenses to the intellectual property of any Contributor under -this Agreement, whether expressly, by implication, estoppel or -otherwise. All rights in the Program not expressly granted under -this Agreement are reserved. -This Agreement is governed by the laws of the State of New York -and the intellectual property laws of the United States of America. -No party to this Agreement will bring a legal action under this -Agreement more than one year after the cause of action arose. -Each party waives its rights to a jury trial in any resulting -litigation. - </license> - - <includes - id="de.prob2.feature" - version="0.0.0"/> - -</feature> diff --git a/de.prob2.feature/feature.xml b/de.prob2.feature/feature.xml index 0f66f71b778d3987f5f60fa4063ccef25f493410..d316717eac4e0ba62c0180d4b1f92ec26b6d53ba 100644 --- a/de.prob2.feature/feature.xml +++ b/de.prob2.feature/feature.xml @@ -2,7 +2,7 @@ <feature id="de.prob2.feature" label="ProB for Rodin2" - version="2.3.1.qualifier" + version="2.3.2.qualifier" provider-name="HHU Düsseldorf STUPS Group"> <description url="http://www.stups.uni-duesseldorf.de/ProB"> diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..86d03e620e10bd050d55765e478e85cea41d219d Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000000000000000000000000000000000..de4eadbe7130080e8248706dec49b276242b8284 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon May 07 06:43:04 CEST 2012 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=http\://services.gradle.org/distributions/gradle-1.0-rc-3-bin.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000000000000000000000000000000000..cf1265090b68ddc4b271550c322badb39213e313 --- /dev/null +++ b/gradlew @@ -0,0 +1,164 @@ +#!/bin/bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" +APP_HOME="`pwd -P`" +cd "$SAVED" + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000000000000000000000000000000000..aec99730b4e8fcd90b57a0e8e01544fea7c31a89 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/index.html b/index.html new file mode 100644 index 0000000000000000000000000000000000000000..610de7a23affea84880d6f0f405b2962a5dc9a02 --- /dev/null +++ b/index.html @@ -0,0 +1,74 @@ +<html> +<head> +<title>stups.prob.update</title> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<style>@import url("web/site.css");</style> +<script type="text/javascript"> + var returnval = 0; + var stylesheet, xmlFile, cache, doc; + function init(){ + // NSCP 7.1+ / Mozilla 1.4.1+ / Safari + // Use the standard DOM Level 2 technique, if it is supported + if (document.implementation && document.implementation.createDocument) { + xmlFile = document.implementation.createDocument("", "", null); + stylesheet = document.implementation.createDocument("", "", null); + if (xmlFile.load){ + xmlFile.load("site.xml"); + stylesheet.load("web/site.xsl"); + } else { + alert("Document could not be loaded by browser."); + } + xmlFile.addEventListener("load", transform, false); + stylesheet.addEventListener("load", transform, false); + } + //IE 6.0+ solution + else if (window.ActiveXObject) { + xmlFile = new ActiveXObject("msxml2.DOMDocument.3.0"); + xmlFile.async = false; + xmlFile.load("site.xml"); + stylesheet = new ActiveXObject("msxml2.FreeThreadedDOMDocument.3.0"); + stylesheet.async = false; + stylesheet.load("web/site.xsl"); + cache = new ActiveXObject("msxml2.XSLTemplate.3.0"); + cache.stylesheet = stylesheet; + transformData(); + } + } + // separate transformation function for IE 6.0+ + function transformData(){ + var processor = cache.createProcessor(); + processor.input = xmlFile; + processor.transform(); + data.innerHTML = processor.output; + } + // separate transformation function for NSCP 7.1+ and Mozilla 1.4.1+ + function transform(){ + returnval+=1; + if (returnval==2){ + var processor = new XSLTProcessor(); + processor.importStylesheet(stylesheet); + doc = processor.transformToDocument(xmlFile); + document.getElementById("data").innerHTML = doc.documentElement.innerHTML; + } + } +</script> +</head> +<body onload="init();"> + +<!--[insert static HTML here]--> +<a href="http://www.stups.uni-duesseldorf.de/"><img src="http://www.stups.uni-duesseldorf.de/hhulogo1.jpg" border="0" align="right"></a> +<h1 class="title">Installing the ProB plug-ins</h1> +<p class="bodyText"> +Please use the Rodin Update manager to install the plug-ins. +</p> +<ol class="bodyText"> +<li>Select from main menu: <i>Help | Software Updates | Find and install...</i></li> +<li>There should already be a HHU remote site. If not, create a new remote site using the URL <br/><i>http://www.stups.uni-duesseldorf.de/prob_updates/</i></li> +<li>Select the Plug-ins you want to install and follow the dialog</li> +</ol> +<br/> + + +<div id="data"><!-- this is where the transformed data goes --></div> +</body> +</html>