package com.github.aaronshan.functions.map; import com.github.aaronshan.functions.utils.MapUtils; import com.github.aaronshan.functions.utils.MapUtils; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import java.util.LinkedHashMap; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredJavaObject; import org.apache.hadoop.hive.ql.udf.generic.GenericUDF.DeferredObject; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; import org.junit.Assert; import org.junit.Test; import static org.junit.Assert.*; /** * @author ruifeng.shan * @date 2016-07-27 * @time 23:06 */ public class UDFMapConcatTest { @Test public void testMapConcat() throws Exception { UDFMapConcat udf = new UDFMapConcat(); ObjectInspector leftMapOI = ObjectInspectorFactory.getStandardMapObjectInspector(PrimitiveObjectInspectorFactory.javaStringObjectInspector, PrimitiveObjectInspectorFactory.javaStringObjectInspector); ObjectInspector rightMapOI = ObjectInspectorFactory.getStandardMapObjectInspector(PrimitiveObjectInspectorFactory.javaStringObjectInspector, PrimitiveObjectInspectorFactory.javaStringObjectInspector); ObjectInspector[] arguments = {leftMapOI, rightMapOI}; udf.initialize(arguments); LinkedHashMap<String, String> leftMap = Maps.newLinkedHashMap(); leftMap.putAll(ImmutableMap.<String, String>of("key1", "11", "key2", "12", "key3", "13")); LinkedHashMap<String, String> rightMap = Maps.newLinkedHashMap(); rightMap.putAll(ImmutableMap.<String, String>of("key3", "21", "key4", "22", "key5", "23")); DeferredObject leftMapObj = new DeferredJavaObject(leftMap); DeferredObject rightMapObj = new DeferredJavaObject(rightMap); DeferredObject[] args = {leftMapObj, rightMapObj}; LinkedHashMap<String, String> output = (LinkedHashMap<String, String>) udf.evaluate(args); LinkedHashMap<String, String> expect = Maps.newLinkedHashMap(); expect.putAll(ImmutableMap.<String, String>of("key1", "11", "key2", "12", "key3", "21", "key4", "22", "key5", "23")); Assert.assertEquals("map_concat() test", true, MapUtils.mapEquals(output, expect)); } }