summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/RGrammarTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/parser/RGrammarTest.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RGrammarTest.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/bjc/rgens/parser/RGrammarTest.java b/src/main/java/bjc/rgens/parser/RGrammarTest.java
index 25f76e7..8193fa3 100755
--- a/src/main/java/bjc/rgens/parser/RGrammarTest.java
+++ b/src/main/java/bjc/rgens/parser/RGrammarTest.java
@@ -1,10 +1,13 @@
package bjc.rgens.parser;
+import bjc.rgens.parser.templates.GrammarTemplate;
+
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.Random;
/**
* Test for new grammar syntax.
@@ -29,6 +32,10 @@ public class RGrammarTest {
for(RGrammarSet gramSet : cfgSet.grammars.values()) {
testGrammarSet(gramSet);
}
+
+ for(GrammarTemplate template : cfgSet.templates.values()) {
+ testTemplate(template, cfgSet.grammars.get("default"));
+ }
} catch (IOException ioex) {
ioex.printStackTrace();
} catch (URISyntaxException urisex) {
@@ -36,6 +43,26 @@ public class RGrammarTest {
}
}
+ private static void testTemplate(GrammarTemplate template, RGrammarSet set) {
+ System.out.printf("Generating for template %s\n", template);
+
+ Random rnd = new Random();
+
+ for(int i = 0; i < 10; i++) {
+ GenerationState state = GenerationState.fromGrammar(rnd, set.exportGrammar);
+
+ template.generate(state);
+
+ String res = state.contents.toString();
+
+ if(res.length() > 120) {
+ System.out.printf("\t\n\tContents: %s\n\t\n", res);
+ } else {
+ System.out.printf("\tContents: %s\n", res);
+ }
+ }
+ }
+
private static void testGrammarSet(RGrammarSet gramSet) {
/* Generate rule suggestions for all the grammars in the set. */
for (String gramName : gramSet.getGrammars()) {