diff --git a/common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbDateTest.java b/common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbDateTest.java index 594047e1cc..c415f59508 100644 --- a/common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbDateTest.java +++ b/common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbDateTest.java @@ -121,22 +121,29 @@ class TbDateTest { @Test void testToISOStringThreadLocalStaticFormatter() throws ExecutionException, InterruptedException, TimeoutException { executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1)); + int hrs = 14; + String pattern = "2024-02-29T%s:35:42.987Z"; + String tsStr = String.format(pattern, hrs); //Thu Feb 29 2024 14:35:42.987 GMT+0000 + TbDate tbDate = new TbDate(tsStr); long ts = 1709217342987L; //Thu Feb 29 2024 14:35:42.987 GMT+0000 + Assert.assertEquals(ts, tbDate.millis()); int offset = Calendar.getInstance().get(Calendar.ZONE_OFFSET); // for example 3600000 for GMT + 1 - TbDate tbDate = new TbDate(ts - offset); - String datePrefix = "2024-02-29T12:35:42.987Z"; //without time zone + + String datePrefix = tsStr; //without time zone assertThat(tbDate.toISOString()) .as("format in main thread") .startsWith(datePrefix); assertThat(executor.submit(tbDate::toISOString).get(30, TimeUnit.SECONDS)) .as("format in executor thread") .startsWith(datePrefix); + int offsetHrs = offset/1000/60/60; + String datePrefixLocal = String.format(pattern, (hrs - offsetHrs)); assertThat(new TbDate(ts - offset).toISOString()) .as("new instance format in main thread") - .startsWith(datePrefix); + .startsWith(datePrefixLocal); assertThat(executor.submit(() -> new TbDate(ts - offset).toISOString()).get(30, TimeUnit.SECONDS)) .as("new instance format in executor thread") - .startsWith(datePrefix); + .startsWith(datePrefixLocal); } @Test @@ -144,7 +151,6 @@ class TbDateTest { TbDate d = new TbDate(1693962245000L); Assert.assertEquals("2023-09-06T01:04:05Z", d.instant().toString()); - Assert.assertEquals("06.09.23", d.toDateString()); // Depends on time zone, so we just check it works; Assert.assertNotNull(d.toLocaleDateString()); @@ -194,8 +200,6 @@ class TbDateTest { void testToLocaleTimeString() { TbDate d = new TbDate(1693962245000L); - Assert.assertEquals("04:04:05", d.toTimeString()); - // Depends on time zone, so we just check it works; Assert.assertNotNull(d.toLocaleTimeString()); Assert.assertNotNull(d.toLocaleTimeString("en-US")); @@ -306,6 +310,9 @@ class TbDateTest { String stringDateRFC_1123 = "Sat, 3 Jun 2023 11:05:30 GMT"; d = new TbDate(stringDateRFC_1123); Assert.assertEquals("2023-06-03T11:05:30Z", d.instant().toString()); + stringDateRFC_1123 = "Thu, 29 Feb 2024 11:05:30 GMT"; + d = new TbDate(stringDateRFC_1123); + Assert.assertEquals("2024-02-29T11:05:30Z", d.instant().toString()); String stringDateRFC_1123_error = "Tue, 3 Jun 2023 11:05:30 GMT"; Exception exception = assertThrows(ConversionException.class, () -> {