diff options
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/bjc/everge/EvergeTest.java | 71 | ||||
| -rw-r--r-- | src/test/java/bjc/everge/StringUtilsTest.java | 44 | ||||
| -rw-r--r-- | src/test/java/bjc/everge/TestUtils.java | 115 |
3 files changed, 230 insertions, 0 deletions
diff --git a/src/test/java/bjc/everge/EvergeTest.java b/src/test/java/bjc/everge/EvergeTest.java new file mode 100644 index 0000000..109992a --- /dev/null +++ b/src/test/java/bjc/everge/EvergeTest.java @@ -0,0 +1,71 @@ +package bjc.everge; + +import bjc.everge.TestUtils; + +import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintStream; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import static bjc.everge.TestUtils.*; + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + * Unit tests for Everge front-end. + * + * @author Ben Culkin. + */ +public class EvergeTest { + @Test + public void testConstruct() { + Everge evg = new Everge(); + + assertTrue(true); + } + + @Test + public void testArgs() { + Everge evg = new Everge(); + + List<String> errs = new ArrayList<>(); + + boolean stat = evg.processArgs(errs, "-v"); + if (!stat) { + for (String err : errs) { + System.err.println(err); + } + + assertTrue(false); + } + } + + @Test + public void testLoad() { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + Everge evg = new Everge(); + evg.outStream = new PrintStream(baos); + + List<String> errs = new ArrayList<>(); + boolean stat = evg.processArgs(errs, "-vv", "--file", "data/test/evg-test1.rp", + "data/test/evg-test1.inp"); + if (!stat) { + System.err.println("[ERROR] Did not succesfully process args"); + for (String err : errs) { + System.err.println(err); + } + + assertTrue(false); + } + + String outp = baos.toString().trim(); + assertEquals("b\nb", outp); + } +} diff --git a/src/test/java/bjc/everge/StringUtilsTest.java b/src/test/java/bjc/everge/StringUtilsTest.java new file mode 100644 index 0000000..9edc028 --- /dev/null +++ b/src/test/java/bjc/everge/StringUtilsTest.java @@ -0,0 +1,44 @@ +package bjc.everge; + +import java.util.Arrays; +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class StringUtilsTest { + @Test + public void testNullSplit() { + assertSplitsTo("a", null, " ", "a"); + assertSplitsTo("a b", null, " ", "a", "b"); + assertSplitsTo("a b cd", null, " ", "a", "b", "cd"); + } + + @Test + public void testNoEscapeSplit() { + assertSplitsTo("a", "/", " ", "a"); + assertSplitsTo("a b", "/", " ", "a", "b"); + assertSplitsTo("a b/c", "/", " ", "a", "b/c"); + } + + @Test + public void testEscapeSplit() { + assertSplitsTo("a / b/c", "/", " ", "a", "/ ", "b/c"); + } + + private void assertSplitsTo(String inp, String esc, String splat, String... right) { + try { + String[] lst = StringUtils.escapeSplit(esc, splat, inp); + + assertArrayEquals(right, lst); + } catch (Exception ex) { + System.err.println("EXCEPTION"); + ex.printStackTrace(); + System.err.println(); + + assertTrue(false); + } + } +} diff --git a/src/test/java/bjc/everge/TestUtils.java b/src/test/java/bjc/everge/TestUtils.java new file mode 100644 index 0000000..2b9dc8d --- /dev/null +++ b/src/test/java/bjc/everge/TestUtils.java @@ -0,0 +1,115 @@ +package bjc.everge; + +import java.io.FileInputStream; +import java.io.IOException; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import static org.junit.Assert.*; + +/** + * Utility methods for testing. + * + * @author Ben Culkin + */ +public class TestUtils { + /** + * Assert that a ReplParseException is thrown with a given message. + * + * @param msg + * The message. + * @param fle + * The file to load input from. + */ + public static void assertThrownMessage(String msg, String fle) { + assertThrownMessage(false, msg, fle); + } + + /** + * Assert that a ReplParseException is thrown with a given message. + * + * @param logMsg + * Log the exception message. + * @param msg + * The message. + * @param fle + * The file to load input from. + */ + public static void assertThrownMessage(boolean logMsg, String msg, String fle) { + try (FileInputStream fis = new FileInputStream(fle); Scanner scn = new Scanner(fis)) { + ReplPair.readList(new ArrayList<>(), scn); + + assertTrue(false); + } catch (ReplParseException rpex) { + if (logMsg) System.err.println(rpex.toPrintString()); + + assertEquals(msg, rpex.toPrintString()); + } catch (Exception ex) { + System.err.println("EXCEPTION"); + ex.printStackTrace(); + + assertTrue(false); + + return; + } + } + + public static void assertMultiReplace(String fle, String... inps) { + assertMultiReplace(false, fle, inps); + } + + public static void assertMultiReplace(boolean logRep, String fle, String... inps) { + if (inps.length < 2) throw new IllegalArgumentException("ERROR: Must provide at least two strings to assertMultiReplace"); + if (inps.length % 2 != 0) throw new IllegalArgumentException("ERROR: Odd number of strings passed to assertMultiReplace"); + + List<ReplPair> lrp = null; + + try (FileInputStream fis = new FileInputStream(fle); Scanner scn = new Scanner(fis)) { + lrp = ReplPair.readList(scn); + } catch (ReplParseException rpex) { + System.err.println(rpex.toPrintString()); + + assertTrue(false); + } catch (Exception ex) { + System.err.println("EXCEPTION"); + ex.printStackTrace(); + + assertTrue(false); + + return; + } + + for (int i = 0; i < inps.length; i += 2) { + String right = inps[i]; + String inp = inps[i + 1]; + + assertReplacesTo(logRep, right, lrp, inp); + } + } + + public static void assertReplacesFrom(String right, String inp, String fle) { + assertMultiReplace(fle, right, inp); + } + + public static void assertReplacesTo(String right, List<ReplPair> rps, String inp) { + assertReplacesTo(false, right, rps, inp); + } + + public static void assertReplacesTo(boolean logRep, String right, List<ReplPair> rps, String inp) { + if (logRep) System.err.printf("\t[LOG] Checking '%s' -> '%s'\n", inp, right); + + String tmp = inp; + + for (ReplPair rp : rps) { + String oldTmp = tmp; + + tmp = rp.apply(tmp); + + if (logRep) System.err.printf("\t[LOG] '%s' -> '%s'\t%s\n", oldTmp, tmp, rp); + } + + assertEquals(right, tmp); + } +} |
