package uk.co.badgersinfoil.metaas.impl.parser.regexsimple;
import java.io.IOException;
import java.io.StringReader;
import uk.co.badgersinfoil.metaas.impl.AS3FragmentParser;
import uk.co.badgersinfoil.metaas.impl.antlr.LinkedListTree;
import uk.co.badgersinfoil.metaas.impl.parser.RegexSimpleHelper;
import uk.co.badgersinfoil.metaas.impl.parser.regexsimple.RegexSimpleParser;
import junit.framework.TestCase;
public class RegexSimpleParserTests extends TestCase {
public void testSimple() throws Exception {
RegexSimpleParser parser = parserOn("/@/");
LinkedListTree tree = AS3FragmentParser.tree(parser.regexpLiteral());
assertEquals(RegexSimpleParser.REGEXP_LITERAL, tree.getType());
}
public void testRemainder() throws Exception {
RegexSimpleParser parser = parserOn("/@/ ");
LinkedListTree tree = AS3FragmentParser.tree(parser.regexpLiteral());
assertEquals(RegexSimpleParser.REGEXP_LITERAL, tree.getType());
assertEquals(" ", parser.getInputTail());
}
public void testEscapedDelimiter() throws Exception {
RegexSimpleParser parser = parserOn("/\\//");
LinkedListTree tree = AS3FragmentParser.tree(parser.regexpLiteral());
assertEquals(RegexSimpleParser.REGEXP_LITERAL, tree.getType());
}
public void testSimpleFlags() throws Exception {
RegexSimpleParser parser = parserOn("/@/mi");
LinkedListTree tree = AS3FragmentParser.tree(parser.regexpLiteral());
assertEquals(RegexSimpleParser.REGEXP_LITERAL, tree.getType());
}
public void testNullEscapes() throws Exception {
RegexSimpleParser parser = parserOn("/\\_/\\_");
LinkedListTree tree = AS3FragmentParser.tree(parser.regexpLiteral());
assertEquals(RegexSimpleParser.REGEXP_LITERAL, tree.getType());
}
public void testHexEscapes() throws Exception {
RegexSimpleParser parser = parserOn("/\\x12\\u1234\\U12345678/");
LinkedListTree tree = AS3FragmentParser.tree(parser.regexpLiteral());
assertEquals(RegexSimpleParser.REGEXP_LITERAL, tree.getType());
}
private static RegexSimpleParser parserOn(String str) throws IOException {
StringReader in = new StringReader(str);
return RegexSimpleHelper.parserOn(in);
}
}