You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2019/07/14 22:34:18 UTC

[freemarker] 01/02: Some more tests for the fallbackOnNullLoopVariable setting.

This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git

commit a1fd6ff225df1e724df5e474043d4916af2cc744
Author: ddekany <dd...@apache.org>
AuthorDate: Sun Jul 14 23:36:18 2019 +0200

    Some more tests for the fallbackOnNullLoopVariable setting.
---
 .../java/freemarker/core/NullTransparencyTest.java | 23 +++---
 .../freemarker/template/ConfigurationTest.java     | 81 +++++++---------------
 2 files changed, 37 insertions(+), 67 deletions(-)

diff --git a/src/test/java/freemarker/core/NullTransparencyTest.java b/src/test/java/freemarker/core/NullTransparencyTest.java
index 24a9792..e9d63ee 100644
--- a/src/test/java/freemarker/core/NullTransparencyTest.java
+++ b/src/test/java/freemarker/core/NullTransparencyTest.java
@@ -19,19 +19,14 @@
 
 package freemarker.core;
 
-import static org.junit.Assert.*;
+import freemarker.template.TemplateException;
+import freemarker.test.TemplateTest;
+import org.junit.Test;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
-import org.junit.Test;
-
-import freemarker.template.TemplateException;
-import freemarker.test.TemplateTest;
+import static org.junit.Assert.assertTrue;
 
 public class NullTransparencyTest extends TemplateTest {
 
@@ -91,18 +86,22 @@ public class NullTransparencyTest extends TemplateTest {
     protected void testLoopVariables(String expectedFallback) throws IOException, TemplateException {
         assertOutput("<#list list as it>${it!'null'}<#sep>, </#list>",
                 "a, " + expectedFallback + ", b");
+        assertOutput("<#list list><#items as it>${it!'null'}<#sep>, </#items></#list>",
+                "a, " + expectedFallback + ", b");
 
         assertOutput("<#list map?values as it>${it!'null'}<#sep>, </#list>",
                 "av, bv, " + expectedFallback);
         assertOutput("<#list map as k, it>${k!'null'}=${it!'null'}<#sep>, </#list>",
                 "ak=av, null=bv, ck=" + expectedFallback);
+        assertOutput("<#list map><#items as k, it>${k!'null'}=${it!'null'}<#sep>, </#items></#list>",
+                "ak=av, null=bv, ck=" + expectedFallback);
 
         assertOutput("<#list map?keys as it>${it!'null'}<#sep>, </#list>",
                 "ak, " + expectedFallback + ", ck");
         assertOutput("<#list map as it, v>${it!'null'}=${v!'null'}<#sep>, </#list>",
                 "ak=av, " + expectedFallback + "=bv, ck=null");
-
-        // TODO #item
+        assertOutput("<#list map><#items as it, v>${it!'null'}=${v!'null'}<#sep>, </#items></#list>",
+                "ak=av, " + expectedFallback + "=bv, ck=null");
 
         assertOutput("" +
                 "<#macro loop><#nested 1>, <#nested totallyMissing></#macro>\n" +
diff --git a/src/test/java/freemarker/template/ConfigurationTest.java b/src/test/java/freemarker/template/ConfigurationTest.java
index 3cf8c8b..80c2805 100644
--- a/src/test/java/freemarker/template/ConfigurationTest.java
+++ b/src/test/java/freemarker/template/ConfigurationTest.java
@@ -19,72 +19,28 @@
 
 package freemarker.template;
 
-import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
-
-import org.junit.Test;
-
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import freemarker.cache.CacheStorageWithGetSize;
-import freemarker.cache.FileTemplateLoader;
-import freemarker.cache.NullCacheStorage;
-import freemarker.cache.SoftCacheStorage;
-import freemarker.cache.StringTemplateLoader;
-import freemarker.cache.StrongCacheStorage;
-import freemarker.cache.TemplateCache;
-import freemarker.cache.TemplateLookupContext;
-import freemarker.cache.TemplateLookupResult;
-import freemarker.cache.TemplateLookupStrategy;
-import freemarker.cache.TemplateNameFormat;
-import freemarker.core.BaseNTemplateNumberFormatFactory;
-import freemarker.core.CombinedMarkupOutputFormat;
-import freemarker.core.Configurable;
+import freemarker.cache.*;
+import freemarker.core.*;
 import freemarker.core.Configurable.SettingValueAssignmentException;
 import freemarker.core.Configurable.UnknownSettingException;
-import freemarker.core.ConfigurableTest;
-import freemarker.core.CustomHTMLOutputFormat;
-import freemarker.core.DefaultTruncateBuiltinAlgorithm;
-import freemarker.core.DummyOutputFormat;
-import freemarker.core.Environment;
-import freemarker.core.EpochMillisDivTemplateDateFormatFactory;
-import freemarker.core.EpochMillisTemplateDateFormatFactory;
-import freemarker.core.HTMLOutputFormat;
-import freemarker.core.HexTemplateNumberFormatFactory;
-import freemarker.core.MarkupOutputFormat;
-import freemarker.core.OptInTemplateClassResolver;
-import freemarker.core.OutputFormat;
-import freemarker.core.ParseException;
-import freemarker.core.RTFOutputFormat;
-import freemarker.core.TemplateClassResolver;
-import freemarker.core.TemplateDateFormatFactory;
-import freemarker.core.TemplateNumberFormatFactory;
-import freemarker.core.UndefinedOutputFormat;
-import freemarker.core.UnregisteredOutputFormatException;
-import freemarker.core.XHTMLOutputFormat;
-import freemarker.core.XMLOutputFormat;
-import freemarker.core._CoreStringUtils;
 import freemarker.ext.beans.BeansWrapperBuilder;
 import freemarker.ext.beans.StringModel;
 import freemarker.template.utility.DateUtil;
 import freemarker.template.utility.NullArgumentException;
 import freemarker.template.utility.NullWriter;
 import junit.framework.TestCase;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.lang.reflect.Field;
+import java.util.*;
+
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.assertThat;
 
 public class ConfigurationTest extends TestCase {
 
@@ -1882,6 +1838,21 @@ public class ConfigurationTest extends TestCase {
     }
 
     @Test
+    public void testFallbackOnNullLoopVariable() throws TemplateException {
+        Configuration cfg = new Configuration(Configuration.VERSION_2_3_29);
+        assertTrue(cfg.getFallbackOnNullLoopVariable());
+
+        cfg.setSetting("fallback_on_null_loop_variable", "false");
+        assertFalse(cfg.getFallbackOnNullLoopVariable());
+
+        cfg.setSetting("fallback_on_null_loop_variable", "true");
+        assertTrue(cfg.getFallbackOnNullLoopVariable());
+
+        cfg.setSetting("fallbackOnNullLoopVariable", "NO");
+        assertFalse(cfg.getFallbackOnNullLoopVariable());
+    }
+
+    @Test
     public void testGetSettingNamesAreSorted() throws Exception {
         Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);
         for (boolean camelCase : new boolean[] { false, true }) {