/* * JBoss, Home of Professional Open Source. * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. Some portions may be licensed * to Red Hat, Inc. under one or more contributor license agreements. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ package org.teiid.common.buffer.impl; import static org.junit.Assert.*; import java.io.Serializable; import java.math.BigDecimal; import java.math.BigInteger; import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Test; import org.teiid.core.types.BinaryType; import org.teiid.core.types.DataTypeManager; public class TestSizeUtility { private static class SomeObject implements Serializable { private String state; public SomeObject(String state) { this.state = state; } } public void helpTestGetStaticSize(Object obj, long expectedSize) { helpTestGetSize(obj, expectedSize); } public void helpTestGetSize(Object obj, long expectedSize) { long actualSize = SizeUtility.getSize(obj, false); assertEquals("Got unexpected size: ", expectedSize, actualSize); //$NON-NLS-1$ } @Test public void testGetSizeChar() { helpTestGetStaticSize(new Character('a'), 10); } @Test public void testGetSizeBoolean() { helpTestGetStaticSize(Boolean.TRUE, 1); } @Test public void testGetSizeByte() { helpTestGetStaticSize(new Byte((byte)0), 1); } @Test public void testGetSizeShort() { helpTestGetStaticSize(new Short((short)0), 10); } @Test public void testGetSizeInteger() { helpTestGetStaticSize(new Integer(0), 12); } @Test public void testGetSizeLong() { helpTestGetStaticSize(new Long(0l), 16); } @Test public void testGetSizeFloat() { helpTestGetStaticSize(new Float(0), 12); } @Test public void testGetSizeDouble() { helpTestGetStaticSize(new Double(0), 16); } @Test public void testGetSizeTimestamp() { helpTestGetStaticSize(new Timestamp(12301803), 28); } @Test public void testGetSizeDate() { helpTestGetStaticSize(new Date(12301803), 28); } @Test public void testGetSizeTime() { helpTestGetStaticSize(new Time(12301803), 28); } @Test public void testGetSizeEmptyString() { helpTestGetSize("", 40); //$NON-NLS-1$ } @Test public void testGetSizeShortString() { helpTestGetSize("abcdefghij", 64); //$NON-NLS-1$ } @Test public void testGetSizeObject() { helpTestGetStaticSize(new SomeObject(null), 16); helpTestGetStaticSize(new SomeObject("Hello world"), 56); //$NON-NLS-1$ } @Test public void testGetSizeRow1() { List<Object> row = new ArrayList<Object>(1); row.add(new Integer(0)); helpTestGetStaticSize(row, 36); } @Test public void testGetSizeRow2() { List<Object> row = new ArrayList<Object>(4); row.add(new Integer(0)); row.add(new Integer(101)); row.add(Boolean.TRUE); row.add(new Double(1091203.00)); helpTestGetStaticSize(row, 89); } @Test public void testGetSizeRows1() { helpTestGetStaticSize(new List[] { }, 16); } @Test public void testGetSizeRows2() { List<Object> row1 = new ArrayList<Object>(2); row1.add(new Integer(0)); row1.add(new Integer(100)); List<Object> row2 = new ArrayList<Object>(2); row2.add(new Integer(0)); row2.add(new Integer(100)); helpTestGetStaticSize(new List[] { row1, row2 }, 144); } @Test public void testGetSizeBigInteger() { BigInteger b = BigInteger.ONE; helpTestGetStaticSize(b, 48); } @Test public void testGetSizeBigDecimal() { BigDecimal bd = new BigDecimal("1.0"); //$NON-NLS-1$ helpTestGetStaticSize(bd, 96); } @Test public void testGetSizeByteArray() { byte[] bytes = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; helpTestGetSize(new BinaryType(bytes), 32); } @Test public void testResultSet() { List<?>[] expected = new List[] { Arrays.asList(new Object[] { "a", new Integer(0), Boolean.FALSE, new Double(2.0), "a", new Integer(0) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "a", new Integer(0), Boolean.FALSE, new Double(2.0), "a", new Integer(0) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "a", new Integer(0), Boolean.FALSE, new Double(2.0), "a", new Integer(0) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "a", new Integer(0), Boolean.FALSE, new Double(2.0), "a", new Integer(0) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "a", new Integer(0), Boolean.FALSE, new Double(2.0), "a", new Integer(3) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "a", new Integer(0), Boolean.FALSE, new Double(2.0), "a", new Integer(3) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "a", new Integer(3), Boolean.TRUE, new Double(7.0), "a", new Integer(0) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "a", new Integer(3), Boolean.TRUE, new Double(7.0), "a", new Integer(0) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "a", new Integer(3), Boolean.TRUE, new Double(7.0), "a", new Integer(3) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "b", new Integer(2), Boolean.FALSE, new Double(0.0), "b", new Integer(2) }), //$NON-NLS-1$ //$NON-NLS-2$ Arrays.asList(new Object[] { "c", new Integer(1), Boolean.FALSE, new Double(0.0), "c", new Integer(1) }) //$NON-NLS-1$ //$NON-NLS-2$ }; Class<?>[] types = {DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.INTEGER, DataTypeManager.DefaultDataClasses.BOOLEAN, DataTypeManager.DefaultDataClasses.DOUBLE, DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.INTEGER}; long actualSize = new SizeUtility(types).getBatchSize(false, Arrays.asList(expected)); assertEquals("Got unexpected size: ", 2667, actualSize); //$NON-NLS-1$ } }