diff --git a/jmeos-core/src/main/java/types/basic/tnumber/TNumber.java b/jmeos-core/src/main/java/types/basic/tnumber/TNumber.java index 4d17da6ed..ce889ad6a 100644 --- a/jmeos-core/src/main/java/types/basic/tnumber/TNumber.java +++ b/jmeos-core/src/main/java/types/basic/tnumber/TNumber.java @@ -841,33 +841,28 @@ default List value_split(int size, int start){ */ default List value_time_split(Object duration, int value_size, int value_start, Object time_start){ - OffsetDateTime st= null; - Pointer dt= null; - if(time_start != null){ + OffsetDateTime st; + if(time_start == null){ st= GeneratedFunctions.timestamptz_in("2000-01-03", -1); } + else if(time_start instanceof LocalDateTime){ + st= ConversionUtils.datetimeToTimestampTz((LocalDateTime) time_start); + } + else{ + st= GeneratedFunctions.timestamptz_in(time_start.toString(), -1); + } + Pointer dt; + if(duration instanceof Duration){ + dt= ConversionUtils.timedelta_to_interval((Duration) duration); + } else{ - if(time_start instanceof LocalDateTime){ - st= ConversionUtils.datetimeToTimestampTz((LocalDateTime) time_start); - } - else{ - st= GeneratedFunctions.timestamptz_in(time_start.toString(), -1); - } - - if(duration instanceof Duration){ - dt= ConversionUtils.timedelta_to_interval((Duration) duration); - } - else{ - dt= GeneratedFunctions.interval_in(duration.toString(), -1); - } + dt= GeneratedFunctions.interval_in(duration.toString(), -1); } // Create a JNR-FFI runtime instance Runtime runtime = Runtime.getSystemRuntime(); // Allocate memory for an integer (4 bytes) but do not set a value Pointer intPointer = Memory.allocate(runtime, 4); - Pointer valueListPointer = createEmptyPointerArray(runtime, value_size); - Pointer timeListPointer = createEmptyPointerArray(runtime, value_size); - Pointer p= GeneratedFunctions.tint_value_time_split(this.getNumberInner(), value_size, dt, value_start, st, valueListPointer, timeListPointer, intPointer); + Pointer p= GeneratedFunctions.tint_value_time_split(this.getNumberInner(), value_size, dt, value_start, st, null, null, intPointer); List tempList= new ArrayList<>(); int count= intPointer.getInt(0); for(int i=0;i fragments = source.value_time_split(day, 2, 0, start); + assertEquals(3, fragments.size()); + assertEquals("{[1@2019-09-01 00:00:00+00, 1@2019-09-02 00:00:00+00)}", ((TInt) fragments.get(0)).to_string()); + assertEquals("{[1@2019-09-02 00:00:00+00, 1@2019-09-03 00:00:00+00)}", ((TInt) fragments.get(1)).to_string()); + assertEquals("{[5@2019-09-03 00:00:00+00]}", ((TInt) fragments.get(2)).to_string()); + } + java.util.List fragments = source.value_time_split(day, 2, 0, LocalDateTime.of(2019, 9, 1, 12, 0)); + assertEquals(4, fragments.size()); + assertEquals("{[1@2019-09-01 00:00:00+00, 1@2019-09-01 12:00:00+00)}", ((TInt) fragments.get(0)).to_string()); + assertEquals("{[1@2019-09-01 12:00:00+00, 1@2019-09-02 12:00:00+00)}", ((TInt) fragments.get(1)).to_string()); + assertEquals("{[1@2019-09-02 12:00:00+00, 1@2019-09-03 00:00:00+00)}", ((TInt) fragments.get(2)).to_string()); + assertEquals("{[5@2019-09-03 00:00:00+00]}", ((TInt) fragments.get(3)).to_string()); + } }