tbel_test_doc: add Helper functions: stringToBytes, bytesToString, decodeToJson, isTypeInValue, encodeDecodeUri, raiseError, printUnsignedBytes
This commit is contained in:
parent
1d6abc5fbc
commit
b98730a7b8
@ -16,6 +16,7 @@
|
|||||||
package org.thingsboard.server.service.script;
|
package org.thingsboard.server.service.script;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.thingsboard.common.util.JacksonUtil;
|
||||||
import org.thingsboard.server.dao.service.DaoSqlTest;
|
import org.thingsboard.server.dao.service.DaoSqlTest;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
@ -1063,7 +1064,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void stringToBytes_Test() throws ExecutionException, InterruptedException {
|
public void stringToBytesBinaryString_Test() throws ExecutionException, InterruptedException {
|
||||||
String base64Str = "eyJoZWxsbyI6ICJ3b3JsZCJ9";
|
String base64Str = "eyJoZWxsbyI6ICJ3b3JsZCJ9";
|
||||||
String inputStr = "hello, world";
|
String inputStr = "hello, world";
|
||||||
msgStr = String.format("""
|
msgStr = String.format("""
|
||||||
@ -1089,6 +1090,140 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
|
|||||||
assertEquals(expected, actual);
|
assertEquals(expected, actual);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void stringToBytesObjectFromJsonAsString_Test() throws ExecutionException, InterruptedException {
|
||||||
|
String inputStr = "hello, world";
|
||||||
|
msgStr = "{}";
|
||||||
|
decoderStr = String.format("""
|
||||||
|
var dataMap = {};
|
||||||
|
dataMap.inputStr = "%s";
|
||||||
|
var dataJsonStr = JSON.stringify(dataMap);
|
||||||
|
var dataJson = JSON.parse(dataJsonStr);
|
||||||
|
return stringToBytes(dataJson.inputStr);
|
||||||
|
""", inputStr);
|
||||||
|
List expected = bytesToList(inputStr.getBytes());
|
||||||
|
Object actual = invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
assertEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void bytesToString_Test() throws ExecutionException, InterruptedException {
|
||||||
|
byte[] inputBytes = new byte[]{0x48, 0x45, 0x4C, 0x4C, 0x4F};
|
||||||
|
msgStr = "{}";
|
||||||
|
decoderStr = """
|
||||||
|
var bytes = [0x48,0x45,0x4C,0x4C,0x4F];
|
||||||
|
return bytesToString(bytes);
|
||||||
|
""";
|
||||||
|
String expected = new String(inputBytes);
|
||||||
|
Object actual = invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
assertEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void decodeToJson_Test() throws ExecutionException, InterruptedException {
|
||||||
|
msgStr = "{}";
|
||||||
|
decoderStr = """
|
||||||
|
var base64Str = "eyJoZWxsbyI6ICJ3b3JsZCJ9";
|
||||||
|
var bytesStr = atob(base64Str);
|
||||||
|
var bytes = stringToBytes(bytesStr);
|
||||||
|
return decodeToJson(bytes);
|
||||||
|
""";
|
||||||
|
String expected = "{\"hello\":\"world\"}";
|
||||||
|
Object actual = invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
assertEquals(expected, JacksonUtil.toString(actual));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isTypeInValue_Test() throws ExecutionException, InterruptedException {
|
||||||
|
msgStr = "{}";
|
||||||
|
decoderStr = """
|
||||||
|
return{
|
||||||
|
"binary": isBinary("1100110"),
|
||||||
|
"notBinary": isBinary("2100110"),
|
||||||
|
"octal": isOctal("4567734"),
|
||||||
|
"notOctal": isOctal("8100110"),
|
||||||
|
"decimal": isDecimal("4567039"),
|
||||||
|
"notDecimal": isDecimal("C100110"),
|
||||||
|
"hexadecimal": isHexadecimal("F5D7039"),
|
||||||
|
"notHexadecimal": isHexadecimal("K100110")
|
||||||
|
}
|
||||||
|
""";
|
||||||
|
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||||
|
expected.put("binary", 2);
|
||||||
|
expected.put("notBinary", -1);
|
||||||
|
expected.put("octal", 8);
|
||||||
|
expected.put("notOctal", -1);
|
||||||
|
expected.put("decimal", 10);
|
||||||
|
expected.put("notDecimal", -1);
|
||||||
|
expected.put("hexadecimal", 16);
|
||||||
|
expected.put("notHexadecimal", -1);
|
||||||
|
Object actual = invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
assertEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void encodeDecodeUri_Test() throws ExecutionException, InterruptedException {
|
||||||
|
String uriOriginal = "-_.!~*'();/?:@&=+$,#ht://example.ж д a/path with spaces/?param1=Київ 1¶m2=Україна2";
|
||||||
|
String uriEncode = "-_.!~*'();/?:@&=+$,#ht://example.%D0%B6%20%D0%B4%20a/path%20with%20spaces/?param1=%D0%9A%D0%B8%D1%97%D0%B2%201¶m2=%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D0%B02";
|
||||||
|
msgStr = "{}";
|
||||||
|
decoderStr = String.format("""
|
||||||
|
var uriOriginal = "%s";
|
||||||
|
var uriEncode = "%s";
|
||||||
|
return{
|
||||||
|
"encodeURI": encodeURI(uriOriginal),
|
||||||
|
"decodeURI": decodeURI(uriEncode)
|
||||||
|
}
|
||||||
|
""", uriOriginal, uriEncode);
|
||||||
|
LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
|
||||||
|
expected.put("encodeURI", uriEncode);
|
||||||
|
expected.put("decodeURI", uriOriginal);
|
||||||
|
Object actual = invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
assertEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void raiseError_Test() throws ExecutionException, InterruptedException {
|
||||||
|
String message = "frequency_weighting_type must be 0, 1 or 2.";
|
||||||
|
msgStr = "{}";
|
||||||
|
decoderStr = String.format("""
|
||||||
|
var message = "%s";
|
||||||
|
return raiseError(message);
|
||||||
|
""", message);
|
||||||
|
assertThatThrownBy(() -> {
|
||||||
|
invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
}).hasMessageContaining(message);
|
||||||
|
|
||||||
|
Integer value = 4;
|
||||||
|
message = "frequency_weighting_type must be 0, 1 or 2. A value of " + value + " is invalid.";
|
||||||
|
decoderStr = String.format("""
|
||||||
|
var message = "%s";
|
||||||
|
return raiseError(message);
|
||||||
|
""", message);
|
||||||
|
assertThatThrownBy(() -> {
|
||||||
|
invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
}).hasMessageContaining(message);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void printUnsignedBytes_Test() throws ExecutionException, InterruptedException {
|
||||||
|
msgStr = "{}";
|
||||||
|
decoderStr = """
|
||||||
|
var hexStrBe = "D8FF";
|
||||||
|
var listBe = hexToBytes(hexStrBe);
|
||||||
|
return printUnsignedBytes(listBe);
|
||||||
|
""";
|
||||||
|
ArrayList expected = new ArrayList<>(List.of(216, 255));
|
||||||
|
Object actual = invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
assertEquals(expected, actual);
|
||||||
|
decoderStr = """
|
||||||
|
var hexStrLe = "FFD8";
|
||||||
|
var listLe = hexToBytes(hexStrLe);
|
||||||
|
return printUnsignedBytes(listLe);
|
||||||
|
""";
|
||||||
|
expected = new ArrayList<>(List.of(255, 216));
|
||||||
|
actual = invokeScript(evalScript(decoderStr), msgStr);
|
||||||
|
assertEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
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);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user