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.ExecutionException;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
@DaoSqlTest
|
@DaoSqlTest
|
||||||
@ -432,7 +433,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
|||||||
msgList.put("splice2List", list.clone());
|
msgList.put("splice2List", list.clone());
|
||||||
msgList.put("splice1_4", list.splice(1, 4, "start", 5, "end"));
|
msgList.put("splice1_4", list.splice(1, 4, "start", 5, "end"));
|
||||||
msgList.put("splice1_4List", list.clone());
|
msgList.put("splice1_4List", list.clone());
|
||||||
return msgList
|
return msgList;
|
||||||
""";
|
""";
|
||||||
ArrayList list = new ArrayList<>(List.of("A", "B", "C", "B", "C", "hello", 34567));
|
ArrayList list = new ArrayList<>(List.of("A", "B", "C", "B", "C", "hello", 34567));
|
||||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||||
@ -486,7 +487,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
|||||||
msgList.put("listChangeIndex1List", list.clone());
|
msgList.put("listChangeIndex1List", list.clone());
|
||||||
list[0] = 2096;
|
list[0] = 2096;
|
||||||
msgList.put("listChangeIndex0List", list.clone());
|
msgList.put("listChangeIndex0List", list.clone());
|
||||||
return msgList
|
return msgList;
|
||||||
""";
|
""";
|
||||||
ArrayList list = new ArrayList<>(List.of("r", "start", 5, "end"));
|
ArrayList list = new ArrayList<>(List.of("r", "start", 5, "end"));
|
||||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||||
@ -524,7 +525,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
|||||||
msgList.put("fill4List", list.clone());
|
msgList.put("fill4List", list.clone());
|
||||||
msgList.put("fill4_6", list.fill(2, 1, 4));
|
msgList.put("fill4_6", list.fill(2, 1, 4));
|
||||||
msgList.put("fill4_6List", list.clone());
|
msgList.put("fill4_6List", list.clone());
|
||||||
return msgList
|
return msgList;
|
||||||
""";
|
""";
|
||||||
ArrayList list = new ArrayList<>(List.of(2096, "98", 5, "65"));
|
ArrayList list = new ArrayList<>(List.of(2096, "98", 5, "65"));
|
||||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||||
@ -584,7 +585,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
|||||||
msgList.put("toSpliced2_2List", list.clone());
|
msgList.put("toSpliced2_2List", list.clone());
|
||||||
msgList.put("toSpliced4_5", list.toSpliced(2, 4, "start", 5, "end"));
|
msgList.put("toSpliced4_5", list.toSpliced(2, 4, "start", 5, "end"));
|
||||||
msgList.put("toSpliced4_5List", list.clone());
|
msgList.put("toSpliced4_5List", list.clone());
|
||||||
return msgList
|
return msgList;
|
||||||
""";
|
""";
|
||||||
ArrayList list = new ArrayList<>(List.of(67, 2, 2, 2));
|
ArrayList list = new ArrayList<>(List.of(67, 2, 2, 2));
|
||||||
ArrayList oldList = (ArrayList) list.clone();
|
ArrayList oldList = (ArrayList) list.clone();
|
||||||
@ -665,7 +666,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
|||||||
msgList.put("indOf1", list.indexOf("B", 1));
|
msgList.put("indOf1", list.indexOf("B", 1));
|
||||||
msgList.put("indOf2", list.indexOf(2, 2));
|
msgList.put("indOf2", list.indexOf(2, 2));
|
||||||
msgList.put("sStr", list.validateClazzInArrayIsOnlyString());
|
msgList.put("sStr", list.validateClazzInArrayIsOnlyString());
|
||||||
return msgList
|
return msgList;
|
||||||
""";
|
""";
|
||||||
ArrayList list = new ArrayList<>(List.of(67, 2, 2, 2));
|
ArrayList list = new ArrayList<>(List.of(67, 2, 2, 2));
|
||||||
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||||
@ -679,6 +680,65 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
|||||||
assertEquals(expected, actual);
|
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) {
|
private List splice(List oldList, int start, int deleteCount, Object... values) {
|
||||||
start = initStartIndex(oldList, start);
|
start = initStartIndex(oldList, start);
|
||||||
deleteCount = deleteCount < 0 ? 0 : Math.min(deleteCount, (oldList.size() - start));
|
deleteCount = deleteCount < 0 ? 0 : Math.min(deleteCount, (oldList.size() - start));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user