@@ -1133,6 +1133,50 @@ public void readXMLMergeNodes() {
11331133 assertEquals (".prof" , prof .lemma ());
11341134 }
11351135
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+ }
11361180
11371181 /**
11381182 * Test a basic case of two nodes that should be merged
0 commit comments