@@ -34,18 +34,18 @@ class EvaluationOrderTest {
34
34
fun testEvaluationOrders () {
35
35
with (TestLanguageFrontend ()) {
36
36
// <node1> -- EOG --> <node2>
37
- // this should be 1 nextDFG for node1 and 1 prevDFG for node2
38
- var node1 = newLiteral(value = 1 )
39
- var node2 = newLiteral(value = 1 )
40
-
37
+ // this should be 1 nextEOG for node1 and 1 prevEOG for node2
38
+ val node1 = newLiteral(value = 1 )
39
+ val node2 = newLiteral(value = 2 )
41
40
node1.nextEOGEdges.add(node2)
42
- // should contain 1 prevDFG edge now
41
+
42
+ // should contain 1 prevEOG edge now
43
43
assertEquals(1 , node2.prevEOGEdges.size)
44
- // and it should be the same as the nextDFG of node1
44
+ // and it should be the same as the nextEOG of node1
45
45
assertSame(node1.nextEOGEdges.firstOrNull(), node2.prevEOGEdges.firstOrNull())
46
46
47
47
node1.nextEOGEdges.removeAt(0 )
48
- // should contain 0 prevDFG edge now
48
+ // should contain 0 prevEOG edge now
49
49
assertEquals(0 , node2.prevEOGEdges.size)
50
50
}
51
51
}
@@ -54,9 +54,9 @@ class EvaluationOrderTest {
54
54
fun testClear () {
55
55
with (TestLanguageFrontend ()) {
56
56
// <node1> -- EOG --> <node2>
57
- // this should be 1 nextDFG for node1 and 1 prevDFG for node2
58
- var node1 = newLiteral(value = 1 )
59
- var node2 = newLiteral(value = 1 )
57
+ // this should be 1 nextEOG for node1 and 1 prevEOG for node2
58
+ val node1 = newLiteral(value = 1 )
59
+ val node2 = newLiteral(value = 2 )
60
60
61
61
node1.nextEOGEdges.add(node2)
62
62
assertEquals(1 , node2.prevEOGEdges.size)
@@ -66,4 +66,103 @@ class EvaluationOrderTest {
66
66
assertEquals(0 , node2.prevEOGEdges.size)
67
67
}
68
68
}
69
+
70
+ @Test
71
+ fun testInsertBefore () {
72
+ with (TestLanguageFrontend ()) {
73
+ val node1 = newLiteral(value = 1 )
74
+ val node2 = newLiteral(value = 2 )
75
+ val node3 = newLiteral(value = 3 )
76
+
77
+ // <node1> -- EOG -->
78
+ // <node3>
79
+ // <node2> -- EOG -->
80
+ node1.nextEOGEdges + = node3
81
+ node2.nextEOGEdges + = node3
82
+ assertEquals(2 , node3.prevEOGEdges.size, " node3 should contain 2 prevEOG edges now" )
83
+ assertEquals(
84
+ setOf (node1, node2),
85
+ node3.prevEOG.toSet(),
86
+ " node3 should have node1 and node2 as prevEOG" ,
87
+ )
88
+
89
+ // Now let's insert an edge from node4 to node3 "before" node3
90
+ // <node1> -- EOG -->
91
+ // <node4> -- EOG --> <node3>
92
+ // <node2> -- EOG -->
93
+ val node4 = newLiteral(value = 4 )
94
+ assertTrue(node3.insertNodeBeforeInEOGPath(node4))
95
+ assertEquals(1 , node3.prevEOGEdges.size, " node3 should contain 1 prevEOG edge now" )
96
+ assertSame(
97
+ node4,
98
+ node3.prevEOGEdges.singleOrNull()?.start,
99
+ " node4 should be the start of the single prevEOG edge of node3" ,
100
+ )
101
+ assertEquals(2 , node4.prevEOGEdges.size, " node4 should contain 2 prevEOG edges now" )
102
+ assertEquals(
103
+ setOf (node1, node2),
104
+ node4.prevEOG.toSet(),
105
+ " node4 should have node1 and node2 as prevEOG" ,
106
+ )
107
+ assertEquals(1 , node1.nextEOGEdges.size, " node1 should contain 1 nextEOG edge now" )
108
+ assertSame(
109
+ node4,
110
+ node1.nextEOGEdges.singleOrNull()?.end,
111
+ " node4 should be the end of the single nextEOG edge of node1" ,
112
+ )
113
+ }
114
+ }
115
+
116
+ @Test
117
+ fun testInsertAfterward () {
118
+ with (TestLanguageFrontend ()) {
119
+ val node1 = newLiteral(value = 1 )
120
+ val node2 = newLiteral(value = 2 )
121
+ val node3 = newLiteral(value = 3 )
122
+
123
+ // -- EOG --> <node1>
124
+ // <node3>
125
+ // -- EOG --> <node2>
126
+ //
127
+ node3.nextEOGEdges + = node1
128
+ node3.nextEOGEdges + = node2
129
+ assertEquals(2 , node3.nextEOGEdges.size, " node3 should contain 2 nextEOG edges now" )
130
+ assertEquals(
131
+ setOf (node1, node2),
132
+ node3.nextEOG.toSet(),
133
+ " node3 should have node1 and node2 as nextEOG" ,
134
+ )
135
+
136
+ // Now let's insert an edge from node3 to node4 "after" node3
137
+ // -- EOG --> <node1>
138
+ // <node3> -- EOG --> <node4>
139
+ // -- EOG --> <node2>
140
+ val node4 = newLiteral(value = 4 )
141
+ assertTrue(node3.insertNodeAfterwardInEOGPath(node4))
142
+ assertEquals(1 , node3.nextEOGEdges.size, " node3 should contain 1 nextEOG edge now" )
143
+ assertSame(
144
+ node4,
145
+ node3.nextEOGEdges.singleOrNull()?.end,
146
+ " node4 should be the end of the single nextEOG edge of node3" ,
147
+ )
148
+ assertEquals(2 , node4.nextEOGEdges.size, " node4 should contain 2 nextEOG edges now" )
149
+ assertEquals(
150
+ setOf (node1, node2),
151
+ node4.nextEOG.toSet(),
152
+ " node4 should have node1 and node2 as nextEOG" ,
153
+ )
154
+ assertEquals(1 , node1.prevEOGEdges.size, " node1 should contain 1 prevEOG edge now" )
155
+ assertSame(
156
+ node4,
157
+ node1.prevEOGEdges.singleOrNull()?.start,
158
+ " node4 should be the start of the single prevEOG edge of node1" ,
159
+ )
160
+ assertEquals(1 , node2.prevEOGEdges.size, " node2 should contain 1 prevEOG edge now" )
161
+ assertSame(
162
+ node4,
163
+ node2.prevEOGEdges.singleOrNull()?.start,
164
+ " node4 should be the start of the single prevEOG edge of node2" ,
165
+ )
166
+ }
167
+ }
69
168
}
0 commit comments