}
}
}
public void TestBnf() {
UnicodeRegex regex = new UnicodeRegex();
final String[][] tests = {
{
"c = a wq;\n" +
"a = xyz;\n" +
"b = a a c;\n"
},
{
"c = a b;\n" +
"a = xyz;\n" +
"b = a a c;\n",
"Exception"
},
{
"uri = (?: (scheme) \\:)? (host) (?: \\? (query))? (?: \\u0023 (fragment))?;\n" +
"scheme = reserved+;\n" +
"host = // reserved+;\n" +
"query = [\\=reserved]+;\n" +
"fragment = reserved+;\n" +
"reserved = [[:ascii:][:sc=grek:]&[:alphabetic:]];\n",
"http://\u03B1\u03B2\u03B3?huh=hi#there"},
{
"langtagRegex.txt"
}
};
for (int i = 0; i < tests.length; ++i) {
String test = tests[i][0];
final boolean expectException = tests[i].length < 2 ? false : tests[i][1].equals("Exception");
try {
String result;
if (test.endsWith(".txt")) {
java.io.InputStream is = RegexUtilitiesTest.class.getResourceAsStream(test);
List lines = UnicodeRegex.appendLines(new ArrayList(), is, "UTF-8");
result = regex.compileBnf(lines);
} else {
result = regex.compileBnf(test);
}
if (expectException) {
errln("Expected exception for " + test);
continue;
}
result = result.replaceAll("[0-9]+%", ""); // just so we can use the language subtag stuff
String resolved = regex.transform(result);
logln(resolved);
Matcher m = Pattern.compile(resolved, Pattern.COMMENTS).matcher("");
String checks = "";
for (int j = 1; j < tests[i].length; ++j) {
String check = tests[i][j];