tbel fix_bug tbDate from String without TZ add test

This commit is contained in:
nick 2023-12-05 22:27:59 +02:00
parent b58befc4a0
commit 91552b18b8

View File

@ -15,8 +15,6 @@
*/
package org.thingsboard.script.api.tbel;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@ -454,6 +452,7 @@ class TbDateTest {
@Test
void Test_Year_Moth_Date_Hours_Min_Sec_Without_TZ() {
TbDate d = new TbDate(2023, 8, 18);
Assert.assertEquals("2023-08-18 00:00:00", d.toLocaleString());
d = new TbDate(2023, 9, 17, 17, 34);
@ -466,6 +465,64 @@ class TbDateTest {
Assert.assertEquals("2023-09-07 08:04:05", d.toLocaleString());
}
@Test
void Test_DateString_With_TZ() {
int date = 7;
int tz = -4;
int hrs = 8;
String pattern = "2023-09-%s %s:04:05";
String tzStr = "-04:00:00";
String dateStr = "2023-09-0" + date + "T0" + hrs + ":04:05.123" + tzStr;
TbDate d = new TbDate(dateStr);
int localOffsetHrs = ZoneId.systemDefault().getRules().getOffset(d.getInstant()).getTotalSeconds()/60/60;
TbDateTestEntity tbDateTest = new TbDateTestEntity(23, 9, date, hrs + localOffsetHrs - tz);
String expected = String.format(pattern, tbDateTest.geDateStr(), tbDateTest.geHoursStr());
Assert.assertEquals(expected, d.toLocaleString());
tz = +5;
tzStr = "+05:00";
dateStr = "2023-09-0" + date + "T0" + hrs + ":04:05.123" + tzStr;
d = new TbDate(dateStr);
localOffsetHrs = ZoneId.systemDefault().getRules().getOffset(d.getInstant()).getTotalSeconds()/60/60;
tbDateTest = new TbDateTestEntity(23, 9, date, hrs + localOffsetHrs - tz);
expected = String.format(pattern, tbDateTest.geDateStr(), tbDateTest.geHoursStr());
Assert.assertEquals(expected, d.toLocaleString());
tz = -2;
tzStr = "-02";
dateStr = "2023-09-0" + date + "T0" + hrs + ":04:05.123" + tzStr;
d = new TbDate(dateStr);
localOffsetHrs = ZoneId.systemDefault().getRules().getOffset(d.getInstant()).getTotalSeconds()/60/60;
tbDateTest = new TbDateTestEntity(23, 9, date, hrs + localOffsetHrs - tz);
expected = String.format(pattern, tbDateTest.geDateStr(), tbDateTest.geHoursStr());
Assert.assertEquals(expected, d.toLocaleString());
}
@Test
void Test_DateString_Without_TZ() {
String dateStr = "2023-08-06T04:04:05.123";
String expected = "2023-08-06 04:04:05";
TbDate d = new TbDate(dateStr);
Assert.assertEquals(expected, d.toLocaleString());
}
@Test
void Test_DateString_Without_FailedTZ() {
try {
TbDate d = new TbDate("2023-08-06T04:04:05.123+04:00:00:00");
Assert.fail("Should throw ConversionException");
} catch (ConversionException e) {
Assert.assertTrue(e.getMessage().contains("Cannot parse value [2023-08-06T04:04:05.123+04:00:00:00] as instant"));
}
try {
TbDate d = new TbDate("2023-08-06T04:04:05.123+4");
Assert.fail("Should throw ConversionException");
} catch (ConversionException e) {
Assert.assertTrue(e.getMessage().contains("Cannot parse value [2023-08-06T04:04:05.123+4] as instant"));
}
}
@Test
void Test_Get_LocalDateTime_With_TZ() {
int hrs = 8;