improve ToDate semantics and docs

This commit is contained in:
Jonathan Shook 2021-06-17 12:04:15 -05:00
parent 0edbfb1f26
commit 9403f51f3a
2 changed files with 39 additions and 6 deletions

View File

@ -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.Categories;
import io.nosqlbench.virtdata.api.annotations.Category; import io.nosqlbench.virtdata.api.annotations.Category;
import io.nosqlbench.virtdata.api.annotations.Example;
import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper; import io.nosqlbench.virtdata.api.annotations.ThreadSafeMapper;
import java.util.Date; import java.util.Date;
import java.util.function.LongFunction; 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 @ThreadSafeMapper
@Categories({Category.datetime}) @Categories({Category.datetime})
public class ToDate implements LongFunction<Date> { public class ToDate implements LongFunction<Date> {
private long spacing; private final long spacing;
private long repeat_count; private final long repeat_count;
public ToDate(int spacing, int repeat_count){ @Example({"ToDate(86400000,2)","produce two Date values per day"})
this.spacing = spacing; public ToDate(int millis_multiplier, int millis_divisor){
this.repeat_count = repeat_count; this.spacing = millis_multiplier;
this.repeat_count = millis_divisor;
} }
@Example({"ToDate(86400000)","produce a single Date() per day"})
public ToDate(int spacing){ public ToDate(int spacing){
this(spacing, 1); this(spacing, 1);
} }

View File

@ -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));
}
}