tbel_test_doc: add Helper functions: pad, numberToRadixString, parseHex, parseBytes
This commit is contained in:
		
							parent
							
								
									b98730a7b8
								
							
						
					
					
						commit
						589822a8c2
					
				@ -1203,6 +1203,7 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
 | 
			
		||||
            invokeScript(evalScript(decoderStr), msgStr);
 | 
			
		||||
        }).hasMessageContaining(message);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void printUnsignedBytes_Test() throws ExecutionException, InterruptedException {
 | 
			
		||||
        msgStr = "{}";
 | 
			
		||||
@ -1224,6 +1225,249 @@ class TbelInvokeDocsIoTest extends AbstractTbelInvokeTest {
 | 
			
		||||
        assertEquals(expected, actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void pad_Test() throws ExecutionException, InterruptedException {
 | 
			
		||||
        msgStr = "{}";
 | 
			
		||||
        // padStart
 | 
			
		||||
        decoderStr = """
 | 
			
		||||
                    var str1 = "010011";
 | 
			
		||||
                    var str2 ="1001010011";
 | 
			
		||||
                    var fullNumber = "203439900FFCD5581";
 | 
			
		||||
                    var last4Digits = fullNumber.substring(11);
 | 
			
		||||
                    return {
 | 
			
		||||
                        padStart1: padStart(str1, 8, '0'),
 | 
			
		||||
                        padStart2: padStart(str2, 8, '0'),
 | 
			
		||||
                        padStart16: padStart(str2, 16, '*'),
 | 
			
		||||
                        padStartFullNumber: padStart(last4Digits, fullNumber.length(), '*')
 | 
			
		||||
                    }
 | 
			
		||||
                """;
 | 
			
		||||
        LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
 | 
			
		||||
        expected.put("padStart1", "00010011");
 | 
			
		||||
        expected.put("padStart2", "1001010011");
 | 
			
		||||
        expected.put("padStart16", "******1001010011");
 | 
			
		||||
        expected.put("padStartFullNumber", "***********CD5581");
 | 
			
		||||
        Object actual = invokeScript(evalScript(decoderStr), msgStr);
 | 
			
		||||
        assertEquals(expected, actual);
 | 
			
		||||
        // padEnd
 | 
			
		||||
        decoderStr = """
 | 
			
		||||
                    var str1 = "010011";
 | 
			
		||||
                    var str2 ="1001010011";
 | 
			
		||||
                    var fullNumber = "203439900FFCD5581";
 | 
			
		||||
                    var last4Digits = fullNumber.substring(0, 11);
 | 
			
		||||
                    return {
 | 
			
		||||
                        padEnd1: padEnd(str1, 8, '0'),
 | 
			
		||||
                        padEnd2: padEnd(str2, 8, '0'),
 | 
			
		||||
                        padEnd16: padEnd(str2, 16, '*'),
 | 
			
		||||
                        padEndFullNumber: padEnd(last4Digits, fullNumber.length(), '*')
 | 
			
		||||
                    }
 | 
			
		||||
                """;
 | 
			
		||||
        expected = new LinkedHashMap<>();
 | 
			
		||||
        expected.put("padEnd1", "01001100");
 | 
			
		||||
        expected.put("padEnd2", "1001010011");
 | 
			
		||||
        expected.put("padEnd16", "1001010011******");
 | 
			
		||||
        expected.put("padEndFullNumber", "203439900FF******");
 | 
			
		||||
        actual = invokeScript(evalScript(decoderStr), msgStr);
 | 
			
		||||
        assertEquals(expected, actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void numberToRadixStringIntLongFloatDouble_Test() throws ExecutionException, InterruptedException {
 | 
			
		||||
        msgStr = "{}";
 | 
			
		||||
        decoderStr = """
 | 
			
		||||
                    var i = 0x7FFFFFFF;
 | 
			
		||||
                    return {
 | 
			
		||||
                        "intToHex1": intToHex(i, true, true),
 | 
			
		||||
                        "intToHex2": intToHex(171, true, false),
 | 
			
		||||
                        "intToHex3": intToHex(0xABCDEF, false, true, 4),
 | 
			
		||||
                        "intToHex4": intToHex(0xABCD, false, false, 2),
 | 
			
		||||
                        "longToHex1": longToHex(9223372036854775807, true, true),
 | 
			
		||||
                        "longToHex2": longToHex(0x7A12BCD3, true, true, 4),
 | 
			
		||||
                        "longToHex3": longToHex(0x7A12BCD3, false, false, 4),
 | 
			
		||||
                        "floatToHex1": floatToHex(123456789.00),
 | 
			
		||||
                        "floatToHex2": floatToHex(123456789.00, false),
 | 
			
		||||
                        "doubleToHex1": doubleToHex(1729.1729d),
 | 
			
		||||
                        "doubleToHex2": doubleToHex(1729.1729d, false)
 | 
			
		||||
                    }
 | 
			
		||||
                """;
 | 
			
		||||
        LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
 | 
			
		||||
        expected.put("intToHex1", "0x7FFFFFFF");
 | 
			
		||||
        expected.put("intToHex2", "AB");
 | 
			
		||||
        expected.put("intToHex3", "0xCDAB");
 | 
			
		||||
        expected.put("intToHex4", "AB");
 | 
			
		||||
        expected.put("longToHex1", "0x7FFFFFFFFFFFFFFF");
 | 
			
		||||
        expected.put("longToHex2", "0xBCD3");
 | 
			
		||||
        expected.put("longToHex3", "127A");
 | 
			
		||||
        expected.put("floatToHex1", "0x4CEB79A3");
 | 
			
		||||
        expected.put("floatToHex2", "0xA379EB4C");
 | 
			
		||||
        expected.put("doubleToHex1", "0x409B04B10CB295EA");
 | 
			
		||||
        expected.put("doubleToHex2", "0xEA95B20CB1049B40");
 | 
			
		||||
        Object actual = invokeScript(evalScript(decoderStr), msgStr);
 | 
			
		||||
        assertEquals(expected, actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void intLongToRadixString_Test() throws ExecutionException, InterruptedException {
 | 
			
		||||
        msgStr = "{}";
 | 
			
		||||
        decoderStr = """
 | 
			
		||||
                    return {
 | 
			
		||||
                        "bin1": intLongToRadixString(58, 2),
 | 
			
		||||
                        "bin2": intLongToRadixString(9223372036854775807, 2),
 | 
			
		||||
                        "octal1": intLongToRadixString(13158, 8),
 | 
			
		||||
                        "octal2": intLongToRadixString(-13158, 8),
 | 
			
		||||
                        "decimal": intLongToRadixString(-13158, 10),
 | 
			
		||||
                        "hexDecimal1": intLongToRadixString(13158, 16),
 | 
			
		||||
                        "hexDecimal2": intLongToRadixString(-13158, 16),
 | 
			
		||||
                        "hexDecimal3": intLongToRadixString(9223372036854775807, 16),
 | 
			
		||||
                        "hexDecimal4": intLongToRadixString(-13158, 16, true, true)
 | 
			
		||||
                    }
 | 
			
		||||
                """;
 | 
			
		||||
        LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
 | 
			
		||||
        expected.put("bin1", "00111010");
 | 
			
		||||
        expected.put("bin2", "0111111111111111111111111111111111111111111111111111111111111111");
 | 
			
		||||
        expected.put("octal1", "31546");
 | 
			
		||||
        expected.put("octal2", "1777777777777777746232");
 | 
			
		||||
        expected.put("decimal", "-13158");
 | 
			
		||||
        expected.put("hexDecimal1", "3366");
 | 
			
		||||
        expected.put("hexDecimal2", "FFCC9A");
 | 
			
		||||
        expected.put("hexDecimal3", "7FFFFFFFFFFFFFFF");
 | 
			
		||||
        expected.put("hexDecimal4", "0xFFCC9A");
 | 
			
		||||
        Object actual = invokeScript(evalScript(decoderStr), msgStr);
 | 
			
		||||
        assertEquals(expected, actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void parseHex_Test() throws ExecutionException, InterruptedException {
 | 
			
		||||
        msgStr = "{}";
 | 
			
		||||
        decoderStr = """
 | 
			
		||||
                    return {
 | 
			
		||||
                        "hexToInt1": parseHexToInt("BBAA"),
 | 
			
		||||
                        "hexToInt2": parseHexToInt("BBAA", true),
 | 
			
		||||
                        "hexToInt3": parseHexToInt("AABB", false),
 | 
			
		||||
                        "hexToInt4": parseHexToInt("BBAA", false),
 | 
			
		||||
                        "hexToFloat1": parseHexToFloat("41EA62CC"),
 | 
			
		||||
                        "hexToFloat2": parseHexToFloat("41EA62CC", true),
 | 
			
		||||
                        "hexToFloat3": parseHexToFloat("41EA62CC", false),
 | 
			
		||||
                        "hexToFloat4": parseHexToFloat("CC62EA41", false),
 | 
			
		||||
                        "hexIntLongToFloat1": parseHexIntLongToFloat("0x0A", true),
 | 
			
		||||
                        "hexIntLongToFloat2": parseHexIntLongToFloat("0x0A", false),
 | 
			
		||||
                        "hexIntLongToFloat3": parseHexIntLongToFloat("0x00000A", true),
 | 
			
		||||
                        "hexIntLongToFloat4": parseHexIntLongToFloat("0x0A0000", false),
 | 
			
		||||
                        "hexIntLongToFloat5": parseHexIntLongToFloat("0x000A0A", true),
 | 
			
		||||
                        "hexIntLongToFloat6": parseHexIntLongToFloat("0x0A0A00", false),
 | 
			
		||||
                        "hexToDouble1": parseHexToDouble("409B04B10CB295EA"),
 | 
			
		||||
                        "hexToDouble2": parseHexToDouble("409B04B10CB295EA", false),
 | 
			
		||||
                        "hexToDouble3": parseHexToDouble("409B04B10CB295EA", true),
 | 
			
		||||
                        "hexToDouble4": parseHexToDouble("EA95B20CB1049B40", false)
 | 
			
		||||
                    }
 | 
			
		||||
                """;
 | 
			
		||||
        LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
 | 
			
		||||
        expected.put("hexToInt1", 48042);
 | 
			
		||||
        expected.put("hexToInt2", 48042);
 | 
			
		||||
        expected.put("hexToInt3", 48042);
 | 
			
		||||
        expected.put("hexToInt4", 43707);
 | 
			
		||||
        expected.put("hexToFloat1", 29.29824f);
 | 
			
		||||
        expected.put("hexToFloat2", 29.29824f);
 | 
			
		||||
        expected.put("hexToFloat3", -5.948442E7f);
 | 
			
		||||
        expected.put("hexToFloat4", 29.29824f);
 | 
			
		||||
        expected.put("hexIntLongToFloat1", 10.0f);
 | 
			
		||||
        expected.put("hexIntLongToFloat2", 10.0f);
 | 
			
		||||
        expected.put("hexIntLongToFloat3", 10.0f);
 | 
			
		||||
        expected.put("hexIntLongToFloat4", 10.0f);
 | 
			
		||||
        expected.put("hexIntLongToFloat5", 2570.0f);
 | 
			
		||||
        expected.put("hexIntLongToFloat6", 2570.0f);
 | 
			
		||||
        expected.put("hexToDouble1", 1729.1729);
 | 
			
		||||
        expected.put("hexToDouble2", -2.7208640774822924E205);
 | 
			
		||||
        expected.put("hexToDouble3", 1729.1729);
 | 
			
		||||
        expected.put("hexToDouble4", 1729.1729);
 | 
			
		||||
        Object actual = invokeScript(evalScript(decoderStr), msgStr);
 | 
			
		||||
        assertEquals(expected, actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void parseBytes_Test() throws ExecutionException, InterruptedException {
 | 
			
		||||
        byte[] bytesExecutionArrayList = new byte[]{(byte) 0xAA, (byte) 0xBB, (byte) 0xCC, (byte) 0xDD};
 | 
			
		||||
        msgStr = "{}";
 | 
			
		||||
        decoderStr = """
 | 
			
		||||
                    var bytes = [0xBB, 0xAA];
 | 
			
		||||
                    var list = [-69, 83];
 | 
			
		||||
                    var intValByte = [0xAA, 0xBB, 0xCC, 0xDD];
 | 
			
		||||
                    var longValByte = [64, -101, 4, -79, 12, -78, -107, -22];
 | 
			
		||||
                    var bytesFloat = [0x0A];
 | 
			
		||||
                    var floatValByte = [0x41, 0xEA, 0x62, 0xCC];
 | 
			
		||||
                    var floatValList = [65, -22, 98, -52];
 | 
			
		||||
                    var intValByteFromInt = [0x00, 0x00, 0x00, 0x0A];
 | 
			
		||||
                    var dataAT101 = "0x01756403671B01048836BF7701F000090722050000";
 | 
			
		||||
                    var byteAT101 = hexToBytes(dataAT101);
 | 
			
		||||
                    var offsetLatInt = 9;
 | 
			
		||||
                    var coordinatesAsHex = "0x32D009423F23B300B0106E08D96B6C00";
 | 
			
		||||
                    var coordinatesasBytes = hexToBytes(coordinatesAsHex);
 | 
			
		||||
                    var offsetLatLong = 0;
 | 
			
		||||
                    var factor = 1e15;
 | 
			
		||||
                    var bytesExecutionArrayList = [0xAA, 0xBB, 0xCC, 0xDD];
 | 
			
		||||
                    return {
 | 
			
		||||
                        "bytesToHex1": bytesToHex(bytes),
 | 
			
		||||
                        "bytesToHex2": bytesToHex(list),
 | 
			
		||||
                        "bytesToInt1": parseBytesToInt(intValByte, 0, 3),
 | 
			
		||||
                        "bytesToInt2": parseBytesToInt(intValByte, 0, 3, true),
 | 
			
		||||
                        "bytesToInt3": parseBytesToInt(intValByte, 0, 3, false),
 | 
			
		||||
                        "bytesToLong1": parseBytesToLong(longValByte, 0, 8),
 | 
			
		||||
                        "bytesToLong2": parseBytesToLong(longValByte, 0, 8, false),
 | 
			
		||||
                        "bytesToFloat1": parseBytesToFloat(bytesFloat),
 | 
			
		||||
                        "bytesToFloat2": parseBytesToFloat(floatValByte, 0),
 | 
			
		||||
                        "bytesToFloat3": parseBytesToFloat(floatValByte, 0, 2, false),
 | 
			
		||||
                        "bytesToFloat4": parseBytesToFloat(floatValByte, 0, 2, true),
 | 
			
		||||
                        "bytesToFloat5": parseBytesToFloat(floatValByte, 0, 3, false),
 | 
			
		||||
                        "bytesToFloat6": parseBytesToFloat(floatValByte, 0, 3, true),
 | 
			
		||||
                        "bytesToFloat7": parseBytesToFloat(floatValByte, 0, 4, false),
 | 
			
		||||
                        "bytesToFloat8": parseBytesToFloat(floatValList, 0),
 | 
			
		||||
                        "bytesToFloat9": parseBytesToFloat(floatValList, 0, 4, false),
 | 
			
		||||
                        "bytesIntToFloat1": parseBytesIntToFloat(intValByteFromInt, 3, 1, true),
 | 
			
		||||
                        "bytesIntToFloat2": parseBytesIntToFloat(intValByteFromInt, 3, 1, false),
 | 
			
		||||
                        "bytesIntToFloat3": parseBytesIntToFloat(intValByteFromInt, 2, 2, true),
 | 
			
		||||
                        "bytesIntToFloat4": parseBytesIntToFloat(intValByteFromInt, 2, 2, false),
 | 
			
		||||
                        "bytesIntToFloat5": parseBytesIntToFloat(intValByteFromInt, 0, 4, true),
 | 
			
		||||
                        "bytesIntToFloat6": parseBytesIntToFloat(intValByteFromInt, 0, 4, false),
 | 
			
		||||
                        "bytesIntToFloat7": parseBytesIntToFloat(byteAT101, offsetLatInt, 4, false) / 1000000,
 | 
			
		||||
                        "bytesIntToFloat8": parseBytesIntToFloat(byteAT101, offsetLatInt + 4, 4, false) / 1000000,
 | 
			
		||||
                        "bytesLongToDouble1": parseBytesLongToDouble(coordinatesasBytes, offsetLatLong, 8, false) / factor,
 | 
			
		||||
                        "bytesLongToDouble2": parseBytesLongToDouble(coordinatesasBytes, offsetLatLong + 8, 8, false) / factor,
 | 
			
		||||
                        "bytesLongToExecutionArrayList": bytesToExecutionArrayList(bytesExecutionArrayList)
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
                """;
 | 
			
		||||
        LinkedHashMap<String, Object> expected = new LinkedHashMap<>();
 | 
			
		||||
        expected.put("bytesToHex1", "BBAA");
 | 
			
		||||
        expected.put("bytesToHex2", "BB53");
 | 
			
		||||
        expected.put("bytesToInt1", 11189196);
 | 
			
		||||
        expected.put("bytesToInt2", 11189196);
 | 
			
		||||
        expected.put("bytesToInt3", 13417386);
 | 
			
		||||
        expected.put("bytesToLong1", 4655319798286292458L);
 | 
			
		||||
        expected.put("bytesToLong2", -1543131529725306048L);
 | 
			
		||||
        expected.put("bytesToFloat1", 1.4E-44f);
 | 
			
		||||
        expected.put("bytesToFloat2", 29.29824f);
 | 
			
		||||
        expected.put("bytesToFloat3", 8.4034E-41f);
 | 
			
		||||
        expected.put("bytesToFloat4", 2.3646E-41f);
 | 
			
		||||
        expected.put("bytesToFloat5", 9.083913E-39f);
 | 
			
		||||
        expected.put("bytesToFloat6", 6.053388E-39f);
 | 
			
		||||
        expected.put("bytesToFloat7", -5.948442E7f);
 | 
			
		||||
        expected.put("bytesToFloat8", 29.29824f);
 | 
			
		||||
        expected.put("bytesToFloat9", -5.948442E7f);
 | 
			
		||||
        expected.put("bytesIntToFloat1", 10.0f);
 | 
			
		||||
        expected.put("bytesIntToFloat2", 10.0f);
 | 
			
		||||
        expected.put("bytesIntToFloat3", 10.0f);
 | 
			
		||||
        expected.put("bytesIntToFloat4", 2560.0f);
 | 
			
		||||
        expected.put("bytesIntToFloat5", 10.0f);
 | 
			
		||||
        expected.put("bytesIntToFloat6", 1.6777216E8f);
 | 
			
		||||
        expected.put("bytesIntToFloat7", 24.62495f);
 | 
			
		||||
        expected.put("bytesIntToFloat8", 118.030576f);
 | 
			
		||||
        expected.put("bytesLongToDouble1", 50.422775429058610d);
 | 
			
		||||
        expected.put("bytesLongToDouble2", 30.517877378257072d);
 | 
			
		||||
        expected.put("bytesLongToExecutionArrayList", bytesToList(bytesExecutionArrayList));
 | 
			
		||||
        Object actual = invokeScript(evalScript(decoderStr), msgStr);
 | 
			
		||||
        assertEquals(expected, actual);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // parseBinaryArray
 | 
			
		||||
 | 
			
		||||
    private List splice(List oldList, int start, int deleteCount, Object... values) {
 | 
			
		||||
        start = initStartIndex(oldList, start);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user