From b1a23f4e7daa5ccd9f8988930d97832d132b99b8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Wed, 1 Oct 2014 16:57:34 +0200 Subject: [PATCH] ADD: testcases for the templates. --- .../cacert/gigi/template/TestTemplate.java | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 tests/org/cacert/gigi/template/TestTemplate.java diff --git a/tests/org/cacert/gigi/template/TestTemplate.java b/tests/org/cacert/gigi/template/TestTemplate.java new file mode 100644 index 00000000..19b8768d --- /dev/null +++ b/tests/org/cacert/gigi/template/TestTemplate.java @@ -0,0 +1,117 @@ +package org.cacert.gigi.template; + +import static org.junit.Assert.*; + +import java.io.CharArrayWriter; +import java.io.PrintWriter; +import java.io.StringReader; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +import org.cacert.gigi.dbObjects.Digest; +import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.Outputable; +import org.cacert.gigi.output.template.HashAlgorithms; +import org.cacert.gigi.output.template.IterableDataset; +import org.cacert.gigi.output.template.OutputableArrayIterable; +import org.cacert.gigi.output.template.Template; +import org.junit.Test; + +public class TestTemplate { + + private String testExecute(Language l, HashMap vars, String input) { + Template t = new Template(new StringReader(input)); + CharArrayWriter caw = new CharArrayWriter(); + PrintWriter pw = new PrintWriter(caw); + t.output(pw, l, vars); + pw.flush(); + return new String(caw.toCharArray()); + } + + HashMap vars = new HashMap<>(); + + @Test + public void testVarEscape() { + vars.put("var", "val"); + assertEquals("vall", testExecute(Language.getInstance(Locale.ENGLISH), vars, "l")); + vars.put("var", "val<"); + assertEquals("val<l", testExecute(Language.getInstance(Locale.ENGLISH), vars, "l")); + assertEquals("vall")); + vars.put("var", "val\">"); + assertEquals("val">l", testExecute(Language.getInstance(Locale.ENGLISH), vars, "l")); + assertEquals("val\">l", testExecute(Language.getInstance(Locale.ENGLISH), vars, "l")); + + } + + @Test + public void testVarSprintf() { + vars.put("var", "val\">"); + vars.put("var2", "val3<\""); + vars.put("var3", "val4>"); + assertEquals("This val"> textl", testExecute(Language.getInstance(Locale.ENGLISH), vars, "l")); + assertEquals("This val\"> textl", testExecute(Language.getInstance(Locale.ENGLISH), vars, "l")); + + assertEquals("This val"> val3<" the val4> textl", testExecute(Language.getInstance(Locale.ENGLISH), vars, "l")); + assertEquals("This val\"> val3<\" the val4> textl", testExecute(Language.getInstance(Locale.ENGLISH), vars, "l")); + + assertEquals("This blargh<>!, <>! textl", testExecute(Language.getInstance(Locale.ENGLISH), vars, "!\",!\"<>!\",This %s, %s text?>l")); + } + + @Test + public void testIf() { + vars.put("existent", "val"); + assertEquals(">existent<", testExecute(Language.getInstance(Locale.ENGLISH), vars, ">existent<nonexistent")); + } + + @Test + public void testForeach() { + vars.put("it", new IterableDataset() { + + int i = 0; + + @Override + public boolean next(Language l, Map vars) { + vars.put("e", Integer.toString(i++)); + return i < 10; + } + }); + assertEquals("012345678<", testExecute(Language.getInstance(Locale.ENGLISH), vars, "<nonexistent")); + } + + @Test + public void testNullContent() { + assertEquals("", testExecute(Language.getInstance(Locale.ENGLISH), vars, "<>")); + + } + + @Test + public void testTranslate() { + assertEquals("<null>", testExecute(Language.getInstance(Locale.ENGLISH), vars, "?>")); + + } + + @Test + public void testOutputable() { + Outputable o = new Outputable() { + + @Override + public void output(PrintWriter out, Language l, Map vars) { + out.print("bl"); + } + }; + vars.put("v", new OutputableArrayIterable(new Object[] { + o, o, o, o, o + }, "e")); + assertEquals("[0]bl[1]bl[2]bl[3]bl[4]bl", testExecute(Language.getInstance(Locale.ENGLISH), vars, "[]")); + + } + + @Test + public void testHashalgs() { + vars.put("v", new HashAlgorithms(Digest.SHA256)); + assertEquals("SHA256[ checked='checked']SHA384[]SHA512[]", testExecute(Language.getInstance(Locale.ENGLISH), vars, "[]")); + + } + +} -- 2.39.2