1
0
Fork 0

Add sending of small frames with no zeroes

This commit is contained in:
Fred Sundvik 2016-02-14 17:45:25 +02:00
parent 26537474ae
commit a089eaa868
4 changed files with 82 additions and 16 deletions

View file

@ -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));
}