@@ -35,6 +35,27 @@ void test_calculate_checksum_with_max_values(void) {
3535 TEST_ASSERT_EQUAL_UINT8 (expected_checksum , actual_checksum );
3636}
3737
38+ void test_calculate_checksum_with_null_buffer (void ) {
39+ uint8_t * data = NULL ;
40+ uint8_t expected_checksum = 0 ; // Null buffer should return 0
41+ uint8_t actual_checksum = calculate_checksum (data , 10 ); // Length is arbitrary since buffer is NULL
42+ TEST_ASSERT_EQUAL_UINT8 (expected_checksum , actual_checksum );
43+ }
44+
45+ void test_calculate_checksum_with_zero_length (void ) {
46+ uint8_t data [] = {0x01 , 0x02 , 0x03 };
47+ uint8_t expected_checksum = 0 ; // Zero length should return 0
48+ uint8_t actual_checksum = calculate_checksum (data , 0 );
49+ TEST_ASSERT_EQUAL_UINT8 (expected_checksum , actual_checksum );
50+ }
51+
52+ void test_calculate_zero_checksum (void ) {
53+ uint8_t data [] = {0x00 , 0x00 , 0x00 , 0x00 };
54+ uint8_t expected_checksum = 0 ; // All zeros should yield a checksum of 0
55+ uint8_t actual_checksum = calculate_checksum (data , sizeof (data ));
56+ TEST_ASSERT_EQUAL_UINT8 (expected_checksum , actual_checksum );
57+ }
58+
3859int main (void ) {
3960
4061 uart_init ();
@@ -44,6 +65,9 @@ int main(void) {
4465 RUN_TEST (test_calculate_checksum_with_valid_data );
4566 RUN_TEST (test_calculate_checksum_with_empty_data );
4667 RUN_TEST (test_calculate_checksum_with_max_values );
68+ RUN_TEST (test_calculate_checksum_with_null_buffer );
69+ RUN_TEST (test_calculate_checksum_with_zero_length );
70+ RUN_TEST (test_calculate_zero_checksum );
4771
4872 int failures = UNITY_END ();
4973
0 commit comments