Index: trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/EventTaskComparisonRuleTest.java
===================================================================
--- trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/EventTaskComparisonRuleTest.java	(revision 807)
+++ trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/EventTaskComparisonRuleTest.java	(revision 807)
@@ -0,0 +1,66 @@
+package de.ugoe.cs.quest.tasktrees.nodeequality;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import de.ugoe.cs.quest.eventcore.IEventTarget;
+import de.ugoe.cs.quest.eventcore.IEventType;
+import de.ugoe.cs.quest.eventcore.StringEventType;
+import de.ugoe.cs.quest.tasktrees.treeifc.ISelection;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNodeFactory;
+import de.ugoe.cs.quest.tasktrees.treeimpl.TaskTreeNodeFactory;
+import de.ugoe.cs.quest.test.DummyGUIElement;
+
+/**
+ * @author Patrick Harms
+ */
+public class EventTaskComparisonRuleTest {
+
+    /**
+     *
+     */
+    @Test
+    public void test() {
+        ITaskTreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();
+        
+        EventTaskComparisonRule rule = new EventTaskComparisonRule();
+        
+        // test the identity check
+        IEventType eventType1 = new StringEventType("eventType1");
+        IEventTarget eventTarget1 = new DummyGUIElement("elem1");
+        ITaskTreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        
+        assertEquals(NodeEquality.IDENTICAL, rule.compare(task1, task1));
+
+        ITaskTreeNode task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task2, task1));
+        
+        IEventType eventType2 = new StringEventType("eventType2");
+        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
+
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
+        
+        IEventTarget eventTarget2 = new DummyGUIElement("elem2");
+        task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget2);
+        
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
+        
+        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);
+        
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
+
+        ISelection selection = treeNodeFactory.createNewSelection();
+        assertNull(rule.compare(task1, selection));
+        assertNull(rule.compare(selection, task1));
+        assertNull(rule.compare(task2, selection));
+        assertNull(rule.compare(selection, task2));
+    }
+
+}
Index: trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/GUIEventTaskComparisonRuleTest.java
===================================================================
--- trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/GUIEventTaskComparisonRuleTest.java	(revision 807)
+++ trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/GUIEventTaskComparisonRuleTest.java	(revision 807)
@@ -0,0 +1,131 @@
+package de.ugoe.cs.quest.tasktrees.nodeequality;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.eventcore.IEventTarget;
+import de.ugoe.cs.quest.eventcore.IEventType;
+import de.ugoe.cs.quest.eventcore.StringEventType;
+import de.ugoe.cs.quest.eventcore.gui.KeyboardFocusChange;
+import de.ugoe.cs.quest.eventcore.gui.TextInput;
+import de.ugoe.cs.quest.eventcore.gui.ValueSelection;
+import de.ugoe.cs.quest.tasktrees.treeifc.ISelection;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNodeFactory;
+import de.ugoe.cs.quest.tasktrees.treeimpl.TaskTreeNodeFactory;
+import de.ugoe.cs.quest.test.DummyGUIElement;
+
+/**
+ * @author Patrick Harms
+ */
+public class GUIEventTaskComparisonRuleTest {
+
+    /**
+     *
+     */
+    @Test
+    public void test() {
+        ITaskTreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();
+        
+        GUIEventTaskComparisonRule rule = new GUIEventTaskComparisonRule();
+        
+        // test the identity check
+        IEventType eventType1 = new StringEventType("blub");
+        IEventTarget eventTarget1 = new DummyGUIElement("elem1");
+        ITaskTreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        
+        assertNull(rule.compare(task1, task1));
+
+        eventType1 = new KeyboardFocusChange();
+        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        
+        assertEquals(NodeEquality.IDENTICAL, rule.compare(task1, task1));
+
+        // test lexical equality for interaction events which are no value selections or text inputs
+        IEventType eventType2 = new KeyboardFocusChange();
+        ITaskTreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task2, task1));
+        
+        // test equality of value selections
+        eventType1 = new ValueSelection<String>("value1");
+        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
+        
+        eventType2 = new ValueSelection<String>("value1");
+        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
+        
+        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task2, task1));
+        
+        eventType2 = new ValueSelection<String>("value2");
+        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
+        
+        assertEquals(NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task2, task1));
+        
+        // test equality of text inputs
+        List<Event> textInputEvents1 = new ArrayList<Event>();
+        textInputEvents1.add(new Event(eventType1, eventTarget1));
+        eventType1 = new TextInput("enteredText1", textInputEvents1);
+        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
+        
+        eventType2 = new TextInput("enteredText1", textInputEvents1);
+        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task2, task1));
+        
+        List<Event> textInputEvents2 = new ArrayList<Event>();
+        textInputEvents2.add(new Event(eventType2, eventTarget1));
+        eventType2 = new TextInput("enteredText1", textInputEvents2);
+        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
+        
+        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task2, task1));
+        
+        eventType2 = new TextInput("enteredText2", textInputEvents2);
+        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
+        
+        assertEquals(NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task2, task1));
+        
+        // now ensure unequality for all combinations, if the event targets do not match
+        IEventTarget eventTarget2 = new DummyGUIElement("elem2");
+        eventType1 = new KeyboardFocusChange();
+        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
+        
+        eventType1 = new ValueSelection<String>("value1");
+        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget2);
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
+        
+        eventType1 = new TextInput("enteredText1", textInputEvents1);
+        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
+        task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget2);
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
+
+        ISelection selection = treeNodeFactory.createNewSelection();
+        assertNull(rule.compare(task1, selection));
+        assertNull(rule.compare(selection, task1));
+        assertNull(rule.compare(task2, selection));
+        assertNull(rule.compare(selection, task2));
+    }
+
+}
Index: trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/IterationComparisonRuleTest.java
===================================================================
--- trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/IterationComparisonRuleTest.java	(revision 807)
+++ trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/IterationComparisonRuleTest.java	(revision 807)
@@ -0,0 +1,92 @@
+package de.ugoe.cs.quest.tasktrees.nodeequality;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import de.ugoe.cs.quest.tasktrees.treeifc.IIteration;
+import de.ugoe.cs.quest.tasktrees.treeifc.ISelection;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeBuilder;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNodeFactory;
+import de.ugoe.cs.quest.tasktrees.treeimpl.TaskTreeBuilder;
+import de.ugoe.cs.quest.tasktrees.treeimpl.TaskTreeNodeFactory;
+import de.ugoe.cs.quest.tasktrees.treeimpl.TaskTreeNode;
+
+/**
+ * @author Patrick Harms
+ */
+public class IterationComparisonRuleTest {
+
+    /**
+     *
+     */
+    @Test
+    public void test() {
+        NodeEqualityRuleManager manager = new NodeEqualityRuleManager();
+        manager.init();
+        
+        ITaskTreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();
+        ITaskTreeBuilder treeBuilder = new TaskTreeBuilder();
+        
+        IterationComparisonRule rule = new IterationComparisonRule(manager);
+        
+        ITaskTreeNode task1 = new TaskTreeNode("task1");
+        ITaskTreeNode task2 = new TaskTreeNode("task2");
+        
+        assertNull(rule.compare(task1, task2));
+        
+        IIteration iteration1 = treeNodeFactory.createNewIteration();
+        assertEquals(NodeEquality.IDENTICAL, rule.compare(iteration1, iteration1));
+
+        IIteration iteration2 = treeNodeFactory.createNewIteration();
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));
+        
+        treeBuilder.setChild(iteration1, task1);
+        
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(iteration1, iteration2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(iteration2, iteration1));
+        
+        treeBuilder.setChild(iteration2, task1);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));
+        
+        treeBuilder.setChild(iteration1, task2);
+        
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(iteration1, iteration2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(iteration2, iteration1));
+        
+        treeBuilder.setChild(iteration2, task2);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));
+        
+        ISelection selection1 = treeNodeFactory.createNewSelection();
+        treeBuilder.addChild(selection1, task2);
+        treeBuilder.setChild(iteration1, selection1);
+        
+        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(iteration1, iteration2));
+        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(iteration2, iteration1));
+        
+        ISelection selection2 = treeNodeFactory.createNewSelection();
+        treeBuilder.addChild(selection2, task2);
+        treeBuilder.setChild(iteration2, selection2);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration1, iteration2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(iteration2, iteration1));
+        
+        assertNull(rule.compare(iteration1, selection1));
+        assertNull(rule.compare(selection1, iteration1));
+        assertNull(rule.compare(iteration2, selection1));
+        assertNull(rule.compare(selection1, iteration2));
+
+        assertNull(rule.compare(iteration1, selection2));
+        assertNull(rule.compare(selection2, iteration1));
+        assertNull(rule.compare(iteration2, selection2));
+        assertNull(rule.compare(selection2, iteration2));
+    }
+
+}
Index: trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/NodeEqualityTest.java
===================================================================
--- trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/NodeEqualityTest.java	(revision 800)
+++ trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/NodeEqualityTest.java	(revision 807)
@@ -6,13 +6,9 @@
 
 /**
- * TODO comment
- * 
- * @version $Revision: $ $Date: 15.08.2012$
- * @author 2012, last modified by $Author: pharms$
+ * @author Patrick Harms
  */
 public class NodeEqualityTest {
 
     /**
-     * TODO: comment
      *
      */
Index: trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/SelectionComparisonRuleTest.java
===================================================================
--- trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/SelectionComparisonRuleTest.java	(revision 807)
+++ trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/SelectionComparisonRuleTest.java	(revision 807)
@@ -0,0 +1,86 @@
+package de.ugoe.cs.quest.tasktrees.nodeequality;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import de.ugoe.cs.quest.tasktrees.treeifc.ISelection;
+import de.ugoe.cs.quest.tasktrees.treeifc.ISequence;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeBuilder;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNode;
+import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeNodeFactory;
+import de.ugoe.cs.quest.tasktrees.treeimpl.TaskTreeBuilder;
+import de.ugoe.cs.quest.tasktrees.treeimpl.TaskTreeNodeFactory;
+import de.ugoe.cs.quest.tasktrees.treeimpl.TaskTreeNode;
+
+/**
+ * @author Patrick Harms
+ */
+public class SelectionComparisonRuleTest {
+
+    /**
+     * 
+     */
+    @Test
+    public void test() {
+        NodeEqualityRuleManager manager = new NodeEqualityRuleManager();
+        manager.init();
+        
+        ITaskTreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();
+        ITaskTreeBuilder treeBuilder = new TaskTreeBuilder();
+        
+        SelectionComparisonRule rule = new SelectionComparisonRule(manager);
+        
+        ITaskTreeNode task1 = new TaskTreeNode("task1");
+        ITaskTreeNode task2 = new TaskTreeNode("task2");
+        
+        assertNull(rule.compare(task1, task2));
+        
+        ISelection selection1 = treeNodeFactory.createNewSelection();
+        assertEquals(NodeEquality.IDENTICAL, rule.compare(selection1, selection1));
+
+        ISelection selection2 = treeNodeFactory.createNewSelection();
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1));
+        
+        treeBuilder.addChild(selection1, task1);
+        
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(selection1, selection2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(selection2, selection1));
+        
+        treeBuilder.addChild(selection2, task1);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1));
+        
+        treeBuilder.addChild(selection1, task2);
+        
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(selection1, selection2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(selection2, selection1));
+        
+        treeBuilder.addChild(selection2, task2);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection2));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection1));
+        
+        ISelection selection3 = treeNodeFactory.createNewSelection();
+        treeBuilder.addChild(selection3, task2);
+        treeBuilder.addChild(selection3, task1);
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection1, selection3));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection3, selection1));
+        
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection2, selection3));
+        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(selection3, selection2));
+
+        ISequence sequence = treeNodeFactory.createNewSequence();
+        assertNull(rule.compare(selection1, sequence));
+        assertNull(rule.compare(sequence, selection1));
+        assertNull(rule.compare(selection2, sequence));
+        assertNull(rule.compare(sequence, selection2));
+        assertNull(rule.compare(selection3, sequence));
+        assertNull(rule.compare(sequence, selection3));
+    }
+
+}
Index: trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/SequenceComparisonRuleTest.java
===================================================================
--- trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/SequenceComparisonRuleTest.java	(revision 800)
+++ trunk/quest-core-tasktrees-test/src/test/java/de/ugoe/cs/quest/tasktrees/nodeequality/SequenceComparisonRuleTest.java	(revision 807)
@@ -5,4 +5,5 @@
 import org.junit.Test;
 
+import de.ugoe.cs.quest.tasktrees.treeifc.ISelection;
 import de.ugoe.cs.quest.tasktrees.treeifc.ISequence;
 import de.ugoe.cs.quest.tasktrees.treeifc.ITaskTreeBuilder;
@@ -14,18 +15,10 @@
 
 /**
- * <p>
- * TODO comment
- * </p>
- * 
- * @version $Revision: $ $Date: 16.08.2012$
- * @author 2012, last modified by $Author: pharms$
+ * @author Patrick Harms
  */
 public class SequenceComparisonRuleTest {
 
     /**
-     * <p>
-     * TODO: comment
-     * </p>
-     *
+     * 
      */
     @Test
@@ -45,5 +38,5 @@
         
         ISequence sequence1 = treeNodeFactory.createNewSequence();
-        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(sequence1, sequence1));
+        assertEquals(NodeEquality.IDENTICAL, rule.compare(sequence1, sequence1));
 
         ISequence sequence2 = treeNodeFactory.createNewSequence();
@@ -54,6 +47,6 @@
         treeBuilder.addChild(sequence1, task1);
         
-        assertNull(rule.compare(sequence1, sequence2));
-        assertNull(rule.compare(sequence2, sequence1));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(sequence1, sequence2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(sequence2, sequence1));
         
         treeBuilder.addChild(sequence2, task1);
@@ -64,6 +57,6 @@
         treeBuilder.addChild(sequence1, task2);
         
-        assertNull(rule.compare(sequence1, sequence2));
-        assertNull(rule.compare(sequence2, sequence1));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(sequence1, sequence2));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(sequence2, sequence1));
         
         treeBuilder.addChild(sequence2, task2);
@@ -76,6 +69,16 @@
         treeBuilder.addChild(sequence3, task1);
         
-        assertNull(rule.compare(sequence1, sequence3));
-        assertNull(rule.compare(sequence3, sequence1));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(sequence1, sequence3));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(sequence3, sequence1));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(sequence2, sequence3));
+        assertEquals(NodeEquality.UNEQUAL, rule.compare(sequence3, sequence2));
+
+        ISelection selection = treeNodeFactory.createNewSelection();
+        assertNull(rule.compare(sequence1, selection));
+        assertNull(rule.compare(selection, sequence1));
+        assertNull(rule.compare(sequence2, selection));
+        assertNull(rule.compare(selection, sequence2));
+        assertNull(rule.compare(sequence3, selection));
+        assertNull(rule.compare(selection, sequence3));
     }
 
