Add sending of small frames with no zeroes
This commit is contained in:
		
							parent
							
								
									26537474ae
								
							
						
					
					
						commit
						a089eaa868
					
				
					 4 changed files with 82 additions and 16 deletions
				
			
		|  | @ -27,12 +27,16 @@ SOFTWARE. | |||
| #include "protocol/byte_stuffer.h" | ||||
| #include "protocol/byte_stuffer.c" | ||||
| #include "protocol/frame_validator.h" | ||||
| #include "protocol/physical.h" | ||||
| 
 | ||||
| byte_stuffer_state_t state; | ||||
| static byte_stuffer_state_t state; | ||||
| static uint8_t sent_data[MAX_FRAME_SIZE*2]; | ||||
| static uint16_t sent_data_size; | ||||
| 
 | ||||
| Describe(ByteStuffer); | ||||
| BeforeEach(ByteStuffer) { | ||||
|     init_byte_stuffer_state(&state); | ||||
|     sent_data_size = 0; | ||||
| } | ||||
| AfterEach(ByteStuffer) {} | ||||
| 
 | ||||
|  | @ -40,6 +44,11 @@ void recv_frame(uint8_t* data, uint16_t size) { | |||
|     mock(data, size); | ||||
| } | ||||
| 
 | ||||
| void send_data(const uint8_t* data, uint16_t size) { | ||||
|     memcpy(sent_data + sent_data_size, data, size); | ||||
|     sent_data_size += size; | ||||
| } | ||||
| 
 | ||||
| Ensure(ByteStuffer, receives_no_frame_for_a_single_zero_byte) { | ||||
|     never_expect(recv_frame); | ||||
|     recv_byte(&state, 0); | ||||
|  | @ -66,7 +75,7 @@ Ensure(ByteStuffer, receives_single_byte_valid_frame) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(1)), | ||||
|         when(data, is_equal_to_contents_of(expected, 1)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 2); | ||||
|     recv_byte(&state, 0x37); | ||||
|     recv_byte(&state, 0); | ||||
|  | @ -77,7 +86,7 @@ Ensure(ByteStuffer, receives_three_bytes_valid_frame) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(3)), | ||||
|         when(data, is_equal_to_contents_of(expected, 3)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 4); | ||||
|     recv_byte(&state, 0x37); | ||||
|     recv_byte(&state, 0x99); | ||||
|  | @ -90,7 +99,7 @@ Ensure(ByteStuffer, receives_single_zero_valid_frame) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(1)), | ||||
|         when(data, is_equal_to_contents_of(expected, 1)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 1); | ||||
|     recv_byte(&state, 1); | ||||
|     recv_byte(&state, 0); | ||||
|  | @ -101,7 +110,7 @@ Ensure(ByteStuffer, receives_valid_frame_with_zeroes) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(4)), | ||||
|         when(data, is_equal_to_contents_of(expected, 4)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 2); | ||||
|     recv_byte(&state, 5); | ||||
|     recv_byte(&state, 2); | ||||
|  | @ -116,11 +125,11 @@ Ensure(ByteStuffer, receives_two_valid_frames) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(2)), | ||||
|         when(data, is_equal_to_contents_of(expected1, 2)) | ||||
|         ); | ||||
|     ); | ||||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(1)), | ||||
|         when(data, is_equal_to_contents_of(expected2, 1)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 2); | ||||
|     recv_byte(&state, 5); | ||||
|     recv_byte(&state, 1); | ||||
|  | @ -135,7 +144,7 @@ Ensure(ByteStuffer, receives_valid_frame_after_unexpected_zero) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(2)), | ||||
|         when(data, is_equal_to_contents_of(expected, 2)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 3); | ||||
|     recv_byte(&state, 1); | ||||
|     recv_byte(&state, 0); | ||||
|  | @ -150,7 +159,7 @@ Ensure(ByteStuffer, receives_valid_frame_after_unexpected_non_zero) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(2)), | ||||
|         when(data, is_equal_to_contents_of(expected, 2)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 2); | ||||
|     recv_byte(&state, 9); | ||||
|     recv_byte(&state, 4); // This should have been zero
 | ||||
|  | @ -170,7 +179,7 @@ Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_and_then_end_ | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(254)), | ||||
|         when(data, is_equal_to_contents_of(expected, 254)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 0xFF); | ||||
|     for (i=0;i<254;i++) { | ||||
|         recv_byte(&state, i+1); | ||||
|  | @ -188,7 +197,7 @@ Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_ | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(255)), | ||||
|         when(data, is_equal_to_contents_of(expected, 255)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 0xFF); | ||||
|     for (i=0;i<254;i++) { | ||||
|         recv_byte(&state, i+1); | ||||
|  | @ -208,7 +217,7 @@ Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_ | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(255)), | ||||
|         when(data, is_equal_to_contents_of(expected, 255)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 0xFF); | ||||
|     for (i=0;i<254;i++) { | ||||
|         recv_byte(&state, i+1); | ||||
|  | @ -233,7 +242,7 @@ Ensure(ByteStuffer, receives_two_long_frames_and_some_more) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(515)), | ||||
|         when(data, is_equal_to_contents_of(expected, 510)) | ||||
|         ); | ||||
|     ); | ||||
|     recv_byte(&state, 0xFF); | ||||
|     for (i=0;i<254;i++) { | ||||
|         recv_byte(&state, i+1); | ||||
|  | @ -258,7 +267,7 @@ Ensure(ByteStuffer, receives_an_all_zeros_frame_that_is_maximum_size) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(MAX_FRAME_SIZE)), | ||||
|         when(data, is_equal_to_contents_of(expected, MAX_FRAME_SIZE)) | ||||
|         ); | ||||
|     ); | ||||
|     int i; | ||||
|     recv_byte(&state, 1); | ||||
|     for(i=0;i<MAX_FRAME_SIZE;i++) { | ||||
|  | @ -284,7 +293,7 @@ Ensure(ByteStuffer, received_frame_is_aborted_when_its_too_long) { | |||
|     expect(recv_frame, | ||||
|         when(size, is_equal_to(1)), | ||||
|         when(data, is_equal_to_contents_of(expected, 1)) | ||||
|         ); | ||||
|     ); | ||||
|     int i; | ||||
|     recv_byte(&state, 1); | ||||
|     for(i=0;i<MAX_FRAME_SIZE;i++) { | ||||
|  | @ -294,3 +303,24 @@ Ensure(ByteStuffer, received_frame_is_aborted_when_its_too_long) { | |||
|     recv_byte(&state, 1); | ||||
|     recv_byte(&state, 0); | ||||
| } | ||||
| 
 | ||||
| Ensure(ByteStuffer, send_zero_size_frame_does_nothing) { | ||||
|     assert_that(sent_data_size, is_equal_to(0)); | ||||
|     send_frame(NULL, 0); | ||||
| } | ||||
| 
 | ||||
| Ensure(ByteStuffer, send_one_byte_frame) { | ||||
|     uint8_t data[] = {5}; | ||||
|     send_frame(data, 1); | ||||
|     assert_that(sent_data_size, is_equal_to(3)); | ||||
|     uint8_t expected[] = {2, 5, 0}; | ||||
|     assert_that(sent_data, is_equal_to_contents_of(expected, 3)); | ||||
| } | ||||
| 
 | ||||
| Ensure(ByteStuffer, send_two_byte_frame) { | ||||
|     uint8_t data[] = {5, 0x77}; | ||||
|     send_frame(data, 2); | ||||
|     assert_that(sent_data_size, is_equal_to(4)); | ||||
|     uint8_t expected[] = {3, 5, 0x77, 0}; | ||||
|     assert_that(sent_data, is_equal_to_contents_of(expected, 4)); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fred Sundvik
						Fred Sundvik