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 188599a530..d72dd87992 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 @@ -1697,6 +1697,62 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest { assertEquals(4.2d, actual); } + // Bitwise Operations + @Test + public void bitwiseOperationsBoolean_Test() throws ExecutionException, InterruptedException { + msgStr = "{}"; + decoderStr = """ + var x = true; + var y = false; + return { + "andResult": x & y, + "orResult": x | y, + "xorResult": x ^ y, + "leftShift": x << y, + "rightShift": x >> y, + "rightUnShift": x >>> y + } + """; + LinkedHashMap expected = new LinkedHashMap<>(); + expected.put("andResult", 0); + expected.put("orResult", 1); + expected.put("xorResult", 1); + expected.put("leftShift", 1); + expected.put("rightShift", 1); + expected.put("rightUnShift", 1); + Object actual = invokeScript(evalScript(decoderStr), msgStr); + assertEquals(expected, actual); + } + @Test + public void bitwiseOperationsMix_Test() throws ExecutionException, InterruptedException { + msgStr = "{}"; + decoderStr = """ + var x = true; + var y = false; + var i = 10; + var b = -14; + var l = 9223372036854775807; + return { + "andResult": x & b, + "orResult": i | y, + "xorResult": i ^ l, + "leftShift": l << i, + "rightShift": l >> b, + "rightUnShift": i >>> x + } + """; + LinkedHashMap expected = new LinkedHashMap<>(); + expected.put("andResult", 0); + expected.put("orResult", 10); + expected.put("xorResult", 9223372036854775797L); + expected.put("leftShift", -1024L); + expected.put("rightShift", 8191L); + expected.put("rightUnShift", 5); + Object actual = invokeScript(evalScript(decoderStr), msgStr); + assertEquals(expected, actual); + } + + // base64 @Test public void base64_Test() throws ExecutionException, InterruptedException {