/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.publication.freemarker; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List; import org.junit.Assert; import org.junit.Test; import freemarker.template.SimpleDate; import freemarker.template.SimpleNumber; import freemarker.template.SimpleObjectWrapper; import freemarker.template.SimpleScalar; import freemarker.template.SimpleSequence; import freemarker.template.TemplateBooleanModel; import freemarker.template.TemplateDateModel; import freemarker.template.TemplateModel; /** * FreemarkerUtil单元测试 * * @author wangwei */ public class FreemarkerUtilTest { @Test public void testGetBoolean()throws Exception{ Boolean value = FreemarkerUtil.getBoolean(TemplateBooleanModel.FALSE, true); Assert.assertFalse(value); SimpleScalar scalar = new SimpleScalar("true"); value = FreemarkerUtil.getBoolean(scalar, false); Assert.assertNull(value); value = FreemarkerUtil.getBoolean(scalar, true); Assert.assertTrue(value); } @Test public void testGetDate()throws Exception{ Calendar calendar = Calendar.getInstance(); calendar.set(2011, 0, 1); Date date = new Date(calendar.getTime().getTime()); SimpleDate model = new SimpleDate(date,TemplateDateModel.DATE); Date value = FreemarkerUtil.getDate(model, false); Assert.assertNotNull(value); Assert.assertEquals(date, value); SimpleScalar scalar = new SimpleScalar("2011-01-01"); value = FreemarkerUtil.getDate(scalar, false); Assert.assertNull(value); value = FreemarkerUtil.getDate(scalar, true); Assert.assertNotNull(value); scalar = new SimpleScalar("2011/01/01"); value = FreemarkerUtil.getDate(scalar, true); Assert.assertNull(value); } @Test public void testGetInteger()throws Exception{ SimpleNumber model = new SimpleNumber(Integer.valueOf(1)); Integer value = FreemarkerUtil.getInteger(model, false); Assert.assertEquals(Integer.valueOf(1), value); SimpleScalar scalar = new SimpleScalar("1"); value = FreemarkerUtil.getInteger(scalar, false); Assert.assertNull(value); value = FreemarkerUtil.getInteger(scalar, true); Assert.assertEquals(Integer.valueOf(1), value); scalar = new SimpleScalar("a"); value = FreemarkerUtil.getInteger(scalar, true); Assert.assertNull(value); } @Test public void testGetString()throws Exception{ SimpleScalar model = new SimpleScalar("test"); String value = FreemarkerUtil.getString(model); Assert.assertEquals("test", value); } @Test public void testGetBean()throws Exception{ TemplateModel model =SimpleObjectWrapper.getDefaultInstance().wrap(new BeanObject("1")); Object value = FreemarkerUtil.getBean(model); Assert.assertNotNull(value); Assert.assertEquals(new BeanObject("1"), value); SimpleScalar scalar = new SimpleScalar("test"); value = FreemarkerUtil.getBean(scalar); Assert.assertNull(value); } @Test public void testGetSequence()throws Exception{ Object[] array = new Object[]{"1",Integer.valueOf(0),new BeanObject("1")}; SimpleSequence model = new SimpleSequence(Arrays.asList(array)); List<?> value = FreemarkerUtil.getSequence(model); Assert.assertTrue(value.size() == 3); Assert.assertEquals("1", value.get(0)); Assert.assertEquals(Integer.valueOf(0), value.get(1)); Assert.assertEquals(new BeanObject("1"), value.get(2)); } static class BeanObject { private String key; BeanObject(String key){ this.key = key; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((key == null) ? 0 : key.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; BeanObject other = (BeanObject) obj; if (key == null) { if (other.key != null) return false; } else if (!key.equals(other.key)) return false; return true; } } }