DBZ-1405 Misc adjustments;
* Adding test * Removing remaining double variables
This commit is contained in:
parent
d6353dd519
commit
9de7c25d60
@ -6,8 +6,8 @@
|
||||
|
||||
package io.debezium.time;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
import org.apache.kafka.connect.data.Schema;
|
||||
import org.apache.kafka.connect.data.SchemaBuilder;
|
||||
|
||||
@ -61,13 +61,13 @@ private NanoDuration() {
|
||||
* @param minutes a number of minutes
|
||||
* @param seconds a number of seconds
|
||||
* @param nanos a number of nanoseconds
|
||||
* @return a {@link BigDecimal} value which contains the number of nanoseconds, never {@code null}
|
||||
* @return Approximate representation of the given interval as a number of nanoseconds
|
||||
*/
|
||||
public static double durationNanos(int years, int months, int days, int hours, int minutes, double seconds, long nanos) {
|
||||
public static long durationNanos(int years, int months, int days, int hours, int minutes, long seconds, long nanos) {
|
||||
long daysPerMonthAvg = ChronoUnit.MONTHS.getDuration().toDays();
|
||||
double numberOfDays = ((years * 12) + months) * daysPerMonthAvg + days;
|
||||
double numberOfSeconds = (((numberOfDays * 24 + hours) * 60) + minutes) * 60 + seconds;
|
||||
return numberOfSeconds * 1e9 + nanos;
|
||||
long numberOfDays = ((years * 12) + months) * daysPerMonthAvg + days;
|
||||
long numberOfSeconds = (((numberOfDays * 24 + hours) * 60) + minutes) * 60 + seconds;
|
||||
return numberOfSeconds * ChronoUnit.SECONDS.getDuration().toNanos() + nanos;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -79,10 +79,9 @@ public static double durationNanos(int years, int months, int days, int hours, i
|
||||
* @param hours a number of hours
|
||||
* @param minutes a number of minutes
|
||||
* @param seconds a number of seconds
|
||||
* from {@link ChronoUnit#MONTHS} is used.
|
||||
* @return a {@link BigDecimal} value which contains the number of nanoseconds, never {@code null}
|
||||
* @return Approximate representation of the given interval as a number of nanoseconds
|
||||
*/
|
||||
public static double durationNanos(int years, int months, int days, int hours, int minutes, double seconds) {
|
||||
public static long durationNanos(int years, int months, int days, int hours, int minutes, long seconds) {
|
||||
return durationNanos(years, months, days, hours, minutes, seconds, 0);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright Debezium Authors.
|
||||
*
|
||||
* Licensed under the Apache Software License version 2.0, available at http://www.apache.org/licenses/LICENSE-2.0
|
||||
*/
|
||||
package io.debezium.time;
|
||||
|
||||
import static org.fest.assertions.Assertions.assertThat;
|
||||
|
||||
import java.time.temporal.ChronoUnit;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import io.debezium.doc.FixFor;
|
||||
|
||||
public class NanoDurationTest {
|
||||
|
||||
@Test
|
||||
@FixFor("DBZ-1405")
|
||||
public void testNanoDuration() {
|
||||
long years = 6 * 12 * 30 * ChronoUnit.DAYS.getDuration().toNanos();
|
||||
long months = 7 * 30 * ChronoUnit.DAYS.getDuration().toNanos();
|
||||
long days = 1 * ChronoUnit.DAYS.getDuration().toNanos();
|
||||
long hours = 2 * ChronoUnit.HOURS.getDuration().toNanos();
|
||||
long minutes = 3 * ChronoUnit.MINUTES.getDuration().toNanos();
|
||||
long seconds = 4 * ChronoUnit.SECONDS.getDuration().toNanos();
|
||||
long nanos = 5;
|
||||
|
||||
assertThat(NanoDuration.durationNanos(6, 7, 1, 2, 3, 4, 5)).isEqualTo(years + months + days + hours + minutes + seconds + nanos);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user