package de.skuzzle.polly.test.core.parser.scanner;
import junit.framework.Assert;
import org.junit.Ignore;
import org.junit.Test;
import de.skuzzle.polly.core.parser.InputScanner;
/**
* Tests some basic character reading.
*
* @author Simon Taddiken
*/
public class TestReadCharacters extends AbstractScannerTest {
/** Changes visibility of character reading methods */
@Ignore
private final class PublicTokenStream extends InputScanner {
public PublicTokenStream(String input) {
super(input);
}
@Override
public boolean nextIs(int c) {
return super.nextIs(c);
}
@Override
public int readChar() {
return super.readChar();
}
@Override
public void pushBack(int t) {
super.pushBack(t);
}
@Override
public void pushBackArtificial(int c) {
super.pushBackArtificial(c);
}
}
@Override
protected PublicTokenStream obtain(String input) {
return new PublicTokenStream(input);
}
@Test
public void testReadCharacters1() {
final String input = "1234";
final PublicTokenStream scanner = this.obtain(input);
Assert.assertTrue(scanner.nextIs('1'));
Assert.assertTrue(scanner.nextIs('2'));
Assert.assertFalse(scanner.nextIs('4'));
Assert.assertTrue(scanner.nextIs('3'));
Assert.assertTrue(scanner.nextIs('4'));
Assert.assertTrue(scanner.nextIs(-1));
}
@Test
public void testReadCharacters2() {
final String input = "1234";
final PublicTokenStream scanner = this.obtain(input);
Assert.assertTrue(scanner.nextIs('1'));
scanner.pushBackArtificial('5');
scanner.pushBackArtificial('6');
Assert.assertTrue(scanner.nextIs('5'));
Assert.assertTrue(scanner.nextIs('6'));
Assert.assertTrue(scanner.nextIs('2'));
Assert.assertTrue(scanner.nextIs('3'));
Assert.assertTrue(scanner.nextIs('4'));
Assert.assertTrue(scanner.nextIs(-1));
}
@Test
public void testReadCharacters3() {
final String input = "";
final PublicTokenStream scanner = this.obtain(input);
Assert.assertTrue(scanner.nextIs(-1));
}
@Test
public void testReadCharacters4() {
final String input = "";
final PublicTokenStream scanner = this.obtain(input);
scanner.pushBackArtificial('a');
Assert.assertTrue(scanner.nextIs('a'));
Assert.assertTrue(scanner.nextIs(-1));
}
}