package com.alibaba.tamper.script; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.junit.Test; import com.alibaba.tamper.BeanMapping; import com.alibaba.tamper.core.builder.BeanMappingBuilder; import com.alibaba.tamper.object.SrcMappingObject; import com.alibaba.tamper.process.script.ScriptHelper; /** * @author jianghang 2011-6-28 下午05:07:51 */ public class CustomFunctionTest extends TestCase { private static final String ONE_OTHER = "oneOther"; private static final String TWO_OTHER = "twoOther"; private static final String THREE_OTHER = "threeOther"; @Test public void testCustomFunction() { CustomFunctionClass function = new CustomFunctionClass(); ScriptHelper.getInstance().registerFunctionClass("customFunction", function); BeanMappingBuilder builder = new BeanMappingBuilder() { protected void configure() { behavior().debug(true).mappingEmptyStrings(false).mappingNullValue(false).trimStrings(true);// 设置行为 mapping(HashMap.class, HashMap.class); fields(srcField("intValue"), targetField(ONE_OTHER, String.class)); fields(srcField("integerValue"), targetField(TWO_OTHER, String.class)); fields(srcField(null), targetField(THREE_OTHER, String.class)).script( "customFunction:sum(src.intValue,src.integerValue)"); } }; BeanMapping mapping = new BeanMapping(builder); Map src = new HashMap(); src.put("intValue", 10); src.put("integerValue", Integer.valueOf(10)); SrcMappingObject srcRef = new SrcMappingObject(); srcRef.setIntegerValue(1); Map dest = new HashMap(); mapping.mapping(src, dest); assertEquals(dest.get(ONE_OTHER), "10"); assertEquals(dest.get(TWO_OTHER), "10"); assertEquals(dest.get(THREE_OTHER), "20"); assertEquals(function.getInitial(), 2); } }