From 3a0d40729383c42af1cef194abc56182955fb9c9 Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: 周日, 24 4月 2016 16:57:16 +0800 Subject: [PATCH] Fix test and examples to work with extended errors --- examples/common/scpi-def.h | 2 libscpi/src/fifo_private.h | 2 examples/test-parser/main.c | 3 libscpi/src/parser.c | 5 examples/test-tcp/main.c | 3 libscpi/src/error.c | 12 ++ libscpi/src/fifo.c | 8 + libscpi/test/test_parser.c | 115 +++++++++++++++------------- examples/test-interactive/main.c | 3 examples/test-tcp-srq/main.c | 3 examples/common/scpi-def.c | 2 libscpi/test/test_fifo.c | 77 ++++++++++-------- 12 files changed, 132 insertions(+), 103 deletions(-) diff --git a/examples/common/scpi-def.c b/examples/common/scpi-def.c index 809fb1e..d5f71ae 100644 --- a/examples/common/scpi-def.c +++ b/examples/common/scpi-def.c @@ -412,6 +412,6 @@ }; char scpi_input_buffer[SCPI_INPUT_BUFFER_LENGTH]; -int16_t scpi_error_queue_data[SCPI_ERROR_QUEUE_SIZE]; +scpi_error_t scpi_error_queue_data[SCPI_ERROR_QUEUE_SIZE]; scpi_t scpi_context; diff --git a/examples/common/scpi-def.h b/examples/common/scpi-def.h index 908f80b..f451300 100644 --- a/examples/common/scpi-def.h +++ b/examples/common/scpi-def.h @@ -13,7 +13,7 @@ extern const scpi_command_t scpi_commands[]; extern scpi_interface_t scpi_interface; extern char scpi_input_buffer[]; -extern int16_t scpi_error_queue_data[]; +extern scpi_error_t scpi_error_queue_data[]; extern scpi_t scpi_context; size_t SCPI_Write(scpi_t * context, const char * data, size_t len); diff --git a/examples/test-interactive/main.c b/examples/test-interactive/main.c index c8cb4d1..e6e5763 100644 --- a/examples/test-interactive/main.c +++ b/examples/test-interactive/main.c @@ -94,7 +94,8 @@ scpi_units_def, SCPI_IDN1, SCPI_IDN2, SCPI_IDN3, SCPI_IDN4, scpi_input_buffer, SCPI_INPUT_BUFFER_LENGTH, - scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE); + scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE, + NULL, 0); //printf("%.*s %s\r\n", 3, "asdadasdasdasdas", "b"); printf("SCPI Interactive demo\r\n"); diff --git a/examples/test-parser/main.c b/examples/test-parser/main.c index e5badb1..e72b8af 100644 --- a/examples/test-parser/main.c +++ b/examples/test-parser/main.c @@ -96,7 +96,8 @@ scpi_units_def, SCPI_IDN1, SCPI_IDN2, SCPI_IDN3, SCPI_IDN4, scpi_input_buffer, SCPI_INPUT_BUFFER_LENGTH, - scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE); + scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE, + NULL, 0); #define TEST_SCPI_INPUT(cmd) result = SCPI_Input(&scpi_context, cmd, strlen(cmd)) diff --git a/examples/test-tcp-srq/main.c b/examples/test-tcp-srq/main.c index 095fdb8..af81109 100644 --- a/examples/test-tcp-srq/main.c +++ b/examples/test-tcp-srq/main.c @@ -290,7 +290,8 @@ scpi_units_def, SCPI_IDN1, SCPI_IDN2, SCPI_IDN3, SCPI_IDN4, scpi_input_buffer, SCPI_INPUT_BUFFER_LENGTH, - scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE); + scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE, + NULL, 0); scpi_context.user_context = &user_data; user_data.io_listen = createServer(5025); diff --git a/examples/test-tcp/main.c b/examples/test-tcp/main.c index f1971c2..bab7bf2 100644 --- a/examples/test-tcp/main.c +++ b/examples/test-tcp/main.c @@ -188,7 +188,8 @@ scpi_units_def, SCPI_IDN1, SCPI_IDN2, SCPI_IDN3, SCPI_IDN4, scpi_input_buffer, SCPI_INPUT_BUFFER_LENGTH, - scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE); + scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE, + NULL, 0); listenfd = createServer(5025); diff --git a/libscpi/src/error.c b/libscpi/src/error.c index 45f12d5..8913ab8 100644 --- a/libscpi/src/error.c +++ b/libscpi/src/error.c @@ -123,9 +123,15 @@ } static scpi_bool_t SCPI_ErrorAddInternal(scpi_t * context, int16_t err, char * info) { - if (!fifo_add(&context->error_queue, err, info)) { - fifo_remove_last(&context->error_queue, NULL); - fifo_add(&context->error_queue, SCPI_ERROR_QUEUE_OVERFLOW, NULL); + scpi_error_t error_value; + error_value.error_code = err; + error_value.device_dependent_info = info; + if (!fifo_add(&context->error_queue, &error_value)) { + fifo_remove_last(&context->error_queue, &error_value); + // TODO free device_dependent_info + error_value.error_code = SCPI_ERROR_QUEUE_OVERFLOW; + error_value.device_dependent_info = NULL; + fifo_add(&context->error_queue, &error_value); return FALSE; } return TRUE; diff --git a/libscpi/src/fifo.c b/libscpi/src/fifo.c index 578c9d2..a97ab7a 100644 --- a/libscpi/src/fifo.c +++ b/libscpi/src/fifo.c @@ -48,14 +48,16 @@ * @param info * @return */ -scpi_bool_t fifo_add(scpi_fifo_t * fifo, int16_t err, char * info) { +scpi_bool_t fifo_add(scpi_fifo_t * fifo, const scpi_error_t * value) { /* FIFO full? */ if (fifo_is_full(fifo)) { return FALSE; } + if (!value) { + return FALSE; + } - fifo->data[fifo->wr].error_code = err; - fifo->data[fifo->wr].device_dependent_info = info; + fifo->data[fifo->wr] = *value; fifo->wr = (fifo->wr + 1) % (fifo->size); fifo->count += 1; return TRUE; diff --git a/libscpi/src/fifo_private.h b/libscpi/src/fifo_private.h index 7440bc2..0bc70fd 100644 --- a/libscpi/src/fifo_private.h +++ b/libscpi/src/fifo_private.h @@ -48,7 +48,7 @@ void fifo_clear(scpi_fifo_t * fifo) LOCAL; scpi_bool_t fifo_is_empty(scpi_fifo_t * fifo) LOCAL; scpi_bool_t fifo_is_full(scpi_fifo_t * fifo) LOCAL; - scpi_bool_t fifo_add(scpi_fifo_t * fifo, int16_t err, char * info) LOCAL; + scpi_bool_t fifo_add(scpi_fifo_t * fifo, const scpi_error_t * value) LOCAL; scpi_bool_t fifo_remove(scpi_fifo_t * fifo, scpi_error_t * value) LOCAL; scpi_bool_t fifo_remove_last(scpi_fifo_t * fifo, scpi_error_t * value) LOCAL; scpi_bool_t fifo_count(scpi_fifo_t * fifo, int16_t * value) LOCAL; diff --git a/libscpi/src/parser.c b/libscpi/src/parser.c index b7534cc..6d7f8a9 100644 --- a/libscpi/src/parser.c +++ b/libscpi/src/parser.c @@ -527,8 +527,9 @@ size_t step = 0; const char * quote; - char * data[SCPIDEFINE_DESCRIPTION_MAX_PARTS]; + const char * data[SCPIDEFINE_DESCRIPTION_MAX_PARTS]; size_t len[SCPIDEFINE_DESCRIPTION_MAX_PARTS]; + size_t i; data[0] = SCPI_ErrorTranslate(error->error_code); len[0] = strlen(data[0]); @@ -546,7 +547,7 @@ result += writeDelimiter(context); result += writeData(context, "\"", 1); - for (size_t i = 0; data[i] && outputlimit && (i < SCPIDEFINE_DESCRIPTION_MAX_PARTS); i++) { + for (i = 0; data[i] && outputlimit && (i < SCPIDEFINE_DESCRIPTION_MAX_PARTS); i++) { if (i == 1) { result += writeSemicolon(context); outputlimit -= 1; diff --git a/libscpi/test/test_fifo.c b/libscpi/test/test_fifo.c index 40c65c5..546e0c8 100644 --- a/libscpi/test/test_fifo.c +++ b/libscpi/test/test_fifo.c @@ -25,14 +25,15 @@ static void testFifo() { scpi_fifo_t fifo; - int16_t fifo_data[4]; + scpi_error_t fifo_data[4]; fifo_init(&fifo, fifo_data, 4); - int16_t value; + scpi_error_t value; + int16_t count_value; #define TEST_FIFO_COUNT(n) \ do { \ - fifo_count(&fifo, &value); \ - CU_ASSERT_EQUAL(value, n); \ + fifo_count(&fifo, &count_value); \ + CU_ASSERT_EQUAL(count_value, n); \ } while(0) \ @@ -40,95 +41,103 @@ CU_ASSERT_TRUE(fifo_is_empty(&fifo)); CU_ASSERT_FALSE(fifo_is_full(&fifo)); - CU_ASSERT_TRUE(fifo_add(&fifo, 1)); + value.error_code = 1; + CU_ASSERT_TRUE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(1); CU_ASSERT_FALSE(fifo_is_empty(&fifo)); CU_ASSERT_FALSE(fifo_is_full(&fifo)); - CU_ASSERT_TRUE(fifo_add(&fifo, 2)); + value.error_code = 2; + CU_ASSERT_TRUE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(2); CU_ASSERT_FALSE(fifo_is_empty(&fifo)); CU_ASSERT_FALSE(fifo_is_full(&fifo)); - CU_ASSERT_TRUE(fifo_add(&fifo, 3)); + value.error_code = 3; + CU_ASSERT_TRUE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(3); CU_ASSERT_FALSE(fifo_is_empty(&fifo)); CU_ASSERT_FALSE(fifo_is_full(&fifo)); - CU_ASSERT_TRUE(fifo_add(&fifo, 4)); + value.error_code = 4; + CU_ASSERT_TRUE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(4); CU_ASSERT_FALSE(fifo_is_empty(&fifo)); CU_ASSERT_TRUE(fifo_is_full(&fifo)); - CU_ASSERT_EQUAL(fifo.data[0], 1); - CU_ASSERT_EQUAL(fifo.data[1], 2); - CU_ASSERT_EQUAL(fifo.data[2], 3); - CU_ASSERT_EQUAL(fifo.data[3], 4); + CU_ASSERT_EQUAL(fifo.data[0].error_code, 1); + CU_ASSERT_EQUAL(fifo.data[1].error_code, 2); + CU_ASSERT_EQUAL(fifo.data[2].error_code, 3); + CU_ASSERT_EQUAL(fifo.data[3].error_code, 4); - - CU_ASSERT_FALSE(fifo_add(&fifo, 5)); + value.error_code = 5; + CU_ASSERT_FALSE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(4); CU_ASSERT_FALSE(fifo_is_empty(&fifo)); CU_ASSERT_TRUE(fifo_is_full(&fifo)); - CU_ASSERT_EQUAL(fifo.data[0], 1); - CU_ASSERT_EQUAL(fifo.data[1], 2); - CU_ASSERT_EQUAL(fifo.data[2], 3); - CU_ASSERT_EQUAL(fifo.data[3], 4); + CU_ASSERT_EQUAL(fifo.data[0].error_code, 1); + CU_ASSERT_EQUAL(fifo.data[1].error_code, 2); + CU_ASSERT_EQUAL(fifo.data[2].error_code, 3); + CU_ASSERT_EQUAL(fifo.data[3].error_code, 4); CU_ASSERT_TRUE(fifo_remove_last(&fifo, &value)); - CU_ASSERT_EQUAL(value, 4); + CU_ASSERT_EQUAL(value.error_code, 4); TEST_FIFO_COUNT(3); CU_ASSERT_FALSE(fifo_is_empty(&fifo)); CU_ASSERT_FALSE(fifo_is_full(&fifo)); - CU_ASSERT_TRUE(fifo_add(&fifo, 6)); + value.error_code = 6; + CU_ASSERT_TRUE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(4); CU_ASSERT_FALSE(fifo_is_empty(&fifo)); CU_ASSERT_TRUE(fifo_is_full(&fifo)); - CU_ASSERT_EQUAL(fifo.data[0], 1); - CU_ASSERT_EQUAL(fifo.data[1], 2); - CU_ASSERT_EQUAL(fifo.data[2], 3); - CU_ASSERT_EQUAL(fifo.data[3], 6); + CU_ASSERT_EQUAL(fifo.data[0].error_code, 1); + CU_ASSERT_EQUAL(fifo.data[1].error_code, 2); + CU_ASSERT_EQUAL(fifo.data[2].error_code, 3); + CU_ASSERT_EQUAL(fifo.data[3].error_code, 6); CU_ASSERT_TRUE(fifo_remove(&fifo, &value)); - CU_ASSERT_EQUAL(value, 1); + CU_ASSERT_EQUAL(value.error_code, 1); TEST_FIFO_COUNT(3); CU_ASSERT_FALSE(fifo_is_empty(&fifo)); CU_ASSERT_FALSE(fifo_is_full(&fifo)); - CU_ASSERT_TRUE(fifo_add(&fifo, 7)); + value.error_code = 7; + CU_ASSERT_TRUE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(4); CU_ASSERT_TRUE(fifo_remove(&fifo, &value)); - CU_ASSERT_EQUAL(value, 2); + CU_ASSERT_EQUAL(value.error_code, 2); TEST_FIFO_COUNT(3); CU_ASSERT_TRUE(fifo_remove(&fifo, &value)); - CU_ASSERT_EQUAL(value, 3); + CU_ASSERT_EQUAL(value.error_code, 3); TEST_FIFO_COUNT(2); - CU_ASSERT_TRUE(fifo_add(&fifo, 10)); + value.error_code = 10; + CU_ASSERT_TRUE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(3); - CU_ASSERT_TRUE(fifo_add(&fifo, 11)); + value.error_code = 11; + CU_ASSERT_TRUE(fifo_add(&fifo, &value)); TEST_FIFO_COUNT(4); CU_ASSERT_TRUE(fifo_remove(&fifo, &value)); - CU_ASSERT_EQUAL(value, 6); + CU_ASSERT_EQUAL(value.error_code, 6); TEST_FIFO_COUNT(3); CU_ASSERT_TRUE(fifo_remove(&fifo, &value)); - CU_ASSERT_EQUAL(value, 7); + CU_ASSERT_EQUAL(value.error_code, 7); TEST_FIFO_COUNT(2); CU_ASSERT_TRUE(fifo_remove_last(&fifo, &value)); - CU_ASSERT_EQUAL(value, 11); + CU_ASSERT_EQUAL(value.error_code, 11); TEST_FIFO_COUNT(1); CU_ASSERT_TRUE(fifo_remove(&fifo, &value)); - CU_ASSERT_EQUAL(value, 10); + CU_ASSERT_EQUAL(value.error_code, 10); TEST_FIFO_COUNT(0); CU_ASSERT_FALSE(fifo_remove(&fifo, &value)); diff --git a/libscpi/test/test_parser.c b/libscpi/test/test_parser.c index 580a721..f08f692 100644 --- a/libscpi/test/test_parser.c +++ b/libscpi/test/test_parser.c @@ -184,7 +184,7 @@ static char scpi_input_buffer[SCPI_INPUT_BUFFER_LENGTH]; #define SCPI_ERROR_QUEUE_SIZE 4 -static int16_t scpi_error_queue_data[SCPI_ERROR_QUEUE_SIZE]; +static scpi_error_t scpi_error_queue_data[SCPI_ERROR_QUEUE_SIZE]; static int init_suite(void) { SCPI_Init(&scpi_context, @@ -193,7 +193,8 @@ scpi_units_def, "MA", "IN", NULL, "VER", scpi_input_buffer, SCPI_INPUT_BUFFER_LENGTH, - scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE); + scpi_error_queue_data, SCPI_ERROR_QUEUE_SIZE, + NULL, 0); return 0; } @@ -387,7 +388,7 @@ { \ int32_t value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -396,12 +397,12 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamInt32(&scpi_context, &value, mandatory); \ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_EQUAL(value, expected_value); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamInt32(void) { @@ -426,7 +427,7 @@ { \ uint32_t value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -435,12 +436,12 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamUInt32(&scpi_context, &value, mandatory); \ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_EQUAL(value, expected_value); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamUInt32(void) { @@ -465,7 +466,7 @@ { \ int64_t value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -474,12 +475,12 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamInt64(&scpi_context, &value, mandatory); \ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_EQUAL(value, expected_value); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamInt64(void) { @@ -506,7 +507,7 @@ { \ uint64_t value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -515,12 +516,12 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamUInt64(&scpi_context, &value, mandatory); \ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_EQUAL(value, expected_value); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamUInt64(void) { @@ -548,7 +549,7 @@ { \ float value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -557,12 +558,12 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamFloat(&scpi_context, &value, mandatory); \ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_DOUBLE_EQUAL(value, expected_value, 0.000001); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamFloat(void) { @@ -584,7 +585,7 @@ { \ double value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -593,12 +594,12 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamDouble(&scpi_context, &value, mandatory); \ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_DOUBLE_EQUAL(value, expected_value, 0.000001); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamDouble(void) { @@ -621,7 +622,7 @@ const char * value; \ size_t value_len; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -630,12 +631,12 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamCharacters(&scpi_context, &value, &value_len, mandatory); \ /*printf("%.*s\r\n", (int)value_len, value);*/ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_NSTRING_EQUAL(value, expected_value, value_len); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamCharacters(void) { @@ -653,7 +654,7 @@ char value[100]; \ size_t value_len; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -662,13 +663,13 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamCopyText(&scpi_context, value, sizeof(value), &value_len, mandatory);\ /*printf("%.*s\r\n", (int)value_len, value);*/ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_STRING_EQUAL(value, expected_value); \ CU_ASSERT_EQUAL(value_len, expected_len); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamCopyText(void) { @@ -689,21 +690,21 @@ const char * value; \ size_t value_len; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ scpi_context.param_list.lex_state.buffer = data; \ scpi_context.param_list.lex_state.len = strlen(scpi_context.param_list.lex_state.buffer);\ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ - result = SCPI_ParamArbitraryBlock(&scpi_context, &value, &value_len, mandatory); \ + result = SCPI_ParamArbitraryBlock(&scpi_context, &value, &value_len, mandatory); \ /*printf("%.*s\r\n", (int)value_len, value);*/ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_NSTRING_EQUAL(value, expected_value, value_len); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamArbitraryBlock(void) { TEST_ParamArbitraryBlock("#204ABCD", TRUE, "ABCD", TRUE, 0); @@ -714,21 +715,21 @@ { \ scpi_bool_t value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ scpi_context.param_list.lex_state.buffer = data; \ scpi_context.param_list.lex_state.len = strlen(scpi_context.param_list.lex_state.buffer);\ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ - result = SCPI_ParamBool(&scpi_context, &value, mandatory); \ + result = SCPI_ParamBool(&scpi_context, &value, mandatory); \ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_EQUAL(value, expected_value); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamBool(void) { TEST_ParamBool("ON", TRUE, TRUE, TRUE, 0); @@ -743,7 +744,7 @@ { \ int32_t value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -752,12 +753,12 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamChoice(&scpi_context, test_options, &value, mandatory); \ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_EQUAL(value, expected_value); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testSCPI_ParamChoice(void) { scpi_choice_def_t test_options[] = { @@ -778,7 +779,7 @@ { \ scpi_bool_t result; \ scpi_expr_result_t result2; \ - int16_t errCode; \ + scpi_error_t errCode; \ scpi_parameter_t param; \ int32_t val_from, val_to; \ scpi_bool_t val_range; \ @@ -790,7 +791,7 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_Parameter(&scpi_context, ¶m, TRUE); \ result2 = SCPI_ExprNumericListEntryInt(&scpi_context, ¶m, index, &val_range, &val_from, &val_to);\ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result2, expected_result); \ if (expected_result == SCPI_EXPR_OK) { \ CU_ASSERT_EQUAL(val_range, expected_range); \ @@ -799,14 +800,14 @@ CU_ASSERT_EQUAL(val_to, expected_to); \ } \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } #define TEST_NumericListDouble(data, index, expected_range, expected_from, expected_to, expected_result, expected_error_code) \ { \ scpi_bool_t result; \ scpi_expr_result_t result2; \ - int16_t errCode; \ + scpi_error_t errCode; \ scpi_parameter_t param; \ double val_from, val_to; \ scpi_bool_t val_range; \ @@ -818,7 +819,7 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_Parameter(&scpi_context, ¶m, TRUE); \ result2 = SCPI_ExprNumericListEntryDouble(&scpi_context, ¶m, index, &val_range, &val_from, &val_to);\ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result2, expected_result); \ if (expected_result == SCPI_EXPR_OK) { \ CU_ASSERT_EQUAL(val_range, expected_range); \ @@ -827,7 +828,7 @@ CU_ASSERT_DOUBLE_EQUAL(val_to, expected_to, 0.0001); \ } \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testNumericList(void) { @@ -864,7 +865,7 @@ { \ scpi_bool_t result; \ scpi_expr_result_t result2; \ - int16_t errCode; \ + scpi_error_t errCode; \ scpi_parameter_t param; \ int32_t val_from[val_len], val_to[val_len]; \ scpi_bool_t val_range; \ @@ -879,7 +880,7 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_Parameter(&scpi_context, ¶m, TRUE); \ result2 = SCPI_ExprChannelListEntry(&scpi_context, ¶m, index, &val_range, val_from, val_to, val_len, &val_dimensions);\ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result2, expected_result); \ if (expected_result == SCPI_EXPR_OK) { \ CU_ASSERT_EQUAL(val_dimensions, expected_dimensions); \ @@ -893,7 +894,7 @@ }} \ } \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testChannelList(void) { @@ -935,7 +936,7 @@ { \ scpi_number_t value; \ scpi_bool_t result; \ - int16_t errCode; \ + scpi_error_t errCode; \ \ SCPI_CoreCls(&scpi_context); \ scpi_context.input_count = 0; \ @@ -944,7 +945,7 @@ scpi_context.param_list.lex_state.pos = scpi_context.param_list.lex_state.buffer; \ result = SCPI_ParamNumber(&scpi_context, scpi_special_numbers_def, &value, mandatory);\ \ - errCode = SCPI_ErrorPop(&scpi_context); \ + SCPI_ErrorPop(&scpi_context, &errCode); \ CU_ASSERT_EQUAL(result, expected_result); \ if (expected_result) { \ CU_ASSERT_EQUAL(value.special, expected_special); \ @@ -953,7 +954,7 @@ CU_ASSERT_EQUAL(value.unit, expected_unit); \ CU_ASSERT_EQUAL(value.base, expected_base); \ } \ - CU_ASSERT_EQUAL(errCode, expected_error_code); \ + CU_ASSERT_EQUAL(errCode.error_code, expected_error_code); \ } static void testParamNumber(void) { @@ -1282,6 +1283,7 @@ } static void testErrorQueue(void) { + scpi_error_t val; SCPI_ErrorClear(&scpi_context); CU_ASSERT_EQUAL(SCPI_ErrorCount(&scpi_context), 0); SCPI_ErrorPush(&scpi_context, -1); @@ -1297,15 +1299,20 @@ SCPI_ErrorPush(&scpi_context, -6); CU_ASSERT_EQUAL(SCPI_ErrorCount(&scpi_context), 4); - CU_ASSERT_EQUAL(SCPI_ErrorPop(&scpi_context), -1); + SCPI_ErrorPop(&scpi_context, &val); + CU_ASSERT_EQUAL(val.error_code, -1); CU_ASSERT_EQUAL(SCPI_ErrorCount(&scpi_context), 3); - CU_ASSERT_EQUAL(SCPI_ErrorPop(&scpi_context), -2); + SCPI_ErrorPop(&scpi_context, &val); + CU_ASSERT_EQUAL(val.error_code, -2); CU_ASSERT_EQUAL(SCPI_ErrorCount(&scpi_context), 2); - CU_ASSERT_EQUAL(SCPI_ErrorPop(&scpi_context), -3); + SCPI_ErrorPop(&scpi_context, &val); + CU_ASSERT_EQUAL(val.error_code, -3); CU_ASSERT_EQUAL(SCPI_ErrorCount(&scpi_context), 1); - CU_ASSERT_EQUAL(SCPI_ErrorPop(&scpi_context), SCPI_ERROR_QUEUE_OVERFLOW); + SCPI_ErrorPop(&scpi_context, &val); + CU_ASSERT_EQUAL(val.error_code, SCPI_ERROR_QUEUE_OVERFLOW); CU_ASSERT_EQUAL(SCPI_ErrorCount(&scpi_context), 0); - CU_ASSERT_EQUAL(SCPI_ErrorPop(&scpi_context), 0); + SCPI_ErrorPop(&scpi_context, &val); + CU_ASSERT_EQUAL(val.error_code, 0); CU_ASSERT_EQUAL(SCPI_ErrorCount(&scpi_context), 0); SCPI_ErrorClear(&scpi_context); -- Gitblit v1.9.1