Skip to content

Commit 5017920

Browse files
committed
Test that icecream is merged as expected (a test case from a user)
1 parent e832849 commit 5017920

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

test/src/edu/stanford/nlp/semgraph/semgrex/ssurgeon/SsurgeonTest.java

+44
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)