/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package opennlp.tools.parser;
import org.junit.Assert;
import org.junit.Test;
/**
* Tests for the {@link Parse} class.
*/
public class ParseTest {
public static final String PARSE_STRING = "(TOP (S (S (NP-SBJ (PRP She) )(VP (VBD was) "
+ "(ADVP (RB just) )(NP-PRD (NP (DT another) (NN freighter) )(PP (IN from) (NP (DT the) "
+ "(NNPS States) )))))(, ,) (CC and) (S (NP-SBJ (PRP she) )(VP (VBD seemed) "
+ "(ADJP-PRD (ADJP (RB as) (JJ commonplace) )(PP (IN as) (NP (PRP$ her) " +
"(NN name) )))))(. .) ))";
@Test
public void testToHashCode() {
Parse p1 = Parse.parseParse(PARSE_STRING);
p1.hashCode();
}
@Test
public void testToString() {
Parse p1 = Parse.parseParse(PARSE_STRING);
p1.toString();
}
@Test
public void testEquals() {
Parse p1 = Parse.parseParse(PARSE_STRING);
Assert.assertTrue(p1.equals(p1));
}
@Test
public void testParseClone() {
Parse p1 = Parse.parseParse(PARSE_STRING);
Parse p2 = (Parse) p1.clone();
Assert.assertTrue(p1.equals(p2));
Assert.assertTrue(p2.equals(p1));
}
@Test
public void testGetText() {
Parse p = Parse.parseParse(PARSE_STRING);
// TODO: Why does parse attaches a space to the end of the text ???
String expectedText = "She was just another freighter from the States , " +
"and she seemed as commonplace as her name . ";
Assert.assertEquals(expectedText, p.getText());
}
@Test
public void testShow() {
Parse p1 = Parse.parseParse(PARSE_STRING);
StringBuffer parseString = new StringBuffer();
p1.show(parseString);
Parse p2 = Parse.parseParse(parseString.toString());
Assert.assertEquals(p1, p2);
}
@Test
public void testTokenReplacement() {
Parse p1 = Parse.parseParse("(TOP (S-CLF (NP-SBJ (PRP It) )(VP (VBD was) " +
" (NP-PRD (NP (DT the) (NN trial) )(PP (IN of) " +
" (NP (NP (NN oleomargarine) (NN heir) )(NP (NNP Minot) " +
" (PRN (-LRB- -LRB-) (NNP Mickey) " +
" (-RRB- -RRB-) )(NNP Jelke) )))(PP (IN for) " +
" (NP (JJ compulsory) (NN prostitution) " +
" ))(PP-LOC (IN in) (NP (NNP New) (NNP York) " +
" )))(SBAR (WHNP-1 (WDT that) )(S (VP (VBD put) " +
" (NP (DT the) (NN spotlight) )(PP (IN on) (NP (DT the) " +
" (JJ international) (NN play-girl) ))))))(. .) ))");
StringBuffer parseString = new StringBuffer();
p1.show(parseString);
Parse p2 = Parse.parseParse(parseString.toString());
Assert.assertEquals(p1, p2);
}
@Test
public void testGetTagNodes() {
Parse p = Parse.parseParse(PARSE_STRING);
Parse[] tags = p.getTagNodes();
for (Parse node : tags) {
Assert.assertTrue(node.isPosTag());
}
Assert.assertEquals("PRP", tags[0].getType());
Assert.assertEquals("VBD", tags[1].getType());
Assert.assertEquals("RB", tags[2].getType());
Assert.assertEquals("DT", tags[3].getType());
Assert.assertEquals("NN", tags[4].getType());
Assert.assertEquals("IN", tags[5].getType());
Assert.assertEquals("DT", tags[6].getType());
Assert.assertEquals("NNPS", tags[7].getType());
Assert.assertEquals(",", tags[8].getType());
Assert.assertEquals("CC", tags[9].getType());
Assert.assertEquals("PRP", tags[10].getType());
Assert.assertEquals("VBD", tags[11].getType());
Assert.assertEquals("RB", tags[12].getType());
Assert.assertEquals("JJ", tags[13].getType());
Assert.assertEquals("IN", tags[14].getType());
Assert.assertEquals("PRP$", tags[15].getType());
Assert.assertEquals("NN", tags[16].getType());
Assert.assertEquals(".", tags[17].getType());
}
}