package com.aliyun.odps.type;
import org.junit.Assert;
import org.junit.Test;
import com.aliyun.odps.OdpsType;
/**
* Created by zhenhong.gzh on 16/7/12.
*/
public class ArrayTypeInfoTest {
private String getExpectName(String valueTypeName) {
return String.format("ARRAY<%s>", valueTypeName);
}
@Test
public void testName() {
ArrayTypeInfo arrayTypeInfo = TypeInfoFactory.getArrayTypeInfo(TypeInfoFactory.VOID);
Assert.assertEquals(getExpectName(OdpsType.VOID.name()), arrayTypeInfo.getTypeName());
arrayTypeInfo = TypeInfoFactory.getArrayTypeInfo(TypeInfoFactory.BIGINT);
Assert.assertEquals(getExpectName(OdpsType.BIGINT.name()), arrayTypeInfo.getTypeName());
arrayTypeInfo = TypeInfoFactory.getArrayTypeInfo(TypeInfoFactory.getCharTypeInfo(10));
Assert.assertEquals(getExpectName(arrayTypeInfo.getElementTypeInfo().getTypeName()), arrayTypeInfo.getTypeName());
arrayTypeInfo = TypeInfoFactory.getArrayTypeInfo(TypeInfoFactory.getVarcharTypeInfo(10));
Assert.assertEquals(getExpectName(arrayTypeInfo.getElementTypeInfo().getTypeName()), arrayTypeInfo.getTypeName());
arrayTypeInfo = TypeInfoFactory.getArrayTypeInfo(TypeInfoFactory.getDecimalTypeInfo(2, 1));
Assert.assertEquals(getExpectName(arrayTypeInfo.getElementTypeInfo().getTypeName()), arrayTypeInfo.getTypeName());
// array in array
ArrayTypeInfo arrayTypeInfo1 = TypeInfoFactory.getArrayTypeInfo(arrayTypeInfo);
Assert.assertEquals(getExpectName(arrayTypeInfo.getTypeName()), arrayTypeInfo1.getTypeName());
// map in array
arrayTypeInfo1 = TypeInfoFactory.getArrayTypeInfo(TypeInfoFactory.getMapTypeInfo(TypeInfoFactory.BIGINT, TypeInfoFactory.STRING));
Assert.assertEquals(getExpectName(arrayTypeInfo1.getElementTypeInfo().getTypeName()), arrayTypeInfo1.getTypeName());
}
}