tbel: new ver 1.2.6 add test for docs: Unmodifiable

This commit is contained in:
nick 2025-02-28 18:38:22 +02:00
parent 441940c497
commit 60419cdb4c
2 changed files with 66 additions and 4 deletions

View File

@ -21,6 +21,7 @@ import org.thingsboard.script.api.tbel.TbDate;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Base64; import java.util.Base64;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
@ -660,14 +661,13 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
"""; """;
decoderStr = """ decoderStr = """
var list = msg.list; var list = msg.list;
var listAdd = ["thigsboard", 4, 67];
return { return {
list: list.clone(), list: list.clone(),
length: list.length(), length: list.length(),
memorySize: list.memorySize(), memorySize: list.memorySize(),
indOf1: list.indexOf("B", 1), indOf1: list.indexOf("B", 1),
indOf2: list.indexOf(2, 2), indOf2: list.indexOf(2, 2),
sStr: list.validateClazzInArrayIsOnlyString() sStr: list.validateClazzInArrayIsOnlyNumber()
} }
"""; """;
ArrayList list = new ArrayList<>(List.of(67, 2, 2, 2)); ArrayList list = new ArrayList<>(List.of(67, 2, 2, 2));
@ -677,7 +677,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
expected.put("memorySize", 32L); expected.put("memorySize", 32L);
expected.put("indOf1", -1); expected.put("indOf1", -1);
expected.put("indOf2", 2); expected.put("indOf2", 2);
expected.put("sStr", false); expected.put("sStr", true);
Object actual = invokeScript(evalScript(decoderStr), msgStr); Object actual = invokeScript(evalScript(decoderStr), msgStr);
assertEquals(expected, actual); assertEquals(expected, actual);
} }
@ -2148,6 +2148,68 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
assertEquals(expected, actual); assertEquals(expected, actual);
} }
@Test
public void toUnmodifiableExecutionArrayList_Test() throws ExecutionException, InterruptedException {
msgStr = "{}";
decoderStr = String.format("""
var original = [];
original.add(0x35);
var unmodifiable = original.toUnmodifiable();
msg.result = unmodifiable;
return {msg: msg};
""");
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
List expectedList = Arrays.asList(0x35);
LinkedHashMap<String, Object> expectedResult = new LinkedHashMap<>();
expectedResult.put("result", expectedList);
expected.put("msg", expectedResult);
Object actual = invokeScript(evalScript(decoderStr), msgStr);
assertEquals(expected, actual);
decoderStr = String.format("""
var original = [];
original.add(0x67);
var unmodifiable = original.toUnmodifiable();
unmodifiable.add(0x35);
msg.result = unmodifiable;
return {msg: msg};
""");
assertThatThrownBy(() -> {
invokeScript(evalScript(decoderStr), msgStr);
}).hasMessageContaining("Error: unmodifiable.add(0x35): List is unmodifiable");
}
@Test
public void toUnmodifiableExecutionHashMap_Test() throws ExecutionException, InterruptedException {
msgStr = "{}";
decoderStr = String.format("""
var original = {};
original.putIfAbsent("entry1", 73);
var unmodifiable = original.toUnmodifiable();
msg.result = unmodifiable;
return {msg: msg};
""");
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
LinkedHashMap<String, Object> expectedMap = new LinkedHashMap<>(Map.of("entry1", 73));
LinkedHashMap<String, Object> expectedResult = new LinkedHashMap<>();
expectedResult.put("result", expectedMap);
expected.put("msg", expectedResult);
Object actual = invokeScript(evalScript(decoderStr), msgStr);
assertEquals(expected, actual);
decoderStr = String.format("""
var original = {};
original.humidity = 73;
var unmodifiable = original.toUnmodifiable();
unmodifiable.put("temperature1", 96);
msg.result = unmodifiable;
return {msg: msg};
""");
assertThatThrownBy(() -> {
invokeScript(evalScript(decoderStr), msgStr);
}).hasMessageContaining("Error: unmodifiable.put(\"temperature1\", 96): Map is unmodifiable");
}
private List splice(List oldList, int start, int deleteCount, Object... values) { private List splice(List oldList, int start, int deleteCount, Object... values) {
start = initStartIndex(oldList, start); start = initStartIndex(oldList, start);

View File

@ -83,7 +83,7 @@
<zookeeper.version>3.9.2</zookeeper.version> <zookeeper.version>3.9.2</zookeeper.version>
<protobuf.version>3.25.5</protobuf.version> <!-- A Major v4 does not support by the pubsub yet--> <protobuf.version>3.25.5</protobuf.version> <!-- A Major v4 does not support by the pubsub yet-->
<grpc.version>1.63.0</grpc.version> <grpc.version>1.63.0</grpc.version>
<tbel.version>1.2.5</tbel.version> <tbel.version>1.2.6</tbel.version>
<lombok.version>1.18.32</lombok.version> <lombok.version>1.18.32</lombok.version>
<paho.client.version>1.2.5</paho.client.version> <paho.client.version>1.2.5</paho.client.version>
<paho.mqttv5.client.version>1.2.5</paho.mqttv5.client.version> <paho.mqttv5.client.version>1.2.5</paho.mqttv5.client.version>