package org.neo4j.jdbc; import org.codehaus.jackson.map.ObjectMapper; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.Types; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; import static java.util.Arrays.asList; import static org.junit.Assert.*; /** * @author mh * @since 13.06.12 */ @RunWith(Parameterized.class) public class ResultSetTest { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); private final ResultSet rs; private static List<Object> row; @SuppressWarnings("unchecked") @Parameterized.Parameters public static Collection<ResultSet[]> data() { row = Arrays.<Object>asList("0", 1, (short) 2, 3L, (byte) 4, 5f, 6d, BigDecimal.valueOf(7L),null,new String[]{"array"}, Collections.singletonMap("a", 1),Collections.singletonList("list")); List<Neo4jColumnMetaData> columns=asList( col("String", Types.VARCHAR), col("int", Types.INTEGER), col("short", Types.SMALLINT), col("long", Types.BIGINT), col("byte", Types.TINYINT), col("float", Types.FLOAT), col("double", Types.DOUBLE), col("BigDecimal", Types.NUMERIC), col("Null", Types.NULL), col("Array", Types.ARRAY), col("Map", Types.STRUCT), col("List", Types.ARRAY) ); return Arrays.<ResultSet[]>asList(new ResultSet[]{new ListResultSet(columns, Arrays.<List<Object>>asList(row), null)}, new ResultSet[]{new IteratorResultSet(columns, Arrays.<Object[]>asList(row.toArray()).iterator(), null)} ); } public ResultSetTest(ResultSet rs) { this.rs = rs; } @Test public void testGetByIndex() throws Exception { assertTrue(rs.next()); assertEquals(row.get(0),rs.getString(1)); assertEquals(row.get(0),rs.getString("String")); assertEquals(row.get(1),rs.getInt(2)); assertEquals(row.get(1),rs.getInt("int")); assertEquals(row.get(2),rs.getShort(3)); assertEquals(row.get(2),rs.getShort("short")); assertEquals(row.get(3),rs.getLong(4)); assertEquals(row.get(3),rs.getLong("long")); assertEquals(row.get(4),rs.getByte(5)); assertEquals(row.get(4),rs.getByte("byte")); assertEquals(row.get(5),rs.getFloat(6)); assertEquals(row.get(5),rs.getFloat("float")); assertEquals(row.get(6),rs.getDouble(7)); assertEquals(row.get(6),rs.getDouble("double")); assertEquals(row.get(7),rs.getBigDecimal(8)); assertEquals(row.get(7),rs.getBigDecimal("BigDecimal")); assertEquals(false,rs.wasNull()); assertEquals(row.get(8),rs.getObject("Null")); assertEquals(true, rs.wasNull()); assertEquals(row.get(8),rs.getObject(9)); assertEquals(true, rs.wasNull()); assertEquals(row.get(9),rs.getObject("Array")); assertEquals(row.get(9),rs.getObject(10)); assertEquals(OBJECT_MAPPER.writeValueAsString(row.get(9)),rs.getString("Array")); assertEquals(OBJECT_MAPPER.writeValueAsString(row.get(9)),rs.getString(10)); assertEquals(row.get(10),rs.getObject("Map")); assertEquals(row.get(10),rs.getObject(11)); assertEquals(OBJECT_MAPPER.writeValueAsString(row.get(10)),rs.getString("Map")); assertEquals(OBJECT_MAPPER.writeValueAsString(row.get(10)),rs.getString(11)); assertEquals(row.get(11),rs.getObject("List")); assertEquals(row.get(11),rs.getObject(12)); assertEquals(OBJECT_MAPPER.writeValueAsString(row.get(11)),rs.getString("List")); assertEquals(OBJECT_MAPPER.writeValueAsString(row.get(11)),rs.getString(12)); assertFalse(rs.next()); } private static Neo4jColumnMetaData col(String typeName, int type) { return new Neo4jColumnMetaData(typeName,typeName,type); } }