/* LanguageTool, a natural language style checker
* Copyright (C) 2015 Daniel Naber (http://www.danielnaber.de)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
* USA
*/
package org.languagetool.chunking;
import org.junit.Test;
import org.languagetool.AnalyzedToken;
import org.languagetool.AnalyzedTokenReadings;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.*;
public class TokenPredicateTest {
@Test
public void test() {
List<ChunkTag> chunkTags = Arrays.asList(new ChunkTag("CHUNK1"), new ChunkTag("CHUNK2"));
AnalyzedTokenReadings readings = new AnalyzedTokenReadings(new AnalyzedToken("mytoken", "MYPOS", "mylemma"), 0);
ChunkTaggedToken chunkTaggedToken = new ChunkTaggedToken("mytoken", chunkTags, readings);
assertMatch("mytoken", chunkTaggedToken);
assertNoMatch("mytoken2", chunkTaggedToken);
assertMatch("string=mytoken", chunkTaggedToken);
assertNoMatch("string=mytoken2", chunkTaggedToken);
assertMatch("regex=my[abct]oken", chunkTaggedToken);
assertNoMatch("regex=my[abc]oken", chunkTaggedToken);
assertMatch("chunk=CHUNK1", chunkTaggedToken);
assertMatch("chunk=CHUNK2", chunkTaggedToken);
assertNoMatch("chunk=OTHERCHUNK", chunkTaggedToken);
assertMatch("pos=MYPOS", chunkTaggedToken);
assertNoMatch("pos=OTHER", chunkTaggedToken);
assertMatch("posre=M.POS", chunkTaggedToken);
assertNoMatch("posre=O.HER", chunkTaggedToken);
try {
assertNoMatch("invalid=token", chunkTaggedToken);
fail();
} catch (RuntimeException expected) {
//expected
}
}
private void assertMatch(String expr, ChunkTaggedToken chunkTaggedToken) {
TokenPredicate predicate = new TokenPredicate(expr, false);
assertTrue(predicate.apply(chunkTaggedToken));
}
private void assertNoMatch(String expr, ChunkTaggedToken chunkTaggedToken) {
TokenPredicate predicate = new TokenPredicate(expr, false);
assertFalse(predicate.apply(chunkTaggedToken));
}
}