package de.fuberlin.bii.regextodfaconverter;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Test;
/**
* Test-Klasse für die Regex-Klasse.
* @author Daniel Rotar
* @author Wojciech Lukasiewicz
*
*/
public class RegexTest {
/**
* Test of reduceAndBracketRegex method, of class Regex.
*/
@SuppressWarnings("static-method")
@Test
public void testReduceAndBracketRegex() throws Exception {
String resultRegex;
resultRegex = Regex.reduceAndBracketRegex("abc");
assertEquals("(((a)(b))(c))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("a{3}");
assertEquals("(((a)(a))(a))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("[a-d]");
assertEquals("((((a)|(b))|(c))|(d))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("[a-c-]");
assertEquals("((((\\-)|(a))|(b))|(c))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("[-a-c]");
assertEquals("((((\\-)|(a))|(b))|(c))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("[a-a]");
assertEquals("(a)", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("[a-bc-d]");
assertEquals("((((a)|(b))|(c))|(d))", resultRegex);
try
{
resultRegex = Regex.reduceAndBracketRegex("[b-a]");
fail("Exception should have been thrown");
}
catch (Exception e)
{
}
resultRegex = Regex.reduceAndBracketRegex("ba*");
assertEquals("((b)((a)*))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("a*");
assertEquals("((a)*)", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("ab+");
assertEquals("((a)((b)((b)*)))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("a+");
assertEquals("((a)((a)*))", resultRegex);
try
{
resultRegex = Regex.reduceAndBracketRegex("a$");
fail("Exception should have been thrown");
}
catch (Exception e)
{
}
resultRegex = Regex.reduceAndBracketRegex("a\\$");
assertEquals("((a)(\\$))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("(a|b)?");
assertEquals("(()|((a)|(b)))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("a{1,1}");
assertEquals("(a)", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("(ab){1,2}");
assertEquals("(((a)(b))|(((a)(b))((a)(b))))", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("(ab){0,2}");
assertEquals("((()|((a)(b)))|(((a)(b))((a)(b))))", resultRegex);
try
{
resultRegex = Regex.reduceAndBracketRegex("a{1,0}");
fail("Exception should have been thrown");
}
catch (Exception e)
{
}
resultRegex = Regex.reduceAndBracketRegex("[.]");
assertEquals("(\\.)", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("[}]");
assertEquals("(\\})", resultRegex);
resultRegex = Regex.reduceAndBracketRegex("[]]");
assertEquals("(\\])", resultRegex);
}
}