From 9403f51f3abd508cf2af049681ca2563c4595840 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Thu, 17 Jun 2021 12:04:15 -0500 Subject: [PATCH] improve ToDate semantics and docs --- .../from_long/to_time_types/ToDate.java | 17 +++++++---- .../from_long/to_time_types/ToDateTest.java | 28 +++++++++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_time_types/ToDateTest.java diff --git a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_time_types/ToDate.java b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_time_types/ToDate.java index 93ed0b6a2..c57f6adee 100644 --- a/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_time_types/ToDate.java +++ b/virtdata-lib-basics/src/main/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_time_types/ToDate.java @@ -38,25 +38,30 @@ package io.nosqlbench.virtdata.library.basics.shared.from_long.to_time_types; import io.nosqlbench.virtdata.api.annotations.Categories; import io.nosqlbench.virtdata.api.annotations.Category; +import io.nosqlbench.virtdata.api.annotations.Example; import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; import java.util.Date; import java.util.function.LongFunction; /** - * Convert the input value to a {@code Date} + * Convert the input value to a {@code Date}, by multiplying and then dividing + * the input by the provided parameters. */ @ThreadSafeMapper @Categories({Category.datetime}) public class ToDate implements LongFunction { - private long spacing; - private long repeat_count; + private final long spacing; + private final long repeat_count; - public ToDate(int spacing, int repeat_count){ - this.spacing = spacing; - this.repeat_count = repeat_count; + @Example({"ToDate(86400000,2)","produce two Date values per day"}) + public ToDate(int millis_multiplier, int millis_divisor){ + this.spacing = millis_multiplier; + this.repeat_count = millis_divisor; } + + @Example({"ToDate(86400000)","produce a single Date() per day"}) public ToDate(int spacing){ this(spacing, 1); } diff --git a/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_time_types/ToDateTest.java b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_time_types/ToDateTest.java new file mode 100644 index 000000000..dc537006b --- /dev/null +++ b/virtdata-lib-basics/src/test/java/io/nosqlbench/virtdata/library/basics/shared/from_long/to_time_types/ToDateTest.java @@ -0,0 +1,28 @@ +package io.nosqlbench.virtdata.library.basics.shared.from_long.to_time_types; + +import org.junit.jupiter.api.Test; + +import java.util.Date; + +import static org.assertj.core.api.Assertions.assertThat; + +class ToDateTest { + + @Test + public void testToDateSimple() { + ToDate f = new ToDate(5); + assertThat(f.apply(0)).isEqualTo(new Date(0)); + assertThat(f.apply(1)).isEqualTo(new Date(5)); + assertThat(f.apply(100)).isEqualTo(new Date(500)); + } + + @Test + public void testToDateWithRepeats() { + ToDate f = new ToDate(86400000,2); + assertThat(f.apply(0)).isEqualTo(new Date(0)); + assertThat(f.apply(1)).isEqualTo(new Date((86400000/2))); + assertThat(f.apply(2)).isEqualTo(new Date((2*86400000)/2)); + assertThat(f.apply(3)).isEqualTo(new Date((3*86400000)/2)); + } + +}