Skip to content

Commit 78ab248

Browse files
committed
add regular type tests
1 parent 8529c9b commit 78ab248

2 files changed

Lines changed: 35 additions & 38 deletions

File tree

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

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,27 @@
2929
import com.google.cloud.bigquery.FieldList;
3030
import com.google.cloud.bigquery.Schema;
3131
import com.google.cloud.bigquery.StandardSQLTypeName;
32+
import com.google.cloud.bigquery.jdbc.rules.TimeZoneRule;
33+
import org.junit.jupiter.api.extension.RegisterExtension;
3234
import com.google.cloud.bigquery.storage.v1.ArrowRecordBatch;
3335
import com.google.cloud.bigquery.storage.v1.ArrowSchema;
3436
import com.google.common.collect.ImmutableList;
3537
import java.io.IOException;
3638
import java.math.BigDecimal;
3739
import java.sql.Array;
40+
import java.sql.Date;
3841
import java.sql.ResultSet;
3942
import java.sql.SQLException;
4043
import java.sql.Struct;
44+
import java.sql.Time;
45+
import java.sql.Timestamp;
4146
import java.time.LocalDate;
4247
import java.time.LocalDateTime;
4348
import java.time.LocalTime;
4449
import java.util.Arrays;
50+
import java.util.Calendar;
4551
import java.util.List;
52+
import java.util.TimeZone;
4653
import java.util.concurrent.BlockingQueue;
4754
import java.util.concurrent.LinkedBlockingDeque;
4855
import java.util.stream.Stream;
@@ -71,6 +78,13 @@
7178

7279
public class BigQueryArrowResultSetTest {
7380

81+
static {
82+
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
83+
TimeZoneCache.reset();
84+
}
85+
86+
@RegisterExtension public static final TimeZoneRule timeZoneRule = new TimeZoneRule("UTC");
87+
7488
private static final FieldList fieldList =
7589
FieldList.of(
7690
Field.of("boolField", StandardSQLTypeName.BOOL),
@@ -374,7 +388,13 @@ public static Stream<Arguments> successfulCoercionCases() {
374388
Arguments.of("float64Field", Double.class, 1.1),
375389
Arguments.of("stringField", String.class, "text1"),
376390
Arguments.of("numericField", BigDecimal.class, BigDecimal.ONE),
377-
Arguments.of(9, Long.class, 1L));
391+
Arguments.of(9, Long.class, 1L),
392+
Arguments.of("timeField", Time.class, new Time(1234L)),
393+
Arguments.of(10, Time.class, new Time(1234L)),
394+
Arguments.of("timeStampField", Timestamp.class, new Timestamp(10L)),
395+
Arguments.of(5, Timestamp.class, new Timestamp(10L)),
396+
Arguments.of("dateField", Date.class, new Date(0L)),
397+
Arguments.of(11, Date.class, new Date(0L)));
378398
}
379399

380400
public static Stream<Arguments> failingCoercionCases() {
@@ -409,6 +429,7 @@ public void testGetObjectWithType_failure(Object column, Class<?> type) throws S
409429
}
410430
}
411431

432+
412433
private int resultSetRowCount(BigQueryArrowResultSet resultSet) throws SQLException {
413434
int rowCount = 0;
414435
while (resultSet.next()) {

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

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,12 @@
6666

6767
public class BigQueryJsonResultSetTest {
6868

69-
@RegisterExtension public final TimeZoneRule timeZoneRule = new TimeZoneRule("UTC");
69+
static {
70+
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
71+
TimeZoneCache.reset();
72+
}
73+
74+
@RegisterExtension public static final TimeZoneRule timeZoneRule = new TimeZoneRule("UTC");
7075

7176
private static final FieldList fieldList =
7277
FieldList.of(
@@ -436,41 +441,6 @@ public void testIterationNested() throws SQLException {
436441
assertThat(bigQueryJsonResultSetNested.isAfterLast()).isTrue();
437442
}
438443

439-
@Test
440-
public void testTime() throws SQLException {
441-
assertThat(resetResultSet()).isTrue();
442-
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("EST"));
443-
Time expectedTime = new Time(TimeUnit.NANOSECONDS.toMillis(aTime.toNanoOfDay()));
444-
assertThat(bigQueryJsonResultSet.getTime(12))
445-
.isEqualTo(bigQueryJsonResultSet.getTime(12, calendar));
446-
assertThat(expectedTime).isEqualTo(bigQueryJsonResultSet.getTime(12, calendar));
447-
assertThat(bigQueryJsonResultSet.getTime("twelfth"))
448-
.isEqualTo(bigQueryJsonResultSet.getTime("twelfth", calendar));
449-
}
450-
451-
@Test
452-
public void testTimestamp() throws SQLException {
453-
assertThat(resetResultSet()).isTrue();
454-
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("EST"));
455-
Timestamp time = bigQueryJsonResultSet.getTimestamp(5);
456-
Timestamp timeWithCal = bigQueryJsonResultSet.getTimestamp(5, calendar);
457-
assertThat(time).isEqualTo(timeWithCal);
458-
assertThat(bigQueryJsonResultSet.getTimestamp("fifth"))
459-
.isEqualTo(bigQueryJsonResultSet.getTimestamp("fifth"));
460-
}
461-
462-
@Test
463-
public void testDate() throws SQLException {
464-
assertThat(resetResultSet()).isTrue();
465-
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("EST"));
466-
// epoc should match
467-
assertThat(bigQueryJsonResultSet.getDate(14).getTime())
468-
.isEqualTo(bigQueryJsonResultSet.getDate(14, calendar).getTime());
469-
assertThat(Date.valueOf("2020-01-15").getTime())
470-
.isEqualTo(bigQueryJsonResultSet.getDate(14, calendar).getTime());
471-
assertThat(bigQueryJsonResultSet.getDate("fourteenth").getTime())
472-
.isEqualTo(bigQueryJsonResultSet.getDate("fourteenth", calendar).getTime());
473-
}
474444

475445
public static Stream<Arguments> successfulCoercionCases() {
476446
return Stream.of(
@@ -493,7 +463,13 @@ public static Stream<Arguments> successfulCoercionCases() {
493463
Arguments.of("tenth", BigDecimal.class, new BigDecimal("12345678")),
494464
Arguments.of(10, Long.class, 12345678L),
495465
Arguments.of("eleventh", BigDecimal.class, new BigDecimal("12345678.99")),
496-
Arguments.of(11, Double.class, 12345678.99D));
466+
Arguments.of(11, Double.class, 12345678.99D),
467+
Arguments.of("twelfth", Time.class, new Time(40459820L)),
468+
Arguments.of(12, Time.class, new Time(40459820L)),
469+
Arguments.of("fifth", Timestamp.class, new Timestamp(1680174859820L)),
470+
Arguments.of(5, Timestamp.class, new Timestamp(1680174859820L)),
471+
Arguments.of("fourteenth", Date.class, Date.valueOf("2020-01-15")),
472+
Arguments.of(14, Date.class, Date.valueOf("2020-01-15")));
497473
}
498474

499475
public static Stream<Arguments> failingCoercionCases() {

0 commit comments

Comments
 (0)