juplo:variables parses its parameter as JSON and can merge variable-defs
[juplo-dialect] / src / test / java / de / juplo / thymeleaf / ImportVariablesAttrProcessorTest.java
diff --git a/src/test/java/de/juplo/thymeleaf/ImportVariablesAttrProcessorTest.java b/src/test/java/de/juplo/thymeleaf/ImportVariablesAttrProcessorTest.java
new file mode 100644 (file)
index 0000000..e8e188e
--- /dev/null
@@ -0,0 +1,83 @@
+package de.juplo.thymeleaf;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Scanner;
+import java.util.regex.Matcher;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+
+
+/**
+ *
+ * @author Kai Moritz
+ */
+public class ImportVariablesAttrProcessorTest
+{
+  @Test
+  public void testPattern() throws IOException
+  {
+    Matcher matcher;
+
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("{}");
+    assertTrue(matcher.matches());
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher(" { } ");
+    assertTrue(matcher.matches());
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("\t{\t}\t");
+    assertTrue(matcher.matches());
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("\n{\n}\n");
+    assertTrue(matcher.matches());
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher(" \t\n{ \t\n} \t\n");
+    assertTrue(matcher.matches());
+
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("{\"foo\":\"bar\",\"foobar\":{\"foo\":\"bar\"}");
+    assertTrue(matcher.matches());
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher(" { \"foo\":\"bar\", \"foobar\": { \"foo\": \"bar\" } ");
+    assertTrue(matcher.matches());
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("\t{\t\"foo\":\t\"bar\"\t,\t\"foobar\":\t{\t\"foo\":\"bar\"\t}");
+    assertTrue(matcher.matches());
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("\n{\n\"foo\":\n\"bar\"\n,\n\"foobar\":\n{\n\"foo\":\"bar\"\n}");
+    assertTrue(matcher.matches());
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("\n\t {\n\t \"foo\":\n\t \"bar\"\n\t ,\n\t \"foobar\":\n\t {\n\t \"foo\":\"bar\"\n\t }");
+    assertTrue(matcher.matches());
+
+    String json;
+
+    json = read("/json/1.json");
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher(json);
+    assertTrue(matcher.matches());
+    json = read("/json/2.json");
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher(json);
+    assertTrue(matcher.matches());
+    json = read("/json/3.json");
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher(json);
+    assertTrue(matcher.matches());
+
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("foo:bar");
+    assertTrue(matcher.matches());
+    assertNull(matcher.group(1));
+    assertNull(matcher.group(2));
+    assertEquals("foo:bar", matcher.group(3));
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("replace:foo");
+    assertTrue(matcher.matches());
+    assertNull(matcher.group(1));
+    assertNull(matcher.group(2));
+    assertEquals("foo", matcher.group(3));
+    matcher = ImportVariablesAttrProcessor.PATTERN.matcher("merge:foo");
+    assertTrue(matcher.matches());
+    assertEquals("merge", matcher.group(1));
+    assertNull(matcher.group(2));
+    assertEquals("foo", matcher.group(3));
+  }
+
+
+  String read(String resource)
+  {
+    InputStream is = getClass().getResourceAsStream(resource);
+    return new Scanner(is).useDelimiter("\\Z").next();
+  }
+}