Skip to content

Commit

Permalink
Added more tests:
Browse files Browse the repository at this point in the history
Total conversion pairs      = 685
Conversion pairs tested     = 656
Conversion pairs not tested = 29
  • Loading branch information
jdereg committed Mar 20, 2024
1 parent 319d6c0 commit 75d5241
Show file tree
Hide file tree
Showing 6 changed files with 144 additions and 168 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
Expand Down Expand Up @@ -112,6 +114,12 @@ static String toString(Object from, Converter converter) {
return DateConversions.toString(cal.getTime(), converter);
}

static OffsetDateTime toOffsetDateTime(Object from, Converter converter) {
Calendar cal = (Calendar) from;
OffsetDateTime offsetDateTime = cal.toInstant().atOffset(ZoneOffset.ofTotalSeconds(cal.getTimeZone().getOffset(cal.getTimeInMillis()) / 1000));
return offsetDateTime;
}

static Map<String, Object> toMap(Object from, Converter converter) {
Calendar cal = (Calendar) from;
Map<String, Object> target = new CompactLinkedMap<>();
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/com/cedarsoftware/util/convert/Converter.java
Original file line number Diff line number Diff line change
Expand Up @@ -577,7 +577,12 @@ private static void buildFactoryConversions() {
CONVERSION_DB.put(pair(Double.class, OffsetDateTime.class), DoubleConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(BigInteger.class, OffsetDateTime.class), BigIntegerConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(BigDecimal.class, OffsetDateTime.class), BigDecimalConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(java.sql.Date.class, OffsetDateTime.class), DateConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(Date.class, OffsetDateTime.class), DateConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(Calendar.class, OffsetDateTime.class), CalendarConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(Timestamp.class, OffsetDateTime.class), TimestampConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(LocalDate.class, OffsetDateTime.class), LocalDateConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(Instant.class, OffsetDateTime.class), InstantConversions::toOffsetDateTime);
CONVERSION_DB.put(pair(ZonedDateTime.class, OffsetDateTime.class), ZonedDateTimeConversions::toOffsetDateTime);

// toOffsetTime
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
Expand Down Expand Up @@ -86,6 +87,10 @@ static Instant toInstant(Object from, Converter converter) {
}
}

static OffsetDateTime toOffsetDateTime(Object from, Converter converter) {
return toInstant(from, converter).atZone(converter.getOptions().getZoneId()).toOffsetDateTime();
}

static LocalDateTime toLocalDateTime(Object from, Converter converter) {
return toZonedDateTime(from, converter).toLocalDateTime();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.TimeZone;
import java.util.concurrent.atomic.AtomicLong;

import com.cedarsoftware.util.CompactLinkedMap;
Expand Down Expand Up @@ -49,6 +52,13 @@ static ZonedDateTime toZonedDateTime(Object from, Converter converter) {
return ((Instant)from).atZone(converter.getOptions().getZoneId());
}

static OffsetDateTime toOffsetDateTime(Object from, Converter converter) {
Instant instant = (Instant) from;
TimeZone timeZone = converter.getOptions().getTimeZone();
ZoneOffset zoneOffset = ZoneOffset.ofTotalSeconds(timeZone.getOffset(System.currentTimeMillis()) / 1000);
return instant.atOffset(zoneOffset);
}

static long toLong(Object from, Converter converter) {
return ((Instant) from).toEpochMilli();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import java.util.TimeZone;
import java.util.concurrent.atomic.AtomicLong;

import com.cedarsoftware.util.CompactLinkedMap;
Expand Down Expand Up @@ -54,6 +57,13 @@ static ZonedDateTime toZonedDateTime(Object from, Converter converter) {
return ZonedDateTime.of(localDate, LocalTime.parse("00:00:00"), converter.getOptions().getZoneId());
}

static OffsetDateTime toOffsetDateTime(Object from, Converter converter) {
LocalDate localDate = (LocalDate) from;
TimeZone timeZone = converter.getOptions().getTimeZone();
ZoneOffset zoneOffset = ZoneOffset.ofTotalSeconds(timeZone.getOffset(System.currentTimeMillis()) / 1000);
return OffsetDateTime.of(localDate, LocalTime.parse("00:00:00"), zoneOffset);
}

static double toDouble(Object from, Converter converter) {
return toInstant(from, converter).toEpochMilli() / 1000d;
}
Expand Down
Loading

0 comments on commit 75d5241

Please sign in to comment.