//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.uima.utils.select;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
/**
* Token queue tests.
*/
public class TokenQueueTest {
@Test
public void chompBalanced() {
TokenQueue tq = new TokenQueue(":contains(one (two) three) four");
String pre = tq.consumeTo("(");
String guts = tq.chompBalanced('(', ')');
String remainder = tq.remainder();
assertEquals(":contains", pre);
assertEquals("one (two) three", guts);
assertEquals(" four", remainder);
}
@Test
public void chompEscapedBalanced() {
TokenQueue tq = new TokenQueue(":contains(one (two) \\( \\) \\) three) four");
String pre = tq.consumeTo("(");
String guts = tq.chompBalanced('(', ')');
String remainder = tq.remainder();
assertEquals(":contains", pre);
assertEquals("one (two) \\( \\) \\) three", guts);
assertEquals("one (two) ( ) ) three", TokenQueue.unescape(guts));
assertEquals(" four", remainder);
}
@Test
public void chompBalancedMatchesAsMuchAsPossible() {
TokenQueue tq = new TokenQueue("unbalanced(something(or another)) else");
tq.consumeTo("(");
String match = tq.chompBalanced('(', ')');
assertEquals("something(or another)", match);
}
@Test
public void unescape() {
assertEquals("one ( ) \\", TokenQueue.unescape("one \\( \\) \\\\"));
}
@Test
public void empty() {
TokenQueue tq = new TokenQueue("");
assertFalse(tq.matches("test"));
assertTrue(tq.matches(""));
assertFalse(tq.matchesAny("test", "12"));
assertTrue(tq.matchesAny("test", ""));
assertFalse(tq.matchesAny('t', 'e', 's', 't'));
assertFalse(tq.matchesWhitespace());
assertFalse(tq.matchesWord());
assertTrue(tq.consumeIdentifier().isEmpty());
assertTrue(tq.consumeNodeSelector().isEmpty());
}
}