blob: 090e01961906baa78b0c1f1adca88bcdd94587ba [file] [log] [blame]
package org.codehaus.groovy.syntax.lexer;
import groovy.util.GroovyTestCase;
import org.codehaus.groovy.syntax.ReadException;
public class AbstractCharStreamTest
extends GroovyTestCase
{
public static class MockCharStream
extends AbstractCharStream
{
private int cur;
private String text;
public MockCharStream(String text)
{
this.text = text;
this.cur = 0;
}
public MockCharStream(String text,
String description)
{
super( description );
this.text = text;
this.cur = 0;
}
public char consume()
throws ReadException
{
if ( this.cur >= this.text.length() )
{
return (char) -1;
}
char c = this.text.charAt( this.cur );
++this.cur;
return c;
}
public void close()
throws ReadException
{
}
}
public void testConstruct_Default()
{
assertEquals( "<unknown>",
new MockCharStream( "cheddar" ).getDescription() );
}
public void testConstruct_WithDescription()
{
assertEquals( "/path/to/Cheddar.groovy",
new MockCharStream( "cheddar",
"/path/to/Cheddar.groovy" ).getDescription() );
}
public void testconsume()
throws Exception
{
MockCharStream in = new MockCharStream( "cheddar" );
assertEquals( 'c',
in.consume() );
assertEquals( 'h',
in.consume() );
assertEquals( 'e',
in.consume() );
assertEquals( 'd',
in.consume() );
assertEquals( 'd',
in.consume() );
assertEquals( 'a',
in.consume() );
assertEquals( 'r',
in.consume() );
assertEquals( (char) -1,
in.consume() );
}
public void testConsume()
throws Exception
{
MockCharStream in = new MockCharStream( "cheddar" );
assertEquals( 'c',
in.consume() );
assertEquals( 'h',
in.consume() );
assertEquals( 'e',
in.consume() );
assertEquals( 'd',
in.consume() );
assertEquals( 'd',
in.consume() );
assertEquals( 'a',
in.consume() );
assertEquals( 'r',
in.consume() );
assertEquals( (char) -1,
in.consume() );
}
public void testConsumeAtEnd()
throws Exception
{
MockCharStream in = new MockCharStream( "" );
assertEquals( (char) -1,
in.consume() );
assertEquals( (char) -1,
in.consume() );
}
}