Skip to content

Commit 2c09099

Browse files
committed
refactor(jdbc): parameterized result set metadata tests
1 parent f7fa992 commit 2c09099

1 file changed

Lines changed: 34 additions & 81 deletions

File tree

java-bigquery-jdbc/src/test/java/com/google/cloud/bigquery/jdbc/BigQueryResultSetMetadataTest.java

Lines changed: 34 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,26 @@
1818

1919
import static com.google.common.truth.Truth.assertThat;
2020
import static org.junit.jupiter.api.Assertions.assertThrows;
21+
import static org.junit.jupiter.params.provider.Arguments.arguments;
2122
import static org.mockito.Mockito.mock;
2223

2324
import com.google.cloud.bigquery.Field;
2425
import com.google.cloud.bigquery.FieldList;
2526
import com.google.cloud.bigquery.LegacySQLTypeName;
2627
import com.google.cloud.bigquery.Schema;
2728
import com.google.cloud.bigquery.StandardSQLTypeName;
28-
import com.google.common.collect.ImmutableList;
2929
import java.sql.Array;
3030
import java.sql.ResultSetMetaData;
3131
import java.sql.SQLException;
3232
import java.sql.Types;
33-
import java.util.List;
33+
import java.util.stream.Stream;
3434
import org.junit.jupiter.api.BeforeEach;
3535
import org.junit.jupiter.api.Test;
3636
import org.junit.jupiter.api.extension.ExtendWith;
3737
import org.junit.jupiter.params.ParameterizedTest;
38+
import org.junit.jupiter.params.provider.Arguments;
3839
import org.junit.jupiter.params.provider.EnumSource;
40+
import org.junit.jupiter.params.provider.MethodSource;
3941
import org.mockito.junit.jupiter.MockitoExtension;
4042

4143
@ExtendWith(MockitoExtension.class)
@@ -72,37 +74,6 @@ public class BigQueryResultSetMetadataTest {
7274
Field.of("twelfth", LegacySQLTypeName.TIME),
7375
Field.of("thirteenth", LegacySQLTypeName.DATE));
7476

75-
private static final List fieldListSqlTypes =
76-
ImmutableList.of(
77-
Types.BOOLEAN,
78-
Types.BIGINT,
79-
Types.DOUBLE,
80-
Types.NVARCHAR,
81-
Types.TIMESTAMP,
82-
Types.VARBINARY,
83-
Types.NVARCHAR,
84-
Types.ARRAY,
85-
Types.STRUCT,
86-
Types.NUMERIC,
87-
Types.NUMERIC,
88-
Types.TIME,
89-
Types.DATE);
90-
91-
private static final List fieldListClassNames =
92-
ImmutableList.of(
93-
"java.lang.Boolean",
94-
"java.lang.Long",
95-
"java.lang.Double",
96-
"java.lang.String",
97-
"java.sql.Timestamp",
98-
byte[].class.getName(),
99-
"java.lang.String",
100-
Array.class.getName(),
101-
"java.sql.Struct",
102-
"java.math.BigDecimal",
103-
"java.math.BigDecimal",
104-
"java.sql.Time",
105-
"java.sql.Date");
10677
private static final Schema QUERY_SCHEMA = Schema.of(fieldList);
10778

10879
private ResultSetMetaData resultSetMetaData;
@@ -131,39 +102,38 @@ public void setUp() throws SQLException {
131102
resultSetMetaDataNested = bigQueryJsonResultSetNested.getMetaData();
132103
}
133104

134-
@Test
135-
public void testGetColumnType() throws SQLException {
136-
// match the mapping for all the types in the test dataset
137-
for (int colIndex = 1; colIndex <= 13; colIndex++) {
138-
assertThat(resultSetMetaData.getColumnType(colIndex))
139-
.isEqualTo(fieldListSqlTypes.get(colIndex - 1));
140-
}
105+
@ParameterizedTest
106+
@MethodSource("columnMetadataProvider")
107+
public void testColumnMetadata(
108+
int columnIndex,
109+
int expectedSqlType,
110+
String expectedColumnTypeName,
111+
String expectedClassName,
112+
int expectedPrecision,
113+
int expectedScale)
114+
throws SQLException {
115+
assertThat(resultSetMetaData.getColumnType(columnIndex)).isEqualTo(expectedSqlType);
116+
assertThat(resultSetMetaData.getColumnTypeName(columnIndex)).isEqualTo(expectedColumnTypeName);
117+
assertThat(resultSetMetaData.getColumnClassName(columnIndex)).isEqualTo(expectedClassName);
118+
assertThat(resultSetMetaData.getPrecision(columnIndex)).isEqualTo(expectedPrecision);
119+
assertThat(resultSetMetaData.getScale(columnIndex)).isEqualTo(expectedScale);
141120
}
142121

143-
@Test
144-
public void testGetColumnTypeName() throws SQLException {
145-
assertThat(resultSetMetaData.getColumnTypeName(1)).isEqualTo("BOOL");
146-
assertThat(resultSetMetaData.getColumnTypeName(2)).isEqualTo("INT64");
147-
assertThat(resultSetMetaData.getColumnTypeName(3)).isEqualTo("FLOAT64");
148-
assertThat(resultSetMetaData.getColumnTypeName(4)).isEqualTo("STRING");
149-
assertThat(resultSetMetaData.getColumnTypeName(5)).isEqualTo("TIMESTAMP");
150-
assertThat(resultSetMetaData.getColumnTypeName(6)).isEqualTo("BYTES");
151-
assertThat(resultSetMetaData.getColumnTypeName(7)).isEqualTo("STRING");
152-
assertThat(resultSetMetaData.getColumnTypeName(8)).isEqualTo("ARRAY");
153-
assertThat(resultSetMetaData.getColumnTypeName(9)).isEqualTo("STRUCT");
154-
assertThat(resultSetMetaData.getColumnTypeName(10)).isEqualTo("NUMERIC");
155-
assertThat(resultSetMetaData.getColumnTypeName(11)).isEqualTo("BIGNUMERIC");
156-
assertThat(resultSetMetaData.getColumnTypeName(12)).isEqualTo("TIME");
157-
assertThat(resultSetMetaData.getColumnTypeName(13)).isEqualTo("DATE");
158-
}
159-
160-
@Test
161-
public void testColumnClassName()
162-
throws SQLException { // match the mapping for all the types in the test dataset
163-
for (int colIndex = 1; colIndex <= 13; colIndex++) {
164-
assertThat(resultSetMetaData.getColumnClassName(colIndex))
165-
.isEqualTo(fieldListClassNames.get(colIndex - 1));
166-
}
122+
private static Stream<Arguments> columnMetadataProvider() {
123+
return Stream.of(
124+
arguments(1, Types.BOOLEAN, "BOOL", "java.lang.Boolean", 1, 0),
125+
arguments(2, Types.BIGINT, "INT64", "java.lang.Long", 19, 0),
126+
arguments(3, Types.DOUBLE, "FLOAT64", "java.lang.Double", 15, 0),
127+
arguments(4, Types.NVARCHAR, "STRING", "java.lang.String", 0, 0),
128+
arguments(5, Types.TIMESTAMP, "TIMESTAMP", "java.sql.Timestamp", 26, 6),
129+
arguments(6, Types.VARBINARY, "BYTES", byte[].class.getName(), 0, 0),
130+
arguments(7, Types.NVARCHAR, "STRING", "java.lang.String", 0, 0),
131+
arguments(8, Types.ARRAY, "ARRAY", Array.class.getName(), 0, 0),
132+
arguments(9, Types.STRUCT, "STRUCT", "java.sql.Struct", 0, 0),
133+
arguments(10, Types.NUMERIC, "NUMERIC", "java.math.BigDecimal", 12, 9),
134+
arguments(11, Types.NUMERIC, "BIGNUMERIC", "java.math.BigDecimal", 77, 38),
135+
arguments(12, Types.TIME, "TIME", "java.sql.Time", 15, 6),
136+
arguments(13, Types.DATE, "DATE", "java.sql.Date", 10, 0));
167137
}
168138

169139
@Test
@@ -179,23 +149,6 @@ public void testResultSetMetadataProperties() throws SQLException {
179149
assertThat(resultSetMetaData.isNullable(4)).isEqualTo(ResultSetMetaData.columnNullableUnknown);
180150
}
181151

182-
@Test
183-
public void testPrecision() throws SQLException {
184-
assertThat(resultSetMetaData.getPrecision(1)).isEqualTo(1);
185-
assertThat(resultSetMetaData.getPrecision(2)).isEqualTo(19);
186-
assertThat(resultSetMetaData.getPrecision(3)).isEqualTo(15);
187-
assertThat(resultSetMetaData.getPrecision(4)).isEqualTo(0);
188-
assertThat(resultSetMetaData.getPrecision(5)).isEqualTo(26);
189-
assertThat(resultSetMetaData.getPrecision(6)).isEqualTo(0);
190-
assertThat(resultSetMetaData.getPrecision(7)).isEqualTo(0);
191-
assertThat(resultSetMetaData.getPrecision(8)).isEqualTo(0);
192-
assertThat(resultSetMetaData.getPrecision(9)).isEqualTo(0);
193-
assertThat(resultSetMetaData.getPrecision(10)).isEqualTo(12);
194-
assertThat(resultSetMetaData.getPrecision(11)).isEqualTo(77);
195-
assertThat(resultSetMetaData.getPrecision(12)).isEqualTo(15);
196-
assertThat(resultSetMetaData.getPrecision(13)).isEqualTo(10);
197-
}
198-
199152
@Test
200153
public void testSigned() throws SQLException {
201154
assertThat(resultSetMetaData.isSigned(4)).isFalse();

0 commit comments

Comments
 (0)