package com.aliyun.odps.type; import org.junit.Assert; import org.junit.Test; /** * Created by zhenhong.gzh on 16/7/12. */ public class DecimalTypeInfoTest { @Test public void testGetTypeInfoName() { DecimalTypeInfo decimalTypeInfo = TypeInfoFactory.getDecimalTypeInfo(10, 2); Assert.assertEquals("DECIMAL(10,2)", decimalTypeInfo.getTypeName()); decimalTypeInfo = TypeInfoFactory.getDecimalTypeInfo(DecimalTypeInfo.DEFAULT_PRECISION, DecimalTypeInfo.DEFAULT_SCALE); Assert.assertEquals("DECIMAL", decimalTypeInfo.getTypeName()); } @Test public void testDefaultDecimal() { DecimalTypeInfo decimalTypeInfo = TypeInfoFactory.DECIMAL; Assert.assertEquals("DECIMAL", decimalTypeInfo.getTypeName()); Assert.assertEquals(DecimalTypeInfo.DEFAULT_PRECISION, decimalTypeInfo.getPrecision()); Assert.assertEquals(DecimalTypeInfo.DEFAULT_SCALE, decimalTypeInfo.getScale()); } @Test public void testDecimalPrecisionAndScale() { DecimalTypeInfo decimalTypeInfo = TypeInfoFactory.getDecimalTypeInfo(DecimalTypeInfo.DEFAULT_PRECISION, DecimalTypeInfo.DEFAULT_SCALE); Assert.assertEquals(DecimalTypeInfo.DEFAULT_PRECISION, decimalTypeInfo.getPrecision()); Assert.assertEquals(DecimalTypeInfo.DEFAULT_SCALE, decimalTypeInfo.getScale()); decimalTypeInfo = TypeInfoFactory.getDecimalTypeInfo(1, 0); Assert.assertEquals(1, decimalTypeInfo.getPrecision()); Assert.assertEquals(0, decimalTypeInfo.getScale()); } @Test public void testDecimalTypeIllegalParameters() { // precision illegal // scale illegal // scale larger than precision, illegal int [][] params = {{DecimalTypeInfo.DEFAULT_PRECISION + 1, 0}, {0, 0}, {DecimalTypeInfo.DEFAULT_PRECISION, DecimalTypeInfo.DEFAULT_SCALE + 1}, {2, -1}, {3, 4}}; int count = 0; for (int [] pair : params) { try { TypeInfoFactory.getDecimalTypeInfo(pair[0], pair[1]); } catch (IllegalArgumentException e) { count ++; } } Assert.assertEquals(params.length, count); } }