From bb5d0233fc3f42fed16d2828cd5363a6a6e25f4e Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 5 Mar 2025 14:57:23 +0200 Subject: [PATCH] tbel: tbDate test function with TZ => "UTC" --- .../service/script/TbelInvokeDocsIoTest.java | 101 +++++++++++------- 1 file changed, 61 insertions(+), 40 deletions(-) diff --git a/application/src/test/java/org/thingsboard/server/service/script/TbelInvokeDocsIoTest.java b/application/src/test/java/org/thingsboard/server/service/script/TbelInvokeDocsIoTest.java index 8b6c739d31..bf86f98e6e 100644 --- a/application/src/test/java/org/thingsboard/server/service/script/TbelInvokeDocsIoTest.java +++ b/application/src/test/java/org/thingsboard/server/service/script/TbelInvokeDocsIoTest.java @@ -2238,46 +2238,49 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest { @Test public void tbDateFunction_Test() throws ExecutionException, InterruptedException { + String stringDateUTC = "2024-01-01T10:00:00.00Z"; + TbDate d = new TbDate(stringDateUTC); + msgStr = "{}"; decoderStr = String.format(""" - var d = new Date(2024, 1, 1, 10, 0, 0, 0); // TZ => "UTC" - var dIsoY1 = d.toISOString(); // return 2024-01-01T08:00:00Z + var d = new Date("%s"); // TZ => "UTC" + var dIsoY1 = d.toISOString(); // return 2024-01-01T10:00:00Z d.addYears(1); - var dIsoY2 = d.toISOString(); // return 2025-01-01T08:00:00Z + var dIsoY2 = d.toISOString(); // return 2025-01-01T10:00:00Z d.addYears(-2); - var dIsoY3 = d.toISOString(); // return 2023-01-01T08:00:00Z + var dIsoY3 = d.toISOString(); // return 2023-01-01T10:00:00Z d.addMonths(2); - var dIsoM1 = d.toISOString(); // return 2023-03-01T08:00:00Z + var dIsoM1 = d.toISOString(); // return 2023-03-01T10:00:00Z d.addMonths(10); - var dIsoM2 = d.toISOString(); // return 2024-01-01T08:00:00Z + var dIsoM2 = d.toISOString(); // return 2024-01-01T10:00:00Z d.addMonths(-13); - var dIsoM3 = d.toISOString(); // return 2022-12-01T08:00:00Z + var dIsoM3 = d.toISOString(); // return 2022-12-01T10:00:00Z d.addWeeks(4); - var dIsoW1 = d.toISOString(); // return 2022-12-29T08:00:00Z + var dIsoW1 = d.toISOString(); // return 2022-12-29T10:00:00Z d.addWeeks(-5); - var dIsoW2 = d.toISOString(); // return 2022-11-24T08:00:00Z + var dIsoW2 = d.toISOString(); // return 2022-11-24T10:00:00Z d.addDays(6); - var dIsoD1 = d.toISOString(); // return 2022-11-30T08:00:00Z + var dIsoD1 = d.toISOString(); // return 2022-11-30T10:00:00Z d.addDays(45); - var dIsoD2 = d.toISOString(); // return 2023-01-14T08:00:00Z + var dIsoD2 = d.toISOString(); // return 2023-01-14T10:00:00Z d.addDays(-50); - var dIsoD3 = d.toISOString(); // return 2022-11-25T08:00:00Z + var dIsoD3 = d.toISOString(); // return 2022-11-25T10:00:00Z d.addHours(23); - var dIsoH1 = d.toISOString(); // return 2022-11-26T07:00:00Z + var dIsoH1 = d.toISOString(); // return 2022-11-26T09:00:00Z d.addHours(-47); - var dIsoH2 = d.toISOString(); // return 2022-11-24T08:00:00Z + var dIsoH2 = d.toISOString(); // return 2022-11-24T10:00:00Z d.addMinutes(59); - var dIsoMin1 = d.toISOString(); // return 2022-11-24T08:59:00Z + var dIsoMin1 = d.toISOString(); // return 2022-11-24T10:59:00Z d.addMinutes(-60); - var dIsoMin2 = d.toISOString(); // return 2022-11-24T07:59:00Z + var dIsoMin2 = d.toISOString(); // return 2022-11-24T09:59:00Z d.addSeconds(59); - var dIsoS1 = d.toISOString(); // return 2022-11-24T07:59:59Z + var dIsoS1 = d.toISOString(); // return 2022-11-24T09:59:59Z d.addSeconds(-60); - var dIsoS2 = d.toISOString(); // return 2022-11-24T07:58:59Z + var dIsoS2 = d.toISOString(); // return 2022-11-24T09:58:59Z d.addNanos(999999); - var dIsoN1 = d.toISOString(); // return 2022-11-24T07:58:59.000999999Z + var dIsoN1 = d.toISOString(); // return 2022-11-24T09:58:59.000999999Z d.addNanos(-1000000); - var dIsoN2 = d.toISOString(); // return 2022-11-24T07:58:58.999999999Z + var dIsoN2 = d.toISOString(); // return 2022-11-24T09:58:58.999999999Z return { "dIsoY1": dIsoY1, "dIsoY2": dIsoY2, @@ -2299,27 +2302,45 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest { "dIsoN1": dIsoN1, "dIsoN2": dIsoN2 } - """); + """, stringDateUTC); LinkedHashMap expected = new LinkedHashMap<>(); - expected.put("dIsoY1", "2024-01-01T08:00:00Z"); - expected.put("dIsoY2", "2025-01-01T08:00:00Z"); - expected.put("dIsoY3", "2023-01-01T08:00:00Z"); - expected.put("dIsoM1", "2023-03-01T08:00:00Z"); - expected.put("dIsoM2", "2024-01-01T08:00:00Z"); - expected.put("dIsoM3", "2022-12-01T08:00:00Z"); - expected.put("dIsoW1", "2022-12-29T08:00:00Z"); - expected.put("dIsoW2", "2022-11-24T08:00:00Z"); - expected.put("dIsoD1", "2022-11-30T08:00:00Z"); - expected.put("dIsoD2", "2023-01-14T08:00:00Z"); - expected.put("dIsoD3", "2022-11-25T08:00:00Z"); - expected.put("dIsoH1", "2022-11-26T07:00:00Z"); - expected.put("dIsoH2", "2022-11-24T08:00:00Z"); - expected.put("dIsoMin1", "2022-11-24T08:59:00Z"); - expected.put("dIsoMin2", "2022-11-24T07:59:00Z"); - expected.put("dIsoS1", "2022-11-24T07:59:59Z"); - expected.put("dIsoS2", "2022-11-24T07:58:59Z"); - expected.put("dIsoN1", "2022-11-24T07:58:59.000999999Z"); - expected.put("dIsoN2", "2022-11-24T07:58:58.999999999Z"); + expected.put("dIsoY1", d.toISOString()); + d.addYears(1); + expected.put("dIsoY2", d.toISOString()); + d.addYears(-2); + expected.put("dIsoY3", d.toISOString()); + d.addMonths(2); + expected.put("dIsoM1", d.toISOString()); + d.addMonths(10); + expected.put("dIsoM2", d.toISOString()); + d.addMonths(-13); + expected.put("dIsoM3", d.toISOString()); + d.addWeeks(4); + expected.put("dIsoW1", d.toISOString()); + d.addWeeks(-5); + expected.put("dIsoW2", d.toISOString()); + d.addDays(6); + expected.put("dIsoD1", d.toISOString()); + d.addDays(45); + expected.put("dIsoD2", d.toISOString()); + d.addDays(-50); + expected.put("dIsoD3", d.toISOString()); + d.addHours(23); + expected.put("dIsoH1", d.toISOString()); + d.addHours(-47); + expected.put("dIsoH2", d.toISOString()); + d.addMinutes(59); + expected.put("dIsoMin1", d.toISOString()); + d.addMinutes(-60); + expected.put("dIsoMin2", d.toISOString()); + d.addSeconds(59); + expected.put("dIsoS1", d.toISOString()); + d.addSeconds(-60); + expected.put("dIsoS2", d.toISOString()); + d.addNanos(999999); + expected.put("dIsoN1", d.toISOString()); + d.addNanos(-1000000); + expected.put("dIsoN2", d.toISOString()); Object actual = invokeScript(evalScript(decoderStr), msgStr); assertEquals(expected, actual); }