From ace1bf8a4ae70605aece03b9cea28fa37c6b1c1c Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: ćšć, 26 11æ 2015 04:58:18 +0800 Subject: [PATCH] Add test for ResultArray --- libscpi/src/parser.c | 4 - libscpi/test/test_parser.c | 71 +++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/libscpi/src/parser.c b/libscpi/src/parser.c index 70187f3..c4220f5 100644 --- a/libscpi/src/parser.c +++ b/libscpi/src/parser.c @@ -1455,6 +1455,7 @@ case 4: case 8: result += SCPI_ResultArbitraryBlockHeader(context, count * item_size); + break; default: SCPI_ErrorPush(context, SCPI_ERROR_SYSTEM_ERROR); return 0; @@ -1495,9 +1496,6 @@ size_t i;\ for (i = 0; i < count; i++) {\ result += func(context, array[i]);\ - }\ - if (count > 0) {\ - result += count - 1; /* add length of commas */\ }\ } else {\ result = parserResultArrayBinary(context, array, count, sizeof(*array), format);\ diff --git a/libscpi/test/test_parser.c b/libscpi/test/test_parser.c index 6b5fda1..3ae7bf8 100644 --- a/libscpi/test/test_parser.c +++ b/libscpi/test/test_parser.c @@ -1061,6 +1061,76 @@ TEST_Result(ArbitraryBlockString, "X1234567890\x80x", "#213X1234567890\x80x"); } +static void testResultArray(void) { + +#define SCPI_ResultArrayInt8ASCII(c, a) SCPI_ResultArrayInt8((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_ASCII) +#define SCPI_ResultArrayUInt8ASCII(c, a) SCPI_ResultArrayUInt8((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_ASCII) +#define SCPI_ResultArrayInt16ASCII(c, a) SCPI_ResultArrayInt16((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_ASCII) +#define SCPI_ResultArrayUInt16ASCII(c, a) SCPI_ResultArrayUInt16((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_ASCII) +#define SCPI_ResultArrayInt32ASCII(c, a) SCPI_ResultArrayInt32((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_ASCII) +#define SCPI_ResultArrayUInt32ASCII(c, a) SCPI_ResultArrayUInt32((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_ASCII) +#define SCPI_ResultArrayInt64ASCII(c, a) SCPI_ResultArrayInt64((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_ASCII) +#define SCPI_ResultArrayUInt64ASCII(c, a) SCPI_ResultArrayUInt64((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_ASCII) + +#define SCPI_ResultArrayInt8NORMAL(c, a) SCPI_ResultArrayInt8((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_NORMAL) +#define SCPI_ResultArrayUInt8NORMAL(c, a) SCPI_ResultArrayUInt8((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_NORMAL) +#define SCPI_ResultArrayInt16NORMAL(c, a) SCPI_ResultArrayInt16((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_NORMAL) +#define SCPI_ResultArrayUInt16NORMAL(c, a) SCPI_ResultArrayUInt16((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_NORMAL) +#define SCPI_ResultArrayInt32NORMAL(c, a) SCPI_ResultArrayInt32((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_NORMAL) +#define SCPI_ResultArrayUInt32NORMAL(c, a) SCPI_ResultArrayUInt32((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_NORMAL) +#define SCPI_ResultArrayInt64NORMAL(c, a) SCPI_ResultArrayInt64((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_NORMAL) +#define SCPI_ResultArrayUInt64NORMAL(c, a) SCPI_ResultArrayUInt64((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_NORMAL) + +#define SCPI_ResultArrayInt8SWAPPED(c, a) SCPI_ResultArrayInt8((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_SWAPPED) +#define SCPI_ResultArrayUInt8SWAPPED(c, a) SCPI_ResultArrayUInt8((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_SWAPPED) +#define SCPI_ResultArrayInt16SWAPPED(c, a) SCPI_ResultArrayInt16((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_SWAPPED) +#define SCPI_ResultArrayUInt16SWAPPED(c, a) SCPI_ResultArrayUInt16((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_SWAPPED) +#define SCPI_ResultArrayInt32SWAPPED(c, a) SCPI_ResultArrayInt32((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_SWAPPED) +#define SCPI_ResultArrayUInt32SWAPPED(c, a) SCPI_ResultArrayUInt32((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_SWAPPED) +#define SCPI_ResultArrayInt64SWAPPED(c, a) SCPI_ResultArrayInt64((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_SWAPPED) +#define SCPI_ResultArrayUInt64SWAPPED(c, a) SCPI_ResultArrayUInt64((c), (a), sizeof(a)/sizeof(*a), SCPI_FORMAT_SWAPPED) + + int8_t int8_arr[] = {-5, 48, 49, 109, 87}; + TEST_Result(ArrayInt8ASCII, int8_arr, "-5,48,49,109,87"); + TEST_Result(ArrayInt8NORMAL, int8_arr, "#15" "\xFB" "01mW"); + TEST_Result(ArrayInt8SWAPPED, int8_arr, "#15" "\xFB" "01mW"); + + uint8_t uint8_arr[] = {250, 48, 49, 109, 87}; + TEST_Result(ArrayUInt8ASCII, uint8_arr, "250,48,49,109,87"); + TEST_Result(ArrayUInt8NORMAL, uint8_arr, "#15" "\xFA" "01mW"); + TEST_Result(ArrayUInt8SWAPPED, uint8_arr, "#15" "\xFA" "01mW"); + + int16_t int16_arr[] = {-5, 18505, 12340}; + TEST_Result(ArrayInt16ASCII, int16_arr, "-5,18505,12340"); + TEST_Result(ArrayInt16NORMAL, int16_arr, "#16" "\xFF\xFB" "HI" "04"); + TEST_Result(ArrayInt16SWAPPED, int16_arr, "#16" "\xFB\xFF" "IH" "40"); + + uint16_t uint16_arr[] = {65531, 18505, 12340}; + TEST_Result(ArrayUInt16ASCII, uint16_arr, "65531,18505,12340"); + TEST_Result(ArrayUInt16NORMAL, uint16_arr, "#16" "\xFF\xFB" "HI" "04"); + TEST_Result(ArrayUInt16SWAPPED, uint16_arr, "#16" "\xFB\xFF" "IH" "40"); + + int32_t int32_arr[] = {-5L, 808530483L, 1094861636L}; + TEST_Result(ArrayInt32ASCII, int32_arr, "-5,808530483,1094861636"); + TEST_Result(ArrayInt32NORMAL, int32_arr, "#212" "\xFF\xFF\xFF\xFB" "0123" "ABCD"); + TEST_Result(ArrayInt32SWAPPED, int32_arr, "#212" "\xFB\xFF\xFF\xFF" "3210" "DCBA"); + + uint32_t uint32_arr[] = {4294967291UL, 808530483UL, 1094861636UL}; + TEST_Result(ArrayUInt32ASCII, uint32_arr, "4294967291,808530483,1094861636"); + TEST_Result(ArrayUInt32NORMAL, uint32_arr, "#212" "\xFF\xFF\xFF\xFB" "0123" "ABCD"); + TEST_Result(ArrayUInt32SWAPPED, uint32_arr, "#212" "\xFB\xFF\xFF\xFF" "3210" "DCBA"); + + int64_t int64_arr[] = {-5LL, 3472611983179986487LL}; + TEST_Result(ArrayInt64ASCII, int64_arr, "-5,3472611983179986487"); + TEST_Result(ArrayInt64NORMAL, int64_arr, "#216" "\xFF\xFF\xFF\xFF" "\xFF\xFF\xFF\xFB" "01234567"); + TEST_Result(ArrayInt64SWAPPED, int64_arr, "#216" "\xFB\xFF\xFF\xFF" "\xFF\xFF\xFF\xFF" "76543210"); + + uint64_t uint64_arr[] = {18446744073709551611ULL, 3472611983179986487ULL}; + TEST_Result(ArrayUInt64ASCII, uint64_arr, "18446744073709551611,3472611983179986487"); + TEST_Result(ArrayUInt64NORMAL, uint64_arr, "#216" "\xFF\xFF\xFF\xFF" "\xFF\xFF\xFF\xFB" "01234567"); + TEST_Result(ArrayUInt64SWAPPED, uint64_arr, "#216" "\xFB\xFF\xFF\xFF" "\xFF\xFF\xFF\xFF" "76543210"); +} + int main() { unsigned int result; CU_pSuite pSuite = NULL; @@ -1105,6 +1175,7 @@ || (NULL == CU_add_test(pSuite, "SCPI_ResultMnemonic", testResultMnemonic)) || (NULL == CU_add_test(pSuite, "SCPI_ResultText", testResultText)) || (NULL == CU_add_test(pSuite, "SCPI_ResultArbitraryBlock", testResultArbitraryBlock)) + || (NULL == CU_add_test(pSuite, "SCPI_ResultArray", testResultArray)) ) { CU_cleanup_registry(); return CU_get_error(); -- Gitblit v1.9.1