@@ -1133,6 +1133,50 @@ public void readXMLMergeNodes() {
1133
1133
assertEquals (".prof" , prof .lemma ());
1134
1134
}
1135
1135
1136
+ /**
1137
+ * A simple test sent to us from a user (unbelievably, ssurgeon apparently has users)
1138
+ */
1139
+ @ Test
1140
+ public void readXMLMergeNodesIceCream () {
1141
+ Ssurgeon inst = Ssurgeon .inst ();
1142
+
1143
+ // demostrate merging with the order ice, cream -> icecream
1144
+ String merge = String .join (newline ,
1145
+ "<ssurgeon-pattern-list>" ,
1146
+ " <ssurgeon-pattern>" ,
1147
+ " <uid>38</uid>" ,
1148
+ " <notes>Merge two nodes that should not have been split</notes>" ,
1149
+ " <semgrex>" + XMLUtils .escapeXML ("{}=gov >obj ({word:cream}=node1 >compound {word:ice}=node2)" ) + "</semgrex>" ,
1150
+ " <edit-list>mergeNodes -node node2 -node node1</edit-list>" ,
1151
+ " </ssurgeon-pattern>" ,
1152
+ "</ssurgeon-pattern-list>" );
1153
+ List <SsurgeonPattern > patterns = inst .readFromString (merge );
1154
+ assertEquals (patterns .size (), 1 );
1155
+ SsurgeonPattern mergeSsurgeon = patterns .get (0 );
1156
+
1157
+ SemanticGraph sg = SemanticGraph .valueOf ("[likes-3 nsubj> [child-2 det> The-1] obj> [cream-5 compound> ice-4]" , Language .UniversalEnglish );
1158
+ SemanticGraph newSG = mergeSsurgeon .iterate (sg ).first ;
1159
+ SemanticGraph expected = SemanticGraph .valueOf ("[likes-3 nsubj> [child-2 det> The-1] obj> icecream-4]" , Language .UniversalEnglish );
1160
+ assertEquals (expected , newSG );
1161
+
1162
+ merge = String .join (newline ,
1163
+ "<ssurgeon-pattern-list>" ,
1164
+ " <ssurgeon-pattern>" ,
1165
+ " <uid>38</uid>" ,
1166
+ " <notes>Merge two nodes that should not have been split</notes>" ,
1167
+ " <semgrex>" + XMLUtils .escapeXML ("{}=gov >obj ({word:cream}=node1 >compound {word:ice}=node2)" ) + "</semgrex>" ,
1168
+ " <edit-list>mergeNodes -node node1 -node node2</edit-list>" ,
1169
+ " </ssurgeon-pattern>" ,
1170
+ "</ssurgeon-pattern-list>" );
1171
+ patterns = inst .readFromString (merge );
1172
+ assertEquals (patterns .size (), 1 );
1173
+ mergeSsurgeon = patterns .get (0 );
1174
+
1175
+ sg = SemanticGraph .valueOf ("[likes-3 nsubj> [child-2 det> The-1] obj> [cream-5 compound> ice-4]" , Language .UniversalEnglish );
1176
+ newSG = mergeSsurgeon .iterate (sg ).first ;
1177
+ expected = SemanticGraph .valueOf ("[likes-3 nsubj> [child-2 det> The-1] obj> icecream-4]" , Language .UniversalEnglish );
1178
+ assertEquals (expected , newSG );
1179
+ }
1136
1180
1137
1181
/**
1138
1182
* Test a basic case of two nodes that should be merged
0 commit comments