From 911a82cd839893440177ef53d0ade5e86dff07f9 Mon Sep 17 00:00:00 2001 From: mbanth Date: Wed, 25 Aug 2021 18:16:54 +0100 Subject: [PATCH] Add test for the case of a modified item that of length 1 that overwrites data of length 2 --- tests/xua_unit_tests/src/test_hid.c | 51 +++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/tests/xua_unit_tests/src/test_hid.c b/tests/xua_unit_tests/src/test_hid.c index 079ca654..e5ddcba4 100644 --- a/tests/xua_unit_tests/src/test_hid.c +++ b/tests/xua_unit_tests/src/test_hid.c @@ -14,6 +14,7 @@ #define CONSUMER_CONTROL_PAGE ( 0x0C ) #define LOUDNESS_CONTROL ( 0xE7 ) +#define AL_CONTROL_PANEL ( 0x019F ) static unsigned construct_usage_header( unsigned size ) { @@ -411,7 +412,7 @@ void test_initial_modification_with_subsequent_preparation( void ) TEST_ASSERT_NOT_NULL( reportDescPtr ); } -void test_initial_modification_with_subsequent_verification( void ) +void test_initial_modification_with_subsequent_verification_1( void ) { const unsigned bit = MIN_VALID_BIT; const unsigned byte = MIN_VALID_BYTE; @@ -432,7 +433,53 @@ void test_initial_modification_with_subsequent_verification( void ) TEST_ASSERT_EQUAL_UINT( get_page, set_page ); TEST_ASSERT_EQUAL_UINT( get_header, set_header ); TEST_ASSERT_EQUAL_UINT( get_data[ 0 ], set_data[ 0 ]); - TEST_ASSERT_EQUAL_UINT( get_data[ 1 ], set_data[ 1 ]); + TEST_ASSERT_EQUAL_UINT( get_data[ 1 ], 0 ); // Should be MSB of data from hidUsageByte0Bit0 in hid_report_descriptor.h +} + +void test_initial_modification_with_subsequent_verification_2( void ) +{ + const unsigned bit = MIN_VALID_BIT; + const unsigned byte = MIN_VALID_BYTE; + + { + unsigned char get_data[ HID_REPORT_ITEM_MAX_SIZE ] = { 0xFF, 0xFF }; + unsigned char get_header = 0xFF; + unsigned char get_page = 0xFF; + + const unsigned char set_data[ 2 ] = {( AL_CONTROL_PANEL & 0x00FF ), (( AL_CONTROL_PANEL & 0xFF00 ) >> 8 )}; + const unsigned char set_header = construct_usage_header( sizeof set_data / sizeof( unsigned char )); + const unsigned char set_page = CONSUMER_CONTROL_PAGE; + + unsigned setRetVal = hidSetReportItem( byte, bit, set_page, set_header, set_data ); + TEST_ASSERT_EQUAL_UINT( HID_STATUS_GOOD, setRetVal ); + + unsigned getRetVal = hidGetReportItem( byte, bit, &get_page, &get_header, get_data ); + TEST_ASSERT_EQUAL_UINT( HID_STATUS_GOOD, getRetVal ); + TEST_ASSERT_EQUAL_UINT( get_page, set_page ); + TEST_ASSERT_EQUAL_UINT( get_header, set_header ); + TEST_ASSERT_EQUAL_UINT( get_data[ 0 ], set_data[ 0 ]); + TEST_ASSERT_EQUAL_UINT( get_data[ 1 ], set_data[ 1 ]); + } + + { + unsigned char get_data[ HID_REPORT_ITEM_MAX_SIZE ] = { 0xFF, 0xFF }; + unsigned char get_header = 0xFF; + unsigned char get_page = 0xFF; + + const unsigned char set_data[ 1 ] = { LOUDNESS_CONTROL }; + const unsigned char set_header = construct_usage_header( sizeof set_data / sizeof( unsigned char )); + const unsigned char set_page = CONSUMER_CONTROL_PAGE; + + unsigned setRetVal = hidSetReportItem( byte, bit, set_page, set_header, set_data ); + TEST_ASSERT_EQUAL_UINT( HID_STATUS_GOOD, setRetVal ); + + unsigned getRetVal = hidGetReportItem( byte, bit, &get_page, &get_header, get_data ); + TEST_ASSERT_EQUAL_UINT( HID_STATUS_GOOD, getRetVal ); + TEST_ASSERT_EQUAL_UINT( get_page, set_page ); + TEST_ASSERT_EQUAL_UINT( get_header, set_header ); + TEST_ASSERT_EQUAL_UINT( get_data[ 0 ], set_data[ 0 ]); + TEST_ASSERT_EQUAL_UINT( get_data[ 1 ], 0 ); // The call to hidSetReportItem with size 1 in the header should return the MSB to zero + } } void test_modification_without_subsequent_preparation( void )