Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Richard2014-11-04 10:42:48 +0000
committerLaurent Goubet2015-06-01 11:14:41 +0000
commit750896a0065a7f38c8c20119a1a0a290d55773dc (patch)
tree5b24e518e06e1c1c629a15c81712462cb0907188 /plugins
parent2b4232b863167ae95d1a3755b4396ad651c25e7e (diff)
downloadorg.eclipse.emf.compare-750896a0065a7f38c8c20119a1a0a290d55773dc.tar.gz
org.eclipse.emf.compare-750896a0065a7f38c8c20119a1a0a290d55773dc.tar.xz
org.eclipse.emf.compare-750896a0065a7f38c8c20119a1a0a290d55773dc.zip
Adds Q7 test for UML profiles.
These tests checks thats: * The structure merge viewer displays the correct custimized label for stereotyped elements * Merging stereotyped elements works well * Merging properties of stereotyped elements work well These test are using SysML profile. Change-Id: I807fdae02f640d7ae07409fb32d1456835fc07d9 Signed-off-by: Axel Richard <axel.richard@obeo.fr>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/TestSuite.Full.suite5
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/contexts/MergingLibrary.ctx177
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/contexts/profile/ts013_SysMLmodels.ctx165
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/resources/profile/SysMLmodels.zipbin0 -> 6824 bytes
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc001_labels.test37
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc002_merge_left_one_by_one.test161
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc003_merge_left_all.test66
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc004_merge_right_one_by_one.test159
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc005_merge_right_all.test66
-rw-r--r--plugins/org.eclipse.emf.compare.q7.tests/tests/ts013_profile.suite27
10 files changed, 861 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/TestSuite.Full.suite b/plugins/org.eclipse.emf.compare.q7.tests/TestSuite.Full.suite
index fbaad41d0..7b30a5710 100644
--- a/plugins/org.eclipse.emf.compare.q7.tests/TestSuite.Full.suite
+++ b/plugins/org.eclipse.emf.compare.q7.tests/TestSuite.Full.suite
@@ -5,8 +5,8 @@ Element-Name: TestSuite.Full
Element-Type: testsuite
Element-Version: 2.0
Id: _jqSFAGrzEeK_JdLra2Bk5A
-Q7-Runtime-Version: 1.3.11.201403141124
-Save-Time: 6/6/14 4:31 PM
+Q7-Runtime-Version: 1.3.13.201408151228
+Save-Time: 10/15/14 10:47 AM
------=_testcase-items-62c497da-4241-31f4-811a-6b453a3ecff8
Content-Type: text/testcase
@@ -15,5 +15,6 @@ Entry-Name: testcase-items
_aeNHoepCEeKqnKrf0It1WQ // kind: 'suite' name: 'ts010-diagram' path: 'tests/ts010-diagram.suite'
_v7KfMO1eEeOGobrROiM5Sw // kind: 'suite' name: 'ts003-filters-uml' path: 'tests/ts003-filters-uml.suite'
_ehdoce1eEeOGobrROiM5Sw // kind: 'suite' name: 'TestSuite.Core' path: 'TestSuite.Core.suite'
+_LFYlcFREEeSkU9qpHBB-2g // kind: 'suite' name: 'ts012_profile' path: 'tests/ts012_profile.suite'
------=_testcase-items-62c497da-4241-31f4-811a-6b453a3ecff8--
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/contexts/MergingLibrary.ctx b/plugins/org.eclipse.emf.compare.q7.tests/contexts/MergingLibrary.ctx
new file mode 100644
index 000000000..cf9ed6aa2
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/contexts/MergingLibrary.ctx
@@ -0,0 +1,177 @@
+--- Q7 testcase ---
+Format-Version: 1.0
+Q7-vendor: www.xored.com/q7
+Context-Type: com.xored.q7.ecl.context
+Element-Name: MergingLibrary
+Element-Type: context
+Element-Version: 2.0
+Id: _SM1VQVPAEeSorJcpi4oQKA
+Q7-Runtime-Version: 1.3.13.201408151228
+Save-Time: 10/15/14 11:26 AM
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
+Content-Type: text/plain
+Entry-Name: .description
+
+Provides procedures to merge items and checks that those items has been merge correctly.
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa--
+------=_.ecl.context-718f04b4-ed39-33e3-af62-0995e4561998
+Content-Type: text/ecl
+Entry-Name: .ecl.context
+
+// Asserts that an item has been merged to left.
+// Checks that the decorating icon is correct.
+// Checks that the data has the state set to MERGE.
+// Input:
+// itemPath: Path to the item to test
+proc "assertMergedToLeft" [val itemPath] {
+ get-item $itemPath
+ | get-property "image.decorations[0].path" -raw
+ | eq "org.eclipse.emf.compare.edit/icons/full/ovr16/merged_left_ov.gif" | assert-true -message "Should be the merge to left overlay"
+ get-item $itemPath
+ | get-property "getData().getTarget().getData().getState().getLiteral()" | equals "MERGED" | verify-true
+}
+
+// Asserts that an item has been merged to right.
+// Checks that the decorating icon is correct.
+// Checks that the data has the state set to MERGE.
+// Input:
+// itemPath: Path to the item to test
+proc "assertMergedToRight" [val itemPath] {
+ get-item $itemPath
+ | get-property "image.decorations[0].path" -raw
+ | eq "org.eclipse.emf.compare.edit/icons/full/ovr16/merged_right_ov.gif" | assert-true -message "Should be the merge to right overlay"
+ get-item $itemPath
+ | get-property "getData().getTarget().getData().getState().getLiteral()" | equals "MERGED" | verify-true
+}
+
+
+// Asserts that an item has not been merged
+// Checks that the icon is either an added/removed/change icon.
+// Checks that the data has the state set to UNRESOLVED.
+// Input:
+// itemPath: Path to the item to test
+proc "assertNotMerged" [val itemPath] {
+ get-item $itemPath
+ | or
+ [get-property "image.decorations[0].path" -raw| eq "org.eclipse.emf.compare.edit/icons/full/ovr16/chg_ov.gif"]
+ [get-property "image.decorations[0].path" -raw| eq "org.eclipse.emf.compare.edit/icons/full/ovr16/add_ov.gif"]
+ [get-property "image.decorations[0].path" -raw| eq "org.eclipse.emf.compare.edit/icons/full/ovr16/del_ov.gif"]
+ | assert-true -message "Should be the added/removed/changed overlay"
+ get-item $itemPath
+ | get-property "getData().getTarget().getData().getState().getLiteral()" | equals "UNRESOLVED" | verify-true
+}
+// Undo the previous action
+proc "undo" {
+ get-menu "Edit/Undo Merge" | click
+}
+// Redo the previous action
+proc "redo" {
+ get-menu "Edit/Redo Merge" | click
+}
+// Merges an item right to left.
+// Input:
+// editor: -input current editor
+// itemPath: Path to the item to test
+proc "mergeRightToLeft" [val editor -input] [val itemPath]{
+ with $editor{
+ get-tree
+ |select $itemPath
+ get-button "Copy Current Change From Right To Left" | click
+ }
+}
+
+// Merges an item left to right.
+// Input:
+// editor: -input current editor
+// itemPath: Path to the item to test
+proc "mergeLeftToRight" [val editor -input] [val itemPath]{
+ with $editor{
+ get-tree
+ |select $itemPath
+ get-button "Copy Current Change From Left To Right" | click
+ }
+}
+
+
+
+// Checks that an item can be merged, that the merge can be undone and then that the merge can be redone.
+// Inputs:
+// editor: -input current editor
+// itemPath: Path of item to merge
+// itemPathAfterMerge: Path of the item after the merge
+proc "assertUndoRedoRightToLeft" [val editor -input] [val itemPath] [val itemPathAfterMerge] {
+ with $editor{
+ mergeRightToLeft $itemPath
+ }
+ with [$editor | get-tree] {
+ assertMergedToLeft $itemPathAfterMerge
+ }
+ undo
+ with [$editor | get-tree]{
+ assertNotMerged $itemPath
+ }
+ redo
+ with [$editor | get-tree]{
+ assertMergedToLeft $itemPathAfterMerge
+ }
+}
+
+// Checks that an item can be merged, that the merge can be undone and then that the merge can be redone.
+// Inputs:
+// editor: -input current editor
+// itemPath: Path of item to merge
+// itemPathAfterMerge: Path of the item after the merge
+proc "assertUndoRedoLeftToRight" [val editor -input] [val itemPath] [val itemPathAfterMerge] {
+ with $editor{
+ mergeLeftToRight $itemPath
+ }
+ with [$editor | get-tree] {
+ assertMergedToRight $itemPathAfterMerge
+ }
+ undo
+ with [$editor | get-tree]{
+ assertNotMerged $itemPath
+ }
+ redo
+ with [$editor | get-tree]{
+ assertMergedToRight $itemPathAfterMerge
+ }
+}
+
+// Helper to call assertUndoRedoRightToLeft with one or two parameters depending of the use case.
+// If only one parameter is provided then the path should not change after merging.
+// If two parameters are used then the second parameter represents the expected path of the item after merging.
+proc "assertMergeRightToLeft" [val editor -input] [val itemPath] [val itemPathAfterMerge ""]{
+if[$itemPathAfterMerge | eq ""] {
+ // If $itemPathAfterMerge is not specified the path of the item should not change after merging
+ with $editor{
+ assertUndoRedoRightToLeft $itemPath $itemPath
+ }
+ } -else {
+ // If $itemPathAfterMerge is specified then path of the item should change when the merge is done
+ with $editor{
+ assertUndoRedoRightToLeft $itemPath $itemPathAfterMerge
+ }
+ }
+}
+
+// Helper to call assertUndoRedoLeftToRight with one or two parameters depending of the use case.
+// If only one parameter is provided then the path should not change after merging.
+// If two parameters are used then the second parameter represents the expected of the item after merging.
+proc "assertMergeLeftToRight" [val editor -input] [val itemPath] [val itemPathAfterMerge ""]{
+if[$itemPathAfterMerge | eq ""] {
+ // If $itemPathAfterMerge is not specified the path of the item should not change after the merge
+ with $editor{
+ assertUndoRedoLeftToRight $itemPath $itemPath
+ }
+ } -else {
+ // If $itemPathAfterMerge is specified then path of the item should change when the merge is done
+ with $editor{
+ assertUndoRedoLeftToRight $itemPath $itemPathAfterMerge
+ }
+ }
+}
+
+
+------=_.ecl.context-718f04b4-ed39-33e3-af62-0995e4561998--
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/contexts/profile/ts013_SysMLmodels.ctx b/plugins/org.eclipse.emf.compare.q7.tests/contexts/profile/ts013_SysMLmodels.ctx
new file mode 100644
index 000000000..883da8476
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/contexts/profile/ts013_SysMLmodels.ctx
@@ -0,0 +1,165 @@
+--- Q7 testcase ---
+Format-Version: 1.0
+Q7-vendor: www.xored.com/q7
+Context-Type: com.xored.q7.workspace.context
+Element-Name: ts013_SysMLmodels
+Element-Type: context
+Element-Version: 2.0
+Id: _r_QpAFLlEeS4zYvVAxx5Mg
+Q7-Runtime-Version: 1.3.15.201412220512
+Save-Time: 5/28/15 5:33 PM
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
+Content-Type: text/plain
+Entry-Name: .description
+
+This context holds a SysML (from Papyrus metamodel).
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa--
+------=_contents/SysMLModel/left/model.uml-4d8038ae-4589-3753-8778-d36c9df0729b
+Content-Type: q7/binary
+Entry-Name: contents/SysMLModel/left/model.uml
+
+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
+bnRQSwUGAAAAAAEAAQA2AAAASAsAAAAA
+------=_contents/SysMLModel/left/model.uml-4d8038ae-4589-3753-8778-d36c9df0729b--
+------=_contents/SysMLModel/right/model.uml-7f71525b-6fe2-3fea-a7e5-fedf129fd85c
+Content-Type: q7/binary
+Entry-Name: contents/SysMLModel/right/model.uml
+
+UEsDBBQACAAIAAAAIQAAAAAAAAAAAAAAAAAIAAAALmNvbnRlbnTVXFtT4koQft9fQbHPGgiiYOluIUYO
+AnIX3RcqJCNEcjMJIv76M7kQJmQaEsgat2prKUO6v57+enp6kh6ufn8ocuYdGaakqdfZ/Gkum0GqoImS
+Or3ODgd3J6Xs718/rj4U6fKpVc/Yn/7dbC5fyOdy+Sy+LKvmJf7yOjuzLP2SYZbL5ammTE81Y8qYOhIY
+LM2EBMygwLLg3M/iW/D9zb4wQwp/IqmmxasCWkvdyJowNwOCSJAl3USOtM7rK2NhMrnTi9Mc01+ZrSbj
+iqwVVDWs0eAl1YqnhZBbq2ppIpI5GSkorrKA5FpdRzOsiireydoynjZScK2sh94WknGAaaTgWhkSNAOB
+WpDyYrPGMpx921pmocigBP6OZYqnOQw6bDWxhCldmg7fTU3gLSe+YhOciS7xk2EmcWXIAIgHJRwkGIyR
+eIiKLYriiwYiKR6kjiV5VXyJKRkIt3iIBhmov35kMlc4rNw56WQqSbzOjqtP9drZXeOcQ32czoQ3rqD2
+brvZjMorOKAdVY6zHAVYhc4Lc36KRM/vjiJrpeN7beUd99vsRv+sfisKoH4v87i692qvyrxpErqVP93e
+cLfuvK8ba9eWKhIrlmVIk4WFtk03NB0Z1orQf145z8G267xh4VztahiXxflsSrmXn04NNPWmrKApumZK
+FnYQHokmSN51LF1+5cLSzBHGjx/ekQYab6AXZOClDG1GMJ63zQptBAFLx/PBnDLOYyzlqq9nWOUF3VJe
+sDSjE/C10S48Pkf3dXTb8BQl7KpbNwJslz2R7Tmd3497xWzF9YHxrpqs2tod72z0eA8OtrmozLpJDHaN
+28Y0O3dt4frXCfD3ZXFUBwfmS+TDKD0kIJ2C4l8nUJY9Xu+CKL4EHqMpTVVetg1rFXsUjx/NbMUOasI0
+KKI9B8iiK8BEVN937CcdTB/HRr8nERVgOzKh7EdEZiGy8som4QQgqCnSgyBkMH8KUibI4FQ4iWewvpNG
+XQ7pIwIMVVRVsxydJmGiU+tdcpsvA0ZipRQjTW1hCFgWL9b+wu0t2gQixhSRxUsyBa6PZ7E6HWjuZ4vX
+OdUyVtvQj2HoOVpdZ1XeWtiV5zsvL9bL+vjBvUjOKYYc8/Zcw/7cn8wBt3o0Tdw1eZ3IoQU83uKYVHqF
+FkAiiM+ODGJg9QwHMRsMYvpinnH15RMOYkcpJZK+IIgdaEr0fHEQA249Joj31U2HBnFdtZDxwgtkzd1Q
+689LcC239y59HQnSiyRsL6t7wdxnDQFxArgzZM06CDxUJStBrFxpJoBYtxJWacYa3HY6GAxGUgUE2Gx2
+j99nDMoFe3YDSJvdse6JwlXYVtANyqWTVljx8eULNbkBaOHkVggmN/rwM66+fEjfccnNUfoYNvILkpsD
+LYehvzi5AW4NRdtWmoOmQyIRB12O+7ThmWt+wpnPyZW4zHVm7KEPHV75+vgZhACSQW8hb+eBTQIh9wH8
+4LwUIedgWnyifMPtHeKw0joLywcC2CQT6pZRTZxEDF52Qzhg15M8jJCh7GTtx/BgJpkZ/I/f2GoFY9n3
+zYGb1nlxUskluWmNiKtwI4ni5i1cNgHc8PQFKKY+lFKnXJ8WTtFWD3X6X5lCesh4HJYqsven4Qh3rxPW
+67n8x84AdyXywZBFobzm34lTXkB92aLNf0OTERwvzKFgJ0Na9NkcjCRrZgfNDsI8m9TxjKXUTOF54ltx
+jP/fRlYdjh5fgj3Q/1j9O43eeC7RXqsrytcH0vQ2WjzRFi4PDJjLEfyf2GM9YJYm8VgPiK6/niEBCuNn
+yGRLVCCl7X2IRA/YjKsv6RLVUZpOiepAp1+iAm6l77+hgizeYvaXC9PP3nAA71Y7vIE/MSnCoVVpXvsY
+wJvV47eo7GTYgF8PULeoHj1ssZynZaBoNQh7Xhtzf2EHu+0/yMqIm/2o9T17Xq3NI8MEH30cXcSz53f3
+cE7eKuJ31+nJZmWA5L1ZmR6UGVdf0lnZUZpOVnag08/KgFvpWRlKSIlM76Sy8m3vZKDdNUrQG8G3TTr2
+SkCFlkvcq4Te2qjVn4f1El6faOLql7NB5jMOZRns8Ak2+4pxvvLHT+IeZkzzplTgYhrTcwji5R+RzImX
+ams3952dTl83rRz+6PZhev+UiwIRqKtVZFp4cLYunFpRaDu1BdJTqp16FJCzBKrZiZ2bha2U1B53PinM
++quJbi/DOCW5z4Ygp5gLXcf3GDA1h9LQbS/PW1E8FOPdMNURvZo2GoJAt8iQ3hGGs2K6A7D/UHcM9duL
+btyAOcQdj7XHGhwXfTy3zZe4oQEYf6gvHqXFIlJoFI/0xWjIcVMQ6BGHRmxXALYze9YmQ3uRZFSx1VDL
+tk7oBnKluplolMYC3zUHFDS3N/MVraFiXdDsak1l/dZUIn/6PWUUC/y1d4bvitO7+pMhsyethrniHWZE
+z390r66Bdd6aKbyN7RZKnV77rt7k+u6fpx5Jp1jy53jwB+/7m8MiJy6kxlv18741mtSWBM8hwhKiOt9d
+Jk11vpD7B6gO9uWmRnzto9SaNp8uMPF3ylvXNB5uyvIXEF+9QZT+k6OIr1bNXf1I34Z4t9s8NcZf+ku2
+lAbj3IzSOnIc43d1Wifht2Oc7IdPjXdD/0iH91p5njTv/81p7d7fjnfisEdqtBdHz/e5NGi//0NZho+j
+vVGhHd/4drTbhfm7ZEkoPdar7OdTq/lU+nLWmyylzj6O9QeO1s79/ViXZe+8Wnq0P3yItbM0aG/3E1/b
+O1PaeaRvR3vg5FlavLfb99VUeO8uEl/beyXzX+Bdshvs3Ecw6fGuoLakpcH7oJH44j58Lv0LvJvYdKTw
+wkxSU1zf1cpdcZ4G8Y9q4uv7KP9PrO8LEwm8mSbn6I8Sv6a7YvyT0M6f7jFk96cTNiwofwYXtLQ7wSMe
+Ow+04dMfzA69qlnI0w6MBPQCZz136S2LOk87vxTQC5zU26V3PO/OaNEY0AscnnL1kqfmL+3/7QsbgLrV
+mtDOPzgAXssgcBgX0N8PtUd4B2PuFVoHhAPkn6SBT9BEGk1zwa3MPaMBTtsGWLCPy2y0dobFOq3LyTOd
+clYGPo8TgPFPyhBYufI7rUtlNxb9PI6LRfw0xOVWl8sGdjB4PqH1GAXiDDiGsAtm3cpAIJUv7mnNCS5F
+3u3wwZxdk+WVbzzQDo0HBgG0rEUKr3lRFGnNMmR4QX3xIi7KBZcvSY0Gp3DPz/vgoHZ4Ak5bWLtz4rRW
+p/VfBXMivVE20jjU8SsHBte6LRlolj3Abdorp+1zG9QjG8Ntee3zfe+UAVpx4k0ZtngxpjUpb08ZoFEw
+Rhpgi+PbvWMC+vVcGPInU8jf+SF6UKoior2KD2Ds6oa4Cvz4zKXXvEMAoNwt7RW8C+D2z8CNQjSIdUsO
+IlaaanNKkd4GARqAovrqYTbVl/t8Bbw2p2DYbSnEUlMZNkA/EW/04W6XqMPodhTV3DeMXR0fQYxNUwnZ
+hlKuCdEGA3SsRB1MTxHN0r7BAA1KUTGG+hlP69MKYOxqCwlieG0nZJfK8vUsmreAhpaoI3l8bWl7Z/uu
+ro4ghts0QraYjMYRaQe6UTDIFWPre2rVf/34H1BLBwhG6kQiggoAAHZOAABQSwECFAAUAAgACAAAACEA
+RupEIoIKAAB2TgAACAAAAAAAAAAAAAAAAAAAAAAALmNvbnRlbnRQSwUGAAAAAAEAAQA2AAAAuAoAAAAA
+
+------=_contents/SysMLModel/right/model.uml-7f71525b-6fe2-3fea-a7e5-fedf129fd85c--
+------=_contents/SysMLModel/.project-04d8d733-1713-3dcb-a6f9-60514694f2d3
+Content-Type: q7/binary
+Entry-Name: contents/SysMLModel/.project
+
+UEsDBBQACAAIAAAAIQAAAAAAAAAAAAAAAAAIAAAALmNvbnRlbnSzsa/IzVEoSy0qzszPs1Uy1DNQUkjN
+S85PycxLt1UKDXHTtVCyt+OyKSjKz0pNLnFJLU4uyiwoASq24+K0yUvMTbULriz29fHNT0nNsdEHCwAl
+kvNzc1PzSuxs9GEsoCDUjGIQWx+Zk1SamZMSXJCaDJZB4eUllpQWpUK0wNlw3SjOAQBQSwcI7qaNZoQA
+AADLAAAAUEsBAhQAFAAIAAgAAAAhAO6mjWaEAAAAywAAAAgAAAAAAAAAAAAAAAAAAAAAAC5jb250ZW50
+UEsFBgAAAAABAAEANgAAALoAAAAAAA==
+------=_contents/SysMLModel/.project-04d8d733-1713-3dcb-a6f9-60514694f2d3--
+------=_contents/SysMLModel/ExpectedTreeWithCustomization.csv-7b3cad57-6824-3692-9637-23fb6017ef6c
+Content-Type: q7/binary
+Entry-Name: contents/SysMLModel/ExpectedTreeWithCustomization.csv
+
+UEsDBBQACAAIAAAAIQAAAAAAAAAAAAAAAAAIAAAALmNvbnRlbnSNVNtu2zAMffdX6AP8UDvdyzAYaNcM
+GJC2WbI9GUOgWEyiVZEcmU7mvx/lW2xHCAYEAX1IHpLiZSO1AI0hwl8MHsKEfXk1AlTC1lXxujg6OYgc
+vOTZB99Dwp6VyT6KIHZgLbdQtHmDyxs/QjCr7a3JwWKVsJxbjNjnxioOHsORW8xSrHJg2YHrPYjfU2+e
+obHLloIiPLlvR1ILSQ95ab4pc1kaiwnbkZSTFJEr2hJYKosF8N3V4YqvkaPMfJp3K8CCGKp2XBW17peW
+pxJ8Xivg4l2ryqd7ASvPY8aJiniN9umf4cDPkir3ZbMGe5aZN52vRv8p9xyHUWfhuIcs1e5/oM+tQcic
+U3qWhdxKJbEaGnT0c53xvCjVOMDNuMT3OiQ1S4W0FG9Ue01C70HW7j8iihd5BF04K3LoxAKwNe7VCevF
+4aDegtPKaxp6sgItlxrbEiZA1BRzRa/zm/VY3mLRnVGLPXOdN5sn5gooWWRckOF4J79rBKu5qpPxrOY0
+vWEBLh1SLiRRcMXWaKXeD/Ne55AFn8KfB1kw+nFGV0HupOtub0NDwVU5GhhPa2nXzUWDeEIKsi0RGJ0X
+QKjNKSMNTe292Dn0QO8wrp/uAzWNSLP/79fgxvT5RDcJeh57BacmChFsqScJI7b6dQZPU59P1lqwdGtE
+NZmpFXfDzRXc8e9smJ8BTiUtiRuKOqvuI+74LJzYgzuwdNybpZiFq/mPjcOkaJB/UEsHCJWIV5wmAgAA
+AQYAAFBLAQIUABQACAAIAAAAIQCViFecJgIAAAEGAAAIAAAAAAAAAAAAAAAAAAAAAAAuY29udGVudFBL
+BQYAAAAAAQABADYAAABcAgAAAAA=
+------=_contents/SysMLModel/ExpectedTreeWithCustomization.csv-7b3cad57-6824-3692-9637-23fb6017ef6c--
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf
+Content-Type: q7/binary
+Entry-Name: .q7.content
+
+UEsDBBQACAAIAAAAIQAAAAAAAAAAAAAAAAAIAAAALmNvbnRlbnSlkl1rwjAYhe/7K0Lul+g+cJRWEXEw
+sBfDMbcrkfZtzZaPmsQ289cv7doiw8Fgd29yznmSHBLNnOCoAm2YkjEekxFGIFOVMVnE+Gjzq3s8mwZR
+qgRxSkNGDhNSK/1hyl0K4aafFkpacBY5wcKBdt3QPF+a0O/HeG9tGVJa1zVRoiBKF/Q1eewtl48YUtTr
+tNXpYUIHnUDq9zCSO+G91ozGN9v1p0lWQmXADUYsi/FWb5/K+cOKL2F9e3qrXubO3SUFngYI+af5q0vb
+zH5VavUOqTUdsEUlDQp/G7wlZxx6nXR+TC/KS1d6EbJnDbBhdr84GqsEO+2sL4ikpjrPKZ755rokh9wO
+R/6gtk8jR8HP0rSL/4LTrNj/gxfRvpe2Mjp01ox/+hnT4AtQSwcI9Al6IykBAABrAgAAUEsBAhQAFAAI
+AAgAAAAhAPQJeiMpAQAAawIAAAgAAAAAAAAAAAAAAAAAAAAAAC5jb250ZW50UEsFBgAAAAABAAEANgAA
+AF8BAAAAAA==
+------=_.q7.content-3d2e0690-ce48-3609-83e0-c704d49f1eaf--
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/resources/profile/SysMLmodels.zip b/plugins/org.eclipse.emf.compare.q7.tests/resources/profile/SysMLmodels.zip
new file mode 100644
index 000000000..ef0eb3a7d
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/resources/profile/SysMLmodels.zip
Binary files differ
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc001_labels.test b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc001_labels.test
new file mode 100644
index 000000000..a20a9c586
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc001_labels.test
@@ -0,0 +1,37 @@
+--- Q7 testcase ---
+Format-Version: 1.0
+Q7-vendor: www.xored.com/q7
+Contexts: _SapwEL4pEeOsAoUpt_cnqw,_LOMGYGrvEeK_JdLra2Bk5A,_r_QpAFLlEeS4zYvVAxx5Mg
+Element-Name: ts013_tc001_labels
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference:
+Id: _MaurQFLlEeS4zYvVAxx5Mg
+Q7-Runtime-Version: 1.3.15.201412220512
+Save-Time: 5/28/15 5:34 PM
+Testcase-Type: ecl
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
+Content-Type: text/plain
+Entry-Name: .description
+
+Checks that the labels of stereotypes and property of stereotypes are correct. It is based on the SysML profile.
+
+1. Opens the comparison
+2. Compares the tree to the expected tree to checks that the labels are corrects. It should use the profile item providers provided by the UML extension of EMF Compare. For example, a Class with a Block stereotype should be displayed using "<Block> blockName" instead of "<Class><<Block>> blockname".
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa--
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Package Explorer" | get-tree] {
+ select "SysMLModel/left/model.uml" "SysMLModel/right/model.uml"
+ get-menu "Compare With/Each Other" | click
+}
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"] {
+ get-button "Expand All" | click
+ get-tree | get-table-data | eq[read-csv-file "workspace:/SysMLModel/ExpectedTreeWithCustomization.csv"] | assert-true "Unexpected label in the tree"
+}
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc002_merge_left_one_by_one.test b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc002_merge_left_one_by_one.test
new file mode 100644
index 000000000..9eefd8a39
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc002_merge_left_one_by_one.test
@@ -0,0 +1,161 @@
+--- Q7 testcase ---
+Format-Version: 1.0
+Q7-vendor: www.xored.com/q7
+Contexts: _SapwEL4pEeOsAoUpt_cnqw,_LOMGYGrvEeK_JdLra2Bk5A,_r_QpAFLlEeS4zYvVAxx5Mg,_SM1VQVPAEeSorJcpi4oQKA
+Element-Name: ts013_tc002_merge_left_one_by_one
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference:
+Id: _AYD2oFPBEeSorJcpi4oQKA
+Q7-Runtime-Version: 1.3.15.201412220512
+Save-Time: 5/28/15 6:03 PM
+Testcase-Type: ecl
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
+Content-Type: text/plain
+Entry-Name: .description
+
+Checks that merging one by one all differences to left is working well.
+
+1. For each visible differences
+ 1.1 Merge right to left
+ 1.2 Checks that the merge is correct
+ 1.3 Undo
+ 1.4 Checks that undone has been a success
+ 1.5 Redo
+ 1.6 Checks that the redone has been a success
+2. Checks that all differences has been merged
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa--
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Package Explorer" | get-tree] {
+ select "SysMLModel/left/model.uml" "SysMLModel/right/model.uml"
+ get-menu "Compare With/Each Other" | click
+}
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"] {
+ get-button "Expand All" | click
+}
+
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" ] {
+ // Does not work for dark and mysterious reasons
+ // It can not get property 'image.decorations[0].path'. It may be caused by the way SysML icons are built.
+ //assertMergeRightToLeft
+ // "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <Property> part1 : Block2/<Block> Block2 \\[type changed\\]"
+ // "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/<Property> part1 : Block3/<Block> Block2 \\[type changed\\]"
+ // So instead just merge an do not check
+ mergeRightToLeft "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <Property> part1 : Block2/<Block> Block2 \\[type changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <Property> actorPart1 : NewActor/<Actor> NewActor \\[type changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/<Property> actorPart1 : OldActor/<Actor> NewActor \\[type changed\\]"
+ assertMergeRightToLeft "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isLeaf changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isStatic changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isOrdered changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/false \\[isUnique changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isReadOnly changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isDerived changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isDerivedUnion changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isBehavior changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/false \\[isService changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isConjugated changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/<FlowPort> flowport1/true \\[isConjugated changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/Block1_NewName \\[name changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1/Block1_NewName \\[name changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1/protected \\[visibility changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1/true \\[isEncapsulated changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<Block> Block1/true \\[isEncapsulated changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block2/> <FlowPort> flowport1/in \\[direction changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<Block> Block2/<FlowPort> flowport1/in \\[direction changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Unit> Unit1/Dimension \\[dimension set\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<Unit> Unit1/Dimension \\[dimension unset\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Dimension> Dimension1_NewName/Dimension1_NewName \\[name changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<Dimension> Dimension1/Dimension1_NewName \\[name changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/> <ConstraintBlock> ConstraintBlock1/> <ConstraintProperty> constraintproperty1/true \\[isStatic changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<ConstraintBlock> ConstraintBlock1/<ConstraintProperty> constraintproperty1/true \\[isStatic changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Blocks/<Actor> NewActor \\[packagedElement add\\]"
+ "> <Model> SysMLmodel/<Package> Blocks/<Actor> NewActor \\[packagedElement add\\]"
+
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/> <Constraint> Constraint1/> <Literal String> constraintSpec/This is a modified constraint \\[value changed\\]"
+ "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/<Constraint> Constraint1/<Literal String> constraintSpec/This is a modified constraint \\[value changed\\]"
+ // Does not work for dark and mysterious reasons
+ // It can not get property 'image.decorations[0].path'. It may be caused by the way SysML icons are built.
+ //assertMergeRightToLeft
+ //assertMergeRightToLeft
+ // "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/<FlowPort> flowport2 \\[ownedAttribute delete\\]"
+ // So instead just merge an do not check
+ mergeRightToLeft "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/<FlowPort> flowport2 \\[ownedAttribute delete\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/<Connector> Connector2 \\[ownedConnector delete\\]"
+ "> <Model> SysMLmodel/<Package> InternalBlock/<Block> Block1/<Connector> Connector2 \\[ownedConnector delete\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Parametric/> <ConstraintBlock> ConstraintBlock1/<Property> Attribute1 \\[ownedAttribute add\\]"
+ "> <Model> SysMLmodel/<Package> Parametric/<ConstraintBlock> ConstraintBlock1/<Property> Attribute1 \\[ownedAttribute add\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Req/> <Problem> /This a modified SysML Problem \\[body changed\\]"
+ "> <Model> SysMLmodel/> <Package> Req/<Problem> /This a modified SysML Problem \\[body changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Req/> <Rationale> /This a modified SysML Rational \\[body changed\\]"
+ "> <Model> SysMLmodel/> <Package> Req/<Rationale> /This a modified SysML Rational \\[body changed\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Req/> <Requirement> Requirement2/This req 02 \\[text set\\]"
+ "> <Model> SysMLmodel/> <Package> Req/> <Requirement> Requirement2/This req 02 \\[text unset\\]"
+
+ assertMergeRightToLeft
+ "> <Model> SysMLmodel/> <Package> Req/> <Requirement> Requirement2/REQ_02 \\[id set\\]"
+ "<Model> SysMLmodel/<Package> Req/<Requirement> Requirement2/REQ_02 \\[id unset\\]"
+}
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" | get-control Any -index 8
+ | get-property "getTitleArgument()"
+ | equals "0 of 28 differences are not merged — 15 differences filtered from view" | verify-true
+
+get-menu "File/Save" | click
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" | get-control Any -index 8
+ | get-property "getTitleArgument()"
+ | equals "0 of 0 differences are not merged — 0 differences filtered from view" | verify-true
+
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc003_merge_left_all.test b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc003_merge_left_all.test
new file mode 100644
index 000000000..25c5eea22
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc003_merge_left_all.test
@@ -0,0 +1,66 @@
+--- Q7 testcase ---
+Format-Version: 1.0
+Q7-vendor: www.xored.com/q7
+Contexts: _SapwEL4pEeOsAoUpt_cnqw,_LOMGYGrvEeK_JdLra2Bk5A,_r_QpAFLlEeS4zYvVAxx5Mg
+Element-Name: ts013_tc003_merge_left_all
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference:
+Id: _qwClUFPAEeSorJcpi4oQKA
+Q7-Runtime-Version: 1.3.15.201412220512
+Save-Time: 5/28/15 5:16 PM
+Testcase-Type: ecl
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
+Content-Type: text/plain
+Entry-Name: .description
+
+Cheks that merging all non conflicting differences at once to left works well.
+
+1. Compare the two models
+2. Merge All to left
+3. Undo
+4. Checks that none differences has been merged
+5. Redo
+6. Checks that all differences has been merged
+7. Save
+8. Checks there nothing left to merge
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa--
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Package Explorer" | get-tree] {
+ select "SysMLModel/left/model.uml" "SysMLModel/right/model.uml"
+ get-menu "Compare With/Each Other" | click
+}
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"] {
+ get-button "Expand All" | click
+}
+
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"] {
+ get-button "Copy All Non-Conflicting Changes From Right To Left" | click
+ get-tree | select "<Model> SysMLmodel/<Package> Blocks"
+}
+
+get-menu "Edit/Undo Merge" | click
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"
+ | get-label "Model differences (28 of 28 differences are not merged — 15 differences filtered from view)"
+ | get-property caption
+ | equals "Model differences (28 of 28 differences are not merged — 15 differences filtered from view)"
+ | verify-true
+
+get-menu "Edit/Redo Merge" | click
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" | get-control Any -index 8
+ | get-property "getTitleArgument()"
+ | equals "0 of 28 differences are not merged — 15 differences filtered from view" | verify-true
+
+get-menu "File/Save" | click
+
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" | get-control Any -index 8
+ | get-property "getTitleArgument()"
+ | equals "0 of 0 differences are not merged — 0 differences filtered from view" | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc004_merge_right_one_by_one.test b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc004_merge_right_one_by_one.test
new file mode 100644
index 000000000..8f9467972
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc004_merge_right_one_by_one.test
@@ -0,0 +1,159 @@
+--- Q7 testcase ---
+Format-Version: 1.0
+Q7-vendor: www.xored.com/q7
+Contexts: _SapwEL4pEeOsAoUpt_cnqw,_LOMGYGrvEeK_JdLra2Bk5A,_r_QpAFLlEeS4zYvVAxx5Mg,_SM1VQVPAEeSorJcpi4oQKA
+Element-Name: ts013_tc004_merge_right_one_by_one
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference:
+Id: _n8RLQFPCEeSorJcpi4oQKA
+Q7-Runtime-Version: 1.3.15.201412220512
+Save-Time: 5/28/15 6:07 PM
+Testcase-Type: ecl
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
+Content-Type: text/plain
+Entry-Name: .description
+
+Checks that merging one by one all differences to right is working well.
+
+1. For each visible differences
+ 1.1 Merge left to right
+ 1.2 Checks that the merge is correct
+ 1.3 Undo
+ 1.4 Checks that undone has been a success
+ 1.5 Redo
+ 1.6 Checks that the redone has been a success
+2. Checks that all differences has been merged
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa--
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Package Explorer" | get-tree] {
+ select "SysMLModel/left/model.uml" "SysMLModel/right/model.uml"
+ get-menu "Compare With/Each Other" | click
+}
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"] {
+ get-button "Expand All" | click
+}
+
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" ] {
+ // Does not work for dark and mysterious reasons
+ // It can not get property 'image.decorations[0].path'. It may be caused by the way SysML icons are built.
+ //assertMergeLeftToRight
+ // "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <Property> part1 : Block2/<Block> Block2 \\[type changed\\]"
+ // "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/<Property> part1 : Block3/<Block> Block2 \\[type changed\\]"
+ // So instead just merge an do not check
+ mergeLeftToRight "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <Property> part1 : Block2/<Block> Block2 \\[type changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <Property> actorPart1 : NewActor/<Actor> NewActor \\[type changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/<Property> actorPart1 : NewActor/<Actor> NewActor \\[type changed\\]"
+ assertMergeLeftToRight "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isLeaf changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isStatic changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isOrdered changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/false \\[isUnique changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isReadOnly changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isDerived changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isDerivedUnion changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isBehavior changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/false \\[isService changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/> <FlowPort> flowport1/true \\[isConjugated changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/<FlowPort> flowport1/true \\[isConjugated changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/Block1_NewName \\[name changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/Block1_NewName \\[name changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/protected \\[visibility changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block1_NewName/true \\[isEncapsulated changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<Block> Block1_NewName/true \\[isEncapsulated changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Block> Block2/> <FlowPort> flowport1/in \\[direction changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<Block> Block2/<FlowPort> flowport1/in \\[direction changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Unit> Unit1/Dimension \\[dimension set\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<Unit> Unit1/Dimension \\[dimension changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <Dimension> Dimension1_NewName/Dimension1_NewName \\[name changed\\]"
+ "> <Model> SysMLmodel/> <Package> Blocks/<Dimension> Dimension1_NewName/Dimension1_NewName \\[name changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Blocks/> <ConstraintBlock> ConstraintBlock1/> <ConstraintProperty> constraintproperty1/true \\[isStatic changed\\]"
+ "> <Model> SysMLmodel/<Package> Blocks/<ConstraintBlock> ConstraintBlock1/<ConstraintProperty> constraintproperty1/true \\[isStatic changed\\]"
+ // Does not work for dark and mysterious reasons
+ // It can not get property 'image.decorations[0].path'. It may be caused by the way SysML icons are built.
+ //assertmergeLeftToRight
+ // "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/> <Constraint> Constraint1/> <Literal String> constraintSpec/This is a modified constraint \\[value changed\\]"
+ // "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/<Constraint> Constraint1/<Literal String> constraintSpec/This is a modified constraint \\[value changed\\]"
+ // So instead just merge an do not check
+ mergeLeftToRight "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/> <Constraint> Constraint1/> <Literal String> constraintSpec/This is a modified constraint \\[value changed\\]"
+ // Does not work for dark and mysterious reasons
+ // It can not get property 'image.decorations[0].path'. It may be caused by the way SysML icons are built.
+ //assertmergeLeftToRight
+ //assertmergeLeftToRight
+ // "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/<FlowPort> flowport2 \\[ownedAttribute delete\\]"
+ // So instead just merge an do not check
+ mergeLeftToRight "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/<FlowPort> flowport2 \\[ownedAttribute delete\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> InternalBlock/> <Block> Block1/<Connector> Connector2 \\[ownedConnector delete\\]"
+ "> <Model> SysMLmodel/<Package> InternalBlock/<Block> Block1/<Connector> Connector2 \\[ownedConnector delete\\]" //Strange behavior to add a >
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Parametric/> <ConstraintBlock> ConstraintBlock1/<Property> Attribute1 \\[ownedAttribute add\\]"
+ "> <Model> SysMLmodel/<Package> Parametric/<ConstraintBlock> ConstraintBlock1/<Property> Attribute1 \\[ownedAttribute add\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Req/> <Problem> /This a modified SysML Problem \\[body changed\\]"
+ "> <Model> SysMLmodel/> <Package> Req/<Problem> /This a modified SysML Problem \\[body changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Req/> <Rationale> /This a modified SysML Rational \\[body changed\\]"
+ "> <Model> SysMLmodel/> <Package> Req/<Rationale> /This a modified SysML Rational \\[body changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Req/> <Requirement> Requirement2/This req 02 \\[text set\\]"
+ "> <Model> SysMLmodel/> <Package> Req/> <Requirement> Requirement2/This req 02 \\[text changed\\]"
+
+ assertMergeLeftToRight
+ "> <Model> SysMLmodel/> <Package> Req/> <Requirement> Requirement2/REQ_02 \\[id set\\]"
+ "<Model> SysMLmodel/<Package> Req/<Requirement> Requirement2/REQ_02 \\[id changed\\]"
+}
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" | get-control Any -index 8
+ | get-property "getTitleArgument()"
+ | equals "0 of 28 differences are not merged — 15 differences filtered from view" | verify-true
+
+get-menu "File/Save" | click
+
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" | get-control Any -index 8
+ | get-property "getTitleArgument()"
+ | equals "0 of 0 differences are not merged — 0 differences filtered from view" | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc005_merge_right_all.test b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc005_merge_right_all.test
new file mode 100644
index 000000000..3c2fa8e4d
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/tests/profile/ts013_tc005_merge_right_all.test
@@ -0,0 +1,66 @@
+--- Q7 testcase ---
+Format-Version: 1.0
+Q7-vendor: www.xored.com/q7
+Contexts: _SapwEL4pEeOsAoUpt_cnqw,_LOMGYGrvEeK_JdLra2Bk5A,_r_QpAFLlEeS4zYvVAxx5Mg
+Element-Name: ts013_tc005_merge_right_all
+Element-Type: testcase
+Element-Version: 3.0
+External-Reference:
+Id: _14VY4VRDEeSkU9qpHBB-2g
+Q7-Runtime-Version: 1.3.15.201412220512
+Save-Time: 5/28/15 5:16 PM
+Testcase-Type: ecl
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
+Content-Type: text/plain
+Entry-Name: .description
+
+Cheks that merging all non conflicting differences at once to right is working well.
+
+1. Compare the two models
+2. Merge All to left
+3. Undo
+4. Checks that none differences has been merged
+5. Redo
+6. Checks that all differences has been merged
+7. Save
+8. Checks there nothing left to merge
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa--
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac
+Content-Type: text/ecl
+Entry-Name: .content
+
+with [get-view "Package Explorer" | get-tree] {
+ select "SysMLModel/left/model.uml" "SysMLModel/right/model.uml"
+ get-menu "Compare With/Each Other" | click
+}
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"] {
+ get-button "Expand All" | click
+}
+
+with [get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"] {
+ get-button "Copy All Non-Conflicting Changes From Left To Right" | click
+ get-tree | select "<Model> SysMLmodel/<Package> Blocks"
+}
+
+get-menu "Edit/Undo Merge" | click
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')"
+ | get-label "Model differences (28 of 28 differences are not merged — 15 differences filtered from view)"
+ | get-property caption
+ | equals "Model differences (28 of 28 differences are not merged — 15 differences filtered from view)"
+ | verify-true
+
+get-menu "Edit/Redo Merge" | click
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" | get-control Any -index 8
+ | get-property "getTitleArgument()"
+ | equals "0 of 28 differences are not merged — 15 differences filtered from view" | verify-true
+
+get-menu "File/Save" | click
+
+
+get-editor "Compare (\'SysMLModel/left/model.uml\' - \'SysMLModel/right/model.uml\')" | get-control Any -index 8
+ | get-property "getTitleArgument()"
+ | equals "0 of 0 differences are not merged — 0 differences filtered from view" | verify-true
+------=_.content-0a7243a0-75d3-3d5f-9791-539de0e5b7ac--
diff --git a/plugins/org.eclipse.emf.compare.q7.tests/tests/ts013_profile.suite b/plugins/org.eclipse.emf.compare.q7.tests/tests/ts013_profile.suite
new file mode 100644
index 000000000..d79d114c7
--- /dev/null
+++ b/plugins/org.eclipse.emf.compare.q7.tests/tests/ts013_profile.suite
@@ -0,0 +1,27 @@
+--- Q7 testcase ---
+Format-Version: 1.0
+Q7-vendor: www.xored.com/q7
+Element-Name: ts013_profile
+Element-Type: testsuite
+Element-Version: 2.0
+Id: _LFYlcFREEeSkU9qpHBB-2g
+Q7-Runtime-Version: 1.3.15.201412220512
+Save-Time: 5/28/15 5:15 PM
+
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa
+Content-Type: text/plain
+Entry-Name: .description
+
+Test on UML profiles.
+------=_.description-216f885c-d591-38ce-8ea2-e4f8cb4d6ffa--
+------=_testcase-items-62c497da-4241-31f4-811a-6b453a3ecff8
+Content-Type: text/testcase
+Entry-Name: testcase-items
+
+_MaurQFLlEeS4zYvVAxx5Mg //
+_AYD2oFPBEeSorJcpi4oQKA //
+_qwClUFPAEeSorJcpi4oQKA //
+_n8RLQFPCEeSorJcpi4oQKA //
+_14VY4VRDEeSkU9qpHBB-2g //
+
+------=_testcase-items-62c497da-4241-31f4-811a-6b453a3ecff8--

Back to the top