tbel_test_doc: add arrays
This commit is contained in:
parent
777104e620
commit
9dc991a1d8
@ -27,6 +27,7 @@ import java.util.Map;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@DaoSqlTest
|
||||
@ -432,7 +433,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
||||
msgList.put("splice2List", list.clone());
|
||||
msgList.put("splice1_4", list.splice(1, 4, "start", 5, "end"));
|
||||
msgList.put("splice1_4List", list.clone());
|
||||
return msgList
|
||||
return msgList;
|
||||
""";
|
||||
ArrayList list = new ArrayList<>(List.of("A", "B", "C", "B", "C", "hello", 34567));
|
||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||
@ -486,7 +487,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
||||
msgList.put("listChangeIndex1List", list.clone());
|
||||
list[0] = 2096;
|
||||
msgList.put("listChangeIndex0List", list.clone());
|
||||
return msgList
|
||||
return msgList;
|
||||
""";
|
||||
ArrayList list = new ArrayList<>(List.of("r", "start", 5, "end"));
|
||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||
@ -524,7 +525,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
||||
msgList.put("fill4List", list.clone());
|
||||
msgList.put("fill4_6", list.fill(2, 1, 4));
|
||||
msgList.put("fill4_6List", list.clone());
|
||||
return msgList
|
||||
return msgList;
|
||||
""";
|
||||
ArrayList list = new ArrayList<>(List.of(2096, "98", 5, "65"));
|
||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||
@ -584,7 +585,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
||||
msgList.put("toSpliced2_2List", list.clone());
|
||||
msgList.put("toSpliced4_5", list.toSpliced(2, 4, "start", 5, "end"));
|
||||
msgList.put("toSpliced4_5List", list.clone());
|
||||
return msgList
|
||||
return msgList;
|
||||
""";
|
||||
ArrayList list = new ArrayList<>(List.of(67, 2, 2, 2));
|
||||
ArrayList oldList = (ArrayList) list.clone();
|
||||
@ -665,7 +666,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
||||
msgList.put("indOf1", list.indexOf("B", 1));
|
||||
msgList.put("indOf2", list.indexOf(2, 2));
|
||||
msgList.put("sStr", list.validateClazzInArrayIsOnlyString());
|
||||
return msgList
|
||||
return msgList;
|
||||
""";
|
||||
ArrayList list = new ArrayList<>(List.of(67, 2, 2, 2));
|
||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||
@ -679,6 +680,65 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
// Arrays
|
||||
@Test
|
||||
public void arrays_Test() throws ExecutionException, InterruptedException {
|
||||
String str = "My String";
|
||||
msgStr = String.format("""
|
||||
{"str": "%s"}
|
||||
""", str);
|
||||
decoderStr = """
|
||||
var msgArray = {};
|
||||
// Create new array
|
||||
var array = new int[3];
|
||||
array[0] = 1;
|
||||
array[1] = 2;
|
||||
array[2] = 3;
|
||||
msgArray.put("array", array);
|
||||
var str = msg.str;
|
||||
msgArray.put("str", msg.str);
|
||||
msgArray.put("str0", str[0]);
|
||||
function sum(list){
|
||||
var result = 0;
|
||||
for(var i = 0; i < list.length; i++){
|
||||
result += list[i];
|
||||
}
|
||||
return result;
|
||||
};
|
||||
msgArray.put("sum", sum(array));
|
||||
// array[3] = 4; // Will cause ArrayIndexOutOfBoundsException
|
||||
return msgArray;
|
||||
""";
|
||||
ArrayList list = new ArrayList<>(List.of(1, 2, 3));
|
||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||
expected.put("array", list);
|
||||
expected.put("str", str);
|
||||
expected.put("str0", str.toCharArray()[0]);
|
||||
expected.put("sum", 6);
|
||||
Object actual = invokeScript(evalScript(decoderStr), msgStr);
|
||||
assertEquals(expected, actual);
|
||||
}
|
||||
@Test
|
||||
public void arraysWillCauseArrayIndexOutOfBoundsException_Test() throws ExecutionException, InterruptedException {
|
||||
msgStr = """
|
||||
{}
|
||||
""";
|
||||
decoderStr = """
|
||||
var array = new int[3];
|
||||
array[0] = 1;
|
||||
array[1] = 2;
|
||||
array[2] = 3;
|
||||
array[3] = 4;
|
||||
return array;
|
||||
""";
|
||||
assertThatThrownBy(() -> {
|
||||
invokeScript(evalScript(decoderStr), msgStr);
|
||||
}).hasMessageContaining("Invalid statement: 4")
|
||||
.hasMessageContaining("[Line: 5, Column: 12]");
|
||||
}
|
||||
|
||||
|
||||
|
||||
private List splice(List oldList, int start, int deleteCount, Object... values) {
|
||||
start = initStartIndex(oldList, start);
|
||||
deleteCount = deleteCount < 0 ? 0 : Math.min(deleteCount, (oldList.size() - start));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user