aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2016-08-24 22:23:17 +0300
committerFred Sundvik <fsundvik@gmail.com>2016-08-27 21:57:49 +0300
commit0a11460175d6a838c71343c19eb4ce4699936247 (patch)
treee2e96c421172e212d6e623127d40d4582bd02127
parent8a9aac6e3237a505682cc7249a8dfff6cb964343 (diff)
downloadqmk_firmware-0a11460175d6a838c71343c19eb4ce4699936247.tar.gz
qmk_firmware-0a11460175d6a838c71343c19eb4ce4699936247.zip
Build actual tests, convert byte_stuffer_tests
-rw-r--r--build_keyboard.mk6
-rw-r--r--build_test.mk14
-rw-r--r--common.mk16
-rw-r--r--quantum/serial_link/protocol/byte_stuffer.c3
-rw-r--r--quantum/serial_link/protocol/byte_stuffer.h3
-rw-r--r--quantum/serial_link/tests/byte_stuffer_tests.cpp (renamed from quantum/serial_link/tests/byte_stuffer_tests.c)313
-rw-r--r--quantum/serial_link/tests/rules.mk3
7 files changed, 179 insertions, 179 deletions
diff --git a/build_keyboard.mk b/build_keyboard.mk
index 869d672b0..164794c63 100644
--- a/build_keyboard.mk
+++ b/build_keyboard.mk
@@ -155,12 +155,8 @@ ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
155endif 155endif
156 156
157ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes) 157ifeq ($(strip $(SERIAL_LINK_ENABLE)), yes)
158 SERIAL_DIR = $(QUANTUM_DIR)/serial_link
159 SERIAL_PATH = $(QUANTUM_PATH)/serial_link
160 SERIAL_SRC = $(wildcard $(SERIAL_PATH)/protocol/*.c)
161 SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
162 SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC)) 158 SRC += $(patsubst $(QUANTUM_PATH)/%,%,$(SERIAL_SRC))
163 OPT_DEFS += -DSERIAL_LINK_ENABLE 159 OPT_DEFS += $(SERIAL_DEFS)
164 VAPTH += $(SERIAL_PATH) 160 VAPTH += $(SERIAL_PATH)
165endif 161endif
166 162
diff --git a/build_test.mk b/build_test.mk
index dac59a8f4..1d8cb08b1 100644
--- a/build_test.mk
+++ b/build_test.mk
@@ -10,7 +10,9 @@ TARGET=test/$(TEST)
10 10
11GTEST_OUTPUT = $(BUILD_DIR)/gtest 11GTEST_OUTPUT = $(BUILD_DIR)/gtest
12 12
13OUTPUTS := $(GTEST_OUTPUT) 13TEST_OBJ = $(BUILD_DIR)/test_obj
14
15OUTPUTS := $(TEST_OBJ)/$(TEST) $(GTEST_OUTPUT)
14 16
15GTEST_INC := \ 17GTEST_INC := \
16 $(LIB_PATH)/googletest/googletest/include\ 18 $(LIB_PATH)/googletest/googletest/include\
@@ -36,8 +38,16 @@ VPATH +=\
36 38
37all: elf 39all: elf
38 40
41include $(QUANTUM_PATH)/serial_link/tests/rules.mk
42
43$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
44$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)
45$(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
46
39include $(TMK_PATH)/native.mk 47include $(TMK_PATH)/native.mk
40include $(TMK_PATH)/rules.mk 48include $(TMK_PATH)/rules.mk
41 49
42$(shell mkdir $(BUILD_DIR)/test 2>/dev/null) 50
51$(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null)
52$(shell mkdir -p $(TEST_OBJ) 2>/dev/null)
43 53
diff --git a/common.mk b/common.mk
index 689fdf5a5..f9b0773a8 100644
--- a/common.mk
+++ b/common.mk
@@ -9,4 +9,18 @@ LIB_PATH = $(TOP_DIR)/lib
9QUANTUM_DIR = quantum 9QUANTUM_DIR = quantum
10QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR) 10QUANTUM_PATH = $(TOP_DIR)/$(QUANTUM_DIR)
11 11
12BUILD_DIR := $(TOP_DIR)/.build \ No newline at end of file 12BUILD_DIR := $(TOP_DIR)/.build
13
14SERIAL_DIR := $(QUANTUM_DIR)/serial_link
15SERIAL_PATH := $(QUANTUM_PATH)/serial_link
16SERIAL_SRC := $(wildcard $(SERIAL_PATH)/protocol/*.c)
17SERIAL_SRC += $(wildcard $(SERIAL_PATH)/system/*.c)
18SERIAL_DEFS += -DSERIAL_LINK_ENABLE
19
20VPATH += $(TOP_DIR)
21VPATH += $(TMK_PATH)
22VPATH += $(QUANTUM_PATH)
23VPATH += $(QUANTUM_PATH)/keymap_extras
24VPATH += $(QUANTUM_PATH)/audio
25VPATH += $(QUANTUM_PATH)/process_keycode
26VPATH += $(SERIAL_PATH) \ No newline at end of file
diff --git a/quantum/serial_link/protocol/byte_stuffer.c b/quantum/serial_link/protocol/byte_stuffer.c
index fb4c45a8d..2c87d64c2 100644
--- a/quantum/serial_link/protocol/byte_stuffer.c
+++ b/quantum/serial_link/protocol/byte_stuffer.c
@@ -31,9 +31,6 @@ SOFTWARE.
31// https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing 31// https://en.wikipedia.org/wiki/Consistent_Overhead_Byte_Stuffing
32// http://www.stuartcheshire.org/papers/COBSforToN.pdf 32// http://www.stuartcheshire.org/papers/COBSforToN.pdf
33 33
34#define MAX_FRAME_SIZE 1024
35#define NUM_LINKS 2
36
37typedef struct byte_stuffer_state { 34typedef struct byte_stuffer_state {
38 uint16_t next_zero; 35 uint16_t next_zero;
39 uint16_t data_pos; 36 uint16_t data_pos;
diff --git a/quantum/serial_link/protocol/byte_stuffer.h b/quantum/serial_link/protocol/byte_stuffer.h
index 2cc88beb4..97e896856 100644
--- a/quantum/serial_link/protocol/byte_stuffer.h
+++ b/quantum/serial_link/protocol/byte_stuffer.h
@@ -27,6 +27,9 @@ SOFTWARE.
27 27
28#include <stdint.h> 28#include <stdint.h>
29 29
30#define MAX_FRAME_SIZE 1024
31#define NUM_LINKS 2
32
30void init_byte_stuffer(void); 33void init_byte_stuffer(void);
31void byte_stuffer_recv_byte(uint8_t link, uint8_t data); 34void byte_stuffer_recv_byte(uint8_t link, uint8_t data);
32void byte_stuffer_send_frame(uint8_t link, uint8_t* data, uint16_t size); 35void byte_stuffer_send_frame(uint8_t link, uint8_t* data, uint16_t size);
diff --git a/quantum/serial_link/tests/byte_stuffer_tests.c b/quantum/serial_link/tests/byte_stuffer_tests.cpp
index 64b170e8c..ff49d727b 100644
--- a/quantum/serial_link/tests/byte_stuffer_tests.c
+++ b/quantum/serial_link/tests/byte_stuffer_tests.cpp
@@ -22,70 +22,90 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22SOFTWARE. 22SOFTWARE.
23*/ 23*/
24 24
25#include <cgreen/cgreen.h> 25#include "gtest/gtest.h"
26#include <cgreen/mocks.h> 26#include "gmock/gmock.h"
27#include <vector>
28#include <algorithm>
29extern "C" {
27#include "serial_link/protocol/byte_stuffer.h" 30#include "serial_link/protocol/byte_stuffer.h"
28#include "serial_link/protocol/byte_stuffer.c"
29#include "serial_link/protocol/frame_validator.h" 31#include "serial_link/protocol/frame_validator.h"
30#include "serial_link/protocol/physical.h" 32#include "serial_link/protocol/physical.h"
33}
31 34
32static uint8_t sent_data[MAX_FRAME_SIZE*2]; 35using testing::_;
33static uint16_t sent_data_size; 36using testing::ElementsAreArray;
37using testing::Args;
34 38
35Describe(ByteStuffer); 39class ByteStuffer : public ::testing::Test{
36BeforeEach(ByteStuffer) { 40public:
37 init_byte_stuffer(); 41 ByteStuffer() {
38 sent_data_size = 0; 42 Instance = this;
39} 43 init_byte_stuffer();
40AfterEach(ByteStuffer) {} 44 }
41 45
42void validator_recv_frame(uint8_t link, uint8_t* data, uint16_t size) { 46 ~ByteStuffer() {
43 mock(data, size); 47 Instance = nullptr;
44} 48 }
49
50 MOCK_METHOD3(validator_recv_frame, void (uint8_t link, uint8_t* data, uint16_t size));
51
52 void send_data(uint8_t link, const uint8_t* data, uint16_t size) {
53 std::copy(data, data + size, std::back_inserter(sent_data));
54 }
55 std::vector<uint8_t> sent_data;
45 56
46void send_data(uint8_t link, const uint8_t* data, uint16_t size) { 57 static ByteStuffer* Instance;
47 memcpy(sent_data + sent_data_size, data, size); 58};
48 sent_data_size += size; 59
60ByteStuffer* ByteStuffer::Instance = nullptr;
61
62extern "C" {
63 void validator_recv_frame(uint8_t link, uint8_t* data, uint16_t size) {
64 ByteStuffer::Instance->validator_recv_frame(link, data, size);
65 }
66
67 void send_data(uint8_t link, const uint8_t* data, uint16_t size) {
68 ByteStuffer::Instance->send_data(link, data, size);
69 }
49} 70}
50 71
51Ensure(ByteStuffer, receives_no_frame_for_a_single_zero_byte) { 72TEST_F(ByteStuffer, receives_no_frame_for_a_single_zero_byte) {
52 never_expect(validator_recv_frame); 73 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
74 .Times(0);
53 byte_stuffer_recv_byte(0, 0); 75 byte_stuffer_recv_byte(0, 0);
54} 76}
55 77
56Ensure(ByteStuffer, receives_no_frame_for_a_single_FF_byte) { 78TEST_F(ByteStuffer, receives_no_frame_for_a_single_FF_byte) {
57 never_expect(validator_recv_frame); 79 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
80 .Times(0);
58 byte_stuffer_recv_byte(0, 0xFF); 81 byte_stuffer_recv_byte(0, 0xFF);
59} 82}
60 83
61Ensure(ByteStuffer, receives_no_frame_for_a_single_random_byte) { 84TEST_F(ByteStuffer, receives_no_frame_for_a_single_random_byte) {
62 never_expect(validator_recv_frame); 85 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
86 .Times(0);
63 byte_stuffer_recv_byte(0, 0x4A); 87 byte_stuffer_recv_byte(0, 0x4A);
64} 88}
65 89
66Ensure(ByteStuffer, receives_no_frame_for_a_zero_length_frame) { 90TEST_F(ByteStuffer, receives_no_frame_for_a_zero_length_frame) {
67 never_expect(validator_recv_frame); 91 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
92 .Times(0);
68 byte_stuffer_recv_byte(0, 1); 93 byte_stuffer_recv_byte(0, 1);
69 byte_stuffer_recv_byte(0, 0); 94 byte_stuffer_recv_byte(0, 0);
70} 95}
71 96
72Ensure(ByteStuffer, receives_single_byte_valid_frame) { 97TEST_F(ByteStuffer, receives_single_byte_valid_frame) {
73 uint8_t expected[] = {0x37}; 98 uint8_t expected[] = {0x37};
74 expect(validator_recv_frame, 99 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
75 when(size, is_equal_to(1)), 100 .With(Args<1, 2>(ElementsAreArray(expected)));
76 when(data, is_equal_to_contents_of(expected, 1))
77 );
78 byte_stuffer_recv_byte(0, 2); 101 byte_stuffer_recv_byte(0, 2);
79 byte_stuffer_recv_byte(0, 0x37); 102 byte_stuffer_recv_byte(0, 0x37);
80 byte_stuffer_recv_byte(0, 0); 103 byte_stuffer_recv_byte(0, 0);
81} 104}
82 105TEST_F(ByteStuffer, receives_three_bytes_valid_frame) {
83Ensure(ByteStuffer, receives_three_bytes_valid_frame) {
84 uint8_t expected[] = {0x37, 0x99, 0xFF}; 106 uint8_t expected[] = {0x37, 0x99, 0xFF};
85 expect(validator_recv_frame, 107 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
86 when(size, is_equal_to(3)), 108 .With(Args<1, 2>(ElementsAreArray(expected)));
87 when(data, is_equal_to_contents_of(expected, 3))
88 );
89 byte_stuffer_recv_byte(0, 4); 109 byte_stuffer_recv_byte(0, 4);
90 byte_stuffer_recv_byte(0, 0x37); 110 byte_stuffer_recv_byte(0, 0x37);
91 byte_stuffer_recv_byte(0, 0x99); 111 byte_stuffer_recv_byte(0, 0x99);
@@ -93,23 +113,19 @@ Ensure(ByteStuffer, receives_three_bytes_valid_frame) {
93 byte_stuffer_recv_byte(0, 0); 113 byte_stuffer_recv_byte(0, 0);
94} 114}
95 115
96Ensure(ByteStuffer, receives_single_zero_valid_frame) { 116TEST_F(ByteStuffer, receives_single_zero_valid_frame) {
97 uint8_t expected[] = {0}; 117 uint8_t expected[] = {0};
98 expect(validator_recv_frame, 118 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
99 when(size, is_equal_to(1)), 119 .With(Args<1, 2>(ElementsAreArray(expected)));
100 when(data, is_equal_to_contents_of(expected, 1))
101 );
102 byte_stuffer_recv_byte(0, 1); 120 byte_stuffer_recv_byte(0, 1);
103 byte_stuffer_recv_byte(0, 1); 121 byte_stuffer_recv_byte(0, 1);
104 byte_stuffer_recv_byte(0, 0); 122 byte_stuffer_recv_byte(0, 0);
105} 123}
106 124
107Ensure(ByteStuffer, receives_valid_frame_with_zeroes) { 125TEST_F(ByteStuffer, receives_valid_frame_with_zeroes) {
108 uint8_t expected[] = {5, 0, 3, 0}; 126 uint8_t expected[] = {5, 0, 3, 0};
109 expect(validator_recv_frame, 127 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
110 when(size, is_equal_to(4)), 128 .With(Args<1, 2>(ElementsAreArray(expected)));
111 when(data, is_equal_to_contents_of(expected, 4))
112 );
113 byte_stuffer_recv_byte(0, 2); 129 byte_stuffer_recv_byte(0, 2);
114 byte_stuffer_recv_byte(0, 5); 130 byte_stuffer_recv_byte(0, 5);
115 byte_stuffer_recv_byte(0, 2); 131 byte_stuffer_recv_byte(0, 2);
@@ -118,17 +134,14 @@ Ensure(ByteStuffer, receives_valid_frame_with_zeroes) {
118 byte_stuffer_recv_byte(0, 0); 134 byte_stuffer_recv_byte(0, 0);
119} 135}
120 136
121Ensure(ByteStuffer, receives_two_valid_frames) { 137
138TEST_F(ByteStuffer, receives_two_valid_frames) {
122 uint8_t expected1[] = {5, 0}; 139 uint8_t expected1[] = {5, 0};
123 uint8_t expected2[] = {3}; 140 uint8_t expected2[] = {3};
124 expect(validator_recv_frame, 141 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
125 when(size, is_equal_to(2)), 142 .With(Args<1, 2>(ElementsAreArray(expected1)));
126 when(data, is_equal_to_contents_of(expected1, 2)) 143 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
127 ); 144 .With(Args<1, 2>(ElementsAreArray(expected2)));
128 expect(validator_recv_frame,
129 when(size, is_equal_to(1)),
130 when(data, is_equal_to_contents_of(expected2, 1))
131 );
132 byte_stuffer_recv_byte(1, 2); 145 byte_stuffer_recv_byte(1, 2);
133 byte_stuffer_recv_byte(1, 5); 146 byte_stuffer_recv_byte(1, 5);
134 byte_stuffer_recv_byte(1, 1); 147 byte_stuffer_recv_byte(1, 1);
@@ -138,12 +151,10 @@ Ensure(ByteStuffer, receives_two_valid_frames) {
138 byte_stuffer_recv_byte(1, 0); 151 byte_stuffer_recv_byte(1, 0);
139} 152}
140 153
141Ensure(ByteStuffer, receives_valid_frame_after_unexpected_zero) { 154TEST_F(ByteStuffer, receives_valid_frame_after_unexpected_zero) {
142 uint8_t expected[] = {5, 7}; 155 uint8_t expected[] = {5, 7};
143 expect(validator_recv_frame, 156 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
144 when(size, is_equal_to(2)), 157 .With(Args<1, 2>(ElementsAreArray(expected)));
145 when(data, is_equal_to_contents_of(expected, 2))
146 );
147 byte_stuffer_recv_byte(1, 3); 158 byte_stuffer_recv_byte(1, 3);
148 byte_stuffer_recv_byte(1, 1); 159 byte_stuffer_recv_byte(1, 1);
149 byte_stuffer_recv_byte(1, 0); 160 byte_stuffer_recv_byte(1, 0);
@@ -153,12 +164,10 @@ Ensure(ByteStuffer, receives_valid_frame_after_unexpected_zero) {
153 byte_stuffer_recv_byte(1, 0); 164 byte_stuffer_recv_byte(1, 0);
154} 165}
155 166
156Ensure(ByteStuffer, receives_valid_frame_after_unexpected_non_zero) { 167TEST_F(ByteStuffer, receives_valid_frame_after_unexpected_non_zero) {
157 uint8_t expected[] = {5, 7}; 168 uint8_t expected[] = {5, 7};
158 expect(validator_recv_frame, 169 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
159 when(size, is_equal_to(2)), 170 .With(Args<1, 2>(ElementsAreArray(expected)));
160 when(data, is_equal_to_contents_of(expected, 2))
161 );
162 byte_stuffer_recv_byte(0, 2); 171 byte_stuffer_recv_byte(0, 2);
163 byte_stuffer_recv_byte(0, 9); 172 byte_stuffer_recv_byte(0, 9);
164 byte_stuffer_recv_byte(0, 4); // This should have been zero 173 byte_stuffer_recv_byte(0, 4); // This should have been zero
@@ -169,16 +178,14 @@ Ensure(ByteStuffer, receives_valid_frame_after_unexpected_non_zero) {
169 byte_stuffer_recv_byte(0, 0); 178 byte_stuffer_recv_byte(0, 0);
170} 179}
171 180
172Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_and_then_end_of_frame) { 181TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_and_then_end_of_frame) {
173 uint8_t expected[254]; 182 uint8_t expected[254];
174 int i; 183 int i;
175 for (i=0;i<254;i++) { 184 for (i=0;i<254;i++) {
176 expected[i] = i + 1; 185 expected[i] = i + 1;
177 } 186 }
178 expect(validator_recv_frame, 187 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
179 when(size, is_equal_to(254)), 188 .With(Args<1, 2>(ElementsAreArray(expected)));
180 when(data, is_equal_to_contents_of(expected, 254))
181 );
182 byte_stuffer_recv_byte(0, 0xFF); 189 byte_stuffer_recv_byte(0, 0xFF);
183 for (i=0;i<254;i++) { 190 for (i=0;i<254;i++) {
184 byte_stuffer_recv_byte(0, i+1); 191 byte_stuffer_recv_byte(0, i+1);
@@ -186,17 +193,15 @@ Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_and_then_end_
186 byte_stuffer_recv_byte(0, 0); 193 byte_stuffer_recv_byte(0, 0);
187} 194}
188 195
189Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_non_zero) { 196TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_non_zero) {
190 uint8_t expected[255]; 197 uint8_t expected[255];
191 int i; 198 int i;
192 for (i=0;i<254;i++) { 199 for (i=0;i<254;i++) {
193 expected[i] = i + 1; 200 expected[i] = i + 1;
194 } 201 }
195 expected[254] = 7; 202 expected[254] = 7;
196 expect(validator_recv_frame, 203 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
197 when(size, is_equal_to(255)), 204 .With(Args<1, 2>(ElementsAreArray(expected)));
198 when(data, is_equal_to_contents_of(expected, 255))
199 );
200 byte_stuffer_recv_byte(0, 0xFF); 205 byte_stuffer_recv_byte(0, 0xFF);
201 for (i=0;i<254;i++) { 206 for (i=0;i<254;i++) {
202 byte_stuffer_recv_byte(0, i+1); 207 byte_stuffer_recv_byte(0, i+1);
@@ -206,17 +211,15 @@ Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_
206 byte_stuffer_recv_byte(0, 0); 211 byte_stuffer_recv_byte(0, 0);
207} 212}
208 213
209Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_zero) { 214TEST_F(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_zero) {
210 uint8_t expected[255]; 215 uint8_t expected[255];
211 int i; 216 int i;
212 for (i=0;i<254;i++) { 217 for (i=0;i<254;i++) {
213 expected[i] = i + 1; 218 expected[i] = i + 1;
214 } 219 }
215 expected[254] = 0; 220 expected[254] = 0;
216 expect(validator_recv_frame, 221 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
217 when(size, is_equal_to(255)), 222 .With(Args<1, 2>(ElementsAreArray(expected)));
218 when(data, is_equal_to_contents_of(expected, 255))
219 );
220 byte_stuffer_recv_byte(0, 0xFF); 223 byte_stuffer_recv_byte(0, 0xFF);
221 for (i=0;i<254;i++) { 224 for (i=0;i<254;i++) {
222 byte_stuffer_recv_byte(0, i+1); 225 byte_stuffer_recv_byte(0, i+1);
@@ -226,7 +229,7 @@ Ensure(ByteStuffer, receives_a_valid_frame_with_over254_non_zeroes_next_byte_is_
226 byte_stuffer_recv_byte(0, 0); 229 byte_stuffer_recv_byte(0, 0);
227} 230}
228 231
229Ensure(ByteStuffer, receives_two_long_frames_and_some_more) { 232TEST_F(ByteStuffer, receives_two_long_frames_and_some_more) {
230 uint8_t expected[515]; 233 uint8_t expected[515];
231 int i; 234 int i;
232 int j; 235 int j;
@@ -238,10 +241,8 @@ Ensure(ByteStuffer, receives_two_long_frames_and_some_more) {
238 for (i=0;i<7;i++) { 241 for (i=0;i<7;i++) {
239 expected[254*2+i] = i + 1; 242 expected[254*2+i] = i + 1;
240 } 243 }
241 expect(validator_recv_frame, 244 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
242 when(size, is_equal_to(515)), 245 .With(Args<1, 2>(ElementsAreArray(expected)));
243 when(data, is_equal_to_contents_of(expected, 510))
244 );
245 byte_stuffer_recv_byte(0, 0xFF); 246 byte_stuffer_recv_byte(0, 0xFF);
246 for (i=0;i<254;i++) { 247 for (i=0;i<254;i++) {
247 byte_stuffer_recv_byte(0, i+1); 248 byte_stuffer_recv_byte(0, i+1);
@@ -261,12 +262,10 @@ Ensure(ByteStuffer, receives_two_long_frames_and_some_more) {
261 byte_stuffer_recv_byte(0, 0); 262 byte_stuffer_recv_byte(0, 0);
262} 263}
263 264
264Ensure(ByteStuffer, receives_an_all_zeros_frame_that_is_maximum_size) { 265TEST_F(ByteStuffer, receives_an_all_zeros_frame_that_is_maximum_size) {
265 uint8_t expected[MAX_FRAME_SIZE] = {}; 266 uint8_t expected[MAX_FRAME_SIZE] = {};
266 expect(validator_recv_frame, 267 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
267 when(size, is_equal_to(MAX_FRAME_SIZE)), 268 .With(Args<1, 2>(ElementsAreArray(expected)));
268 when(data, is_equal_to_contents_of(expected, MAX_FRAME_SIZE))
269 );
270 int i; 269 int i;
271 byte_stuffer_recv_byte(0, 1); 270 byte_stuffer_recv_byte(0, 1);
272 for(i=0;i<MAX_FRAME_SIZE;i++) { 271 for(i=0;i<MAX_FRAME_SIZE;i++) {
@@ -275,9 +274,10 @@ Ensure(ByteStuffer, receives_an_all_zeros_frame_that_is_maximum_size) {
275 byte_stuffer_recv_byte(0, 0); 274 byte_stuffer_recv_byte(0, 0);
276} 275}
277 276
278Ensure(ByteStuffer, doesnt_recv_a_frame_thats_too_long_all_zeroes) { 277TEST_F(ByteStuffer, doesnt_recv_a_frame_thats_too_long_all_zeroes) {
279 uint8_t expected[1] = {0}; 278 uint8_t expected[1] = {0};
280 never_expect(validator_recv_frame); 279 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
280 .Times(0);
281 int i; 281 int i;
282 byte_stuffer_recv_byte(0, 1); 282 byte_stuffer_recv_byte(0, 1);
283 for(i=0;i<MAX_FRAME_SIZE;i++) { 283 for(i=0;i<MAX_FRAME_SIZE;i++) {
@@ -287,12 +287,10 @@ Ensure(ByteStuffer, doesnt_recv_a_frame_thats_too_long_all_zeroes) {
287 byte_stuffer_recv_byte(0, 0); 287 byte_stuffer_recv_byte(0, 0);
288} 288}
289 289
290Ensure(ByteStuffer, received_frame_is_aborted_when_its_too_long) { 290TEST_F(ByteStuffer, received_frame_is_aborted_when_its_too_long) {
291 uint8_t expected[1] = {1}; 291 uint8_t expected[1] = {1};
292 expect(validator_recv_frame, 292 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
293 when(size, is_equal_to(1)), 293 .With(Args<1, 2>(ElementsAreArray(expected)));
294 when(data, is_equal_to_contents_of(expected, 1))
295 );
296 int i; 294 int i;
297 byte_stuffer_recv_byte(0, 1); 295 byte_stuffer_recv_byte(0, 1);
298 for(i=0;i<MAX_FRAME_SIZE;i++) { 296 for(i=0;i<MAX_FRAME_SIZE;i++) {
@@ -303,76 +301,68 @@ Ensure(ByteStuffer, received_frame_is_aborted_when_its_too_long) {
303 byte_stuffer_recv_byte(0, 0); 301 byte_stuffer_recv_byte(0, 0);
304} 302}
305 303
306Ensure(ByteStuffer, does_nothing_when_sending_zero_size_frame) { 304TEST_F(ByteStuffer, does_nothing_when_sending_zero_size_frame) {
307 assert_that(sent_data_size, is_equal_to(0)); 305 EXPECT_EQ(sent_data.size(), 0);
308 byte_stuffer_send_frame(0, NULL, 0); 306 byte_stuffer_send_frame(0, NULL, 0);
309} 307}
310 308
311Ensure(ByteStuffer, send_one_byte_frame) { 309TEST_F(ByteStuffer, send_one_byte_frame) {
312 uint8_t data[] = {5}; 310 uint8_t data[] = {5};
313 byte_stuffer_send_frame(1, data, 1); 311 byte_stuffer_send_frame(1, data, 1);
314 uint8_t expected[] = {2, 5, 0}; 312 uint8_t expected[] = {2, 5, 0};
315 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 313 EXPECT_THAT(sent_data, ElementsAreArray(expected));
316 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
317} 314}
318 315
319Ensure(ByteStuffer, sends_two_byte_frame) { 316TEST_F(ByteStuffer, sends_two_byte_frame) {
320 uint8_t data[] = {5, 0x77}; 317 uint8_t data[] = {5, 0x77};
321 byte_stuffer_send_frame(0, data, 2); 318 byte_stuffer_send_frame(0, data, 2);
322 uint8_t expected[] = {3, 5, 0x77, 0}; 319 uint8_t expected[] = {3, 5, 0x77, 0};
323 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 320 EXPECT_THAT(sent_data, ElementsAreArray(expected));
324 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
325} 321}
326 322
327Ensure(ByteStuffer, sends_one_byte_frame_with_zero) { 323TEST_F(ByteStuffer, sends_one_byte_frame_with_zero) {
328 uint8_t data[] = {0}; 324 uint8_t data[] = {0};
329 byte_stuffer_send_frame(0, data, 1); 325 byte_stuffer_send_frame(0, data, 1);
330 uint8_t expected[] = {1, 1, 0}; 326 uint8_t expected[] = {1, 1, 0};
331 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 327 EXPECT_THAT(sent_data, ElementsAreArray(expected));
332 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
333} 328}
334 329
335Ensure(ByteStuffer, sends_two_byte_frame_starting_with_zero) { 330TEST_F(ByteStuffer, sends_two_byte_frame_starting_with_zero) {
336 uint8_t data[] = {0, 9}; 331 uint8_t data[] = {0, 9};
337 byte_stuffer_send_frame(1, data, 2); 332 byte_stuffer_send_frame(1, data, 2);
338 uint8_t expected[] = {1, 2, 9, 0}; 333 uint8_t expected[] = {1, 2, 9, 0};
339 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 334 EXPECT_THAT(sent_data, ElementsAreArray(expected));
340 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
341} 335}
342 336
343Ensure(ByteStuffer, sends_two_byte_frame_starting_with_non_zero) { 337TEST_F(ByteStuffer, sends_two_byte_frame_starting_with_non_zero) {
344 uint8_t data[] = {9, 0}; 338 uint8_t data[] = {9, 0};
345 byte_stuffer_send_frame(1, data, 2); 339 byte_stuffer_send_frame(1, data, 2);
346 uint8_t expected[] = {2, 9, 1, 0}; 340 uint8_t expected[] = {2, 9, 1, 0};
347 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 341 EXPECT_THAT(sent_data, ElementsAreArray(expected));
348 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
349} 342}
350 343
351Ensure(ByteStuffer, sends_three_byte_frame_zero_in_the_middle) { 344TEST_F(ByteStuffer, sends_three_byte_frame_zero_in_the_middle) {
352 uint8_t data[] = {9, 0, 0x68}; 345 uint8_t data[] = {9, 0, 0x68};
353 byte_stuffer_send_frame(0, data, 3); 346 byte_stuffer_send_frame(0, data, 3);
354 uint8_t expected[] = {2, 9, 2, 0x68, 0}; 347 uint8_t expected[] = {2, 9, 2, 0x68, 0};
355 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 348 EXPECT_THAT(sent_data, ElementsAreArray(expected));
356 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
357} 349}
358 350
359Ensure(ByteStuffer, sends_three_byte_frame_data_in_the_middle) { 351TEST_F(ByteStuffer, sends_three_byte_frame_data_in_the_middle) {
360 uint8_t data[] = {0, 0x55, 0}; 352 uint8_t data[] = {0, 0x55, 0};
361 byte_stuffer_send_frame(0, data, 3); 353 byte_stuffer_send_frame(0, data, 3);
362 uint8_t expected[] = {1, 2, 0x55, 1, 0}; 354 uint8_t expected[] = {1, 2, 0x55, 1, 0};
363 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 355 EXPECT_THAT(sent_data, ElementsAreArray(expected));
364 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
365} 356}
366 357
367Ensure(ByteStuffer, sends_three_byte_frame_with_all_zeroes) { 358TEST_F(ByteStuffer, sends_three_byte_frame_with_all_zeroes) {
368 uint8_t data[] = {0, 0, 0}; 359 uint8_t data[] = {0, 0, 0};
369 byte_stuffer_send_frame(0, data, 3); 360 byte_stuffer_send_frame(0, data, 3);
370 uint8_t expected[] = {1, 1, 1, 1, 0}; 361 uint8_t expected[] = {1, 1, 1, 1, 0};
371 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 362 EXPECT_THAT(sent_data, ElementsAreArray(expected));
372 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
373} 363}
374 364
375Ensure(ByteStuffer, sends_frame_with_254_non_zeroes) { 365TEST_F(ByteStuffer, sends_frame_with_254_non_zeroes) {
376 uint8_t data[254]; 366 uint8_t data[254];
377 int i; 367 int i;
378 for(i=0;i<254;i++) { 368 for(i=0;i<254;i++) {
@@ -385,11 +375,10 @@ Ensure(ByteStuffer, sends_frame_with_254_non_zeroes) {
385 expected[i] = i; 375 expected[i] = i;
386 } 376 }
387 expected[255] = 0; 377 expected[255] = 0;
388 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 378 EXPECT_THAT(sent_data, ElementsAreArray(expected));
389 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
390} 379}
391 380
392Ensure(ByteStuffer, sends_frame_with_255_non_zeroes) { 381TEST_F(ByteStuffer, sends_frame_with_255_non_zeroes) {
393 uint8_t data[255]; 382 uint8_t data[255];
394 int i; 383 int i;
395 for(i=0;i<255;i++) { 384 for(i=0;i<255;i++) {
@@ -404,17 +393,16 @@ Ensure(ByteStuffer, sends_frame_with_255_non_zeroes) {
404 expected[255] = 2; 393 expected[255] = 2;
405 expected[256] = 255; 394 expected[256] = 255;
406 expected[257] = 0; 395 expected[257] = 0;
407 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 396 EXPECT_THAT(sent_data, ElementsAreArray(expected));
408 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
409} 397}
410 398
411Ensure(ByteStuffer, sends_frame_with_254_non_zeroes_followed_by_zero) { 399TEST_F(ByteStuffer, sends_frame_with_254_non_zeroes_followed_by_zero) {
412 uint8_t data[255]; 400 uint8_t data[255];
413 int i; 401 int i;
414 for(i=0;i<254;i++) { 402 for(i=0;i<254;i++) {
415 data[i] = i + 1; 403 data[i] = i + 1;
416 } 404 }
417 data[255] = 0; 405 data[254] = 0;
418 byte_stuffer_send_frame(0, data, 255); 406 byte_stuffer_send_frame(0, data, 255);
419 uint8_t expected[258]; 407 uint8_t expected[258];
420 expected[0] = 0xFF; 408 expected[0] = 0xFF;
@@ -424,53 +412,46 @@ Ensure(ByteStuffer, sends_frame_with_254_non_zeroes_followed_by_zero) {
424 expected[255] = 1; 412 expected[255] = 1;
425 expected[256] = 1; 413 expected[256] = 1;
426 expected[257] = 0; 414 expected[257] = 0;
427 assert_that(sent_data_size, is_equal_to(sizeof(expected))); 415 EXPECT_THAT(sent_data, ElementsAreArray(expected));
428 assert_that(sent_data, is_equal_to_contents_of(expected, sizeof(expected)));
429} 416}
430 417
431Ensure(ByteStuffer, sends_and_receives_full_roundtrip_small_packet) { 418TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_small_packet) {
432 uint8_t original_data[] = { 1, 2, 3}; 419 uint8_t original_data[] = { 1, 2, 3};
433 byte_stuffer_send_frame(0, original_data, sizeof(original_data)); 420 byte_stuffer_send_frame(0, original_data, sizeof(original_data));
434 expect(validator_recv_frame, 421 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
435 when(size, is_equal_to(sizeof(original_data))), 422 .With(Args<1, 2>(ElementsAreArray(original_data)));
436 when(data, is_equal_to_contents_of(original_data, sizeof(original_data)))
437 );
438 int i; 423 int i;
439 for(i=0;i<sent_data_size;i++) { 424 for(auto& d : sent_data) {
440 byte_stuffer_recv_byte(1, sent_data[i]); 425 byte_stuffer_recv_byte(1, d);
441 } 426 }
442} 427}
443 428
444Ensure(ByteStuffer, sends_and_receives_full_roundtrip_small_packet_with_zeros) { 429TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_small_packet_with_zeros) {
445 uint8_t original_data[] = { 1, 0, 3, 0, 0, 9}; 430 uint8_t original_data[] = { 1, 0, 3, 0, 0, 9};
446 byte_stuffer_send_frame(1, original_data, sizeof(original_data)); 431 byte_stuffer_send_frame(1, original_data, sizeof(original_data));
447 expect(validator_recv_frame, 432 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
448 when(size, is_equal_to(sizeof(original_data))), 433 .With(Args<1, 2>(ElementsAreArray(original_data)));
449 when(data, is_equal_to_contents_of(original_data, sizeof(original_data)))
450 );
451 int i; 434 int i;
452 for(i=0;i<sent_data_size;i++) { 435 for(auto& d : sent_data) {
453 byte_stuffer_recv_byte(0, sent_data[i]); 436 byte_stuffer_recv_byte(1, d);
454 } 437 }
455} 438}
456 439
457Ensure(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes) { 440TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes) {
458 uint8_t original_data[254]; 441 uint8_t original_data[254];
459 int i; 442 int i;
460 for(i=0;i<254;i++) { 443 for(i=0;i<254;i++) {
461 original_data[i] = i + 1; 444 original_data[i] = i + 1;
462 } 445 }
463 byte_stuffer_send_frame(0, original_data, sizeof(original_data)); 446 byte_stuffer_send_frame(0, original_data, sizeof(original_data));
464 expect(validator_recv_frame, 447 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
465 when(size, is_equal_to(sizeof(original_data))), 448 .With(Args<1, 2>(ElementsAreArray(original_data)));
466 when(data, is_equal_to_contents_of(original_data, sizeof(original_data))) 449 for(auto& d : sent_data) {
467 ); 450 byte_stuffer_recv_byte(1, d);
468 for(i=0;i<sent_data_size;i++) {
469 byte_stuffer_recv_byte(1, sent_data[i]);
470 } 451 }
471} 452}
472 453
473Ensure(ByteStuffer, sends_and_receives_full_roundtrip_256_bytes) { 454TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_256_bytes) {
474 uint8_t original_data[256]; 455 uint8_t original_data[256];
475 int i; 456 int i;
476 for(i=0;i<254;i++) { 457 for(i=0;i<254;i++) {
@@ -479,16 +460,14 @@ Ensure(ByteStuffer, sends_and_receives_full_roundtrip_256_bytes) {
479 original_data[254] = 22; 460 original_data[254] = 22;
480 original_data[255] = 23; 461 original_data[255] = 23;
481 byte_stuffer_send_frame(0, original_data, sizeof(original_data)); 462 byte_stuffer_send_frame(0, original_data, sizeof(original_data));
482 expect(validator_recv_frame, 463 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
483 when(size, is_equal_to(sizeof(original_data))), 464 .With(Args<1, 2>(ElementsAreArray(original_data)));
484 when(data, is_equal_to_contents_of(original_data, sizeof(original_data))) 465 for(auto& d : sent_data) {
485 ); 466 byte_stuffer_recv_byte(1, d);
486 for(i=0;i<sent_data_size;i++) {
487 byte_stuffer_recv_byte(1, sent_data[i]);
488 } 467 }
489} 468}
490 469
491Ensure(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes_and_then_zero) { 470TEST_F(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes_and_then_zero) {
492 uint8_t original_data[255]; 471 uint8_t original_data[255];
493 int i; 472 int i;
494 for(i=0;i<254;i++) { 473 for(i=0;i<254;i++) {
@@ -496,11 +475,9 @@ Ensure(ByteStuffer, sends_and_receives_full_roundtrip_254_bytes_and_then_zero) {
496 } 475 }
497 original_data[254] = 0; 476 original_data[254] = 0;
498 byte_stuffer_send_frame(0, original_data, sizeof(original_data)); 477 byte_stuffer_send_frame(0, original_data, sizeof(original_data));
499 expect(validator_recv_frame, 478 EXPECT_CALL(*this, validator_recv_frame(_, _, _))
500 when(size, is_equal_to(sizeof(original_data))), 479 .With(Args<1, 2>(ElementsAreArray(original_data)));
501 when(data, is_equal_to_contents_of(original_data, sizeof(original_data))) 480 for(auto& d : sent_data) {
502 ); 481 byte_stuffer_recv_byte(1, d);
503 for(i=0;i<sent_data_size;i++) {
504 byte_stuffer_recv_byte(1, sent_data[i]);
505 } 482 }
506} 483}
diff --git a/quantum/serial_link/tests/rules.mk b/quantum/serial_link/tests/rules.mk
new file mode 100644
index 000000000..651f56b95
--- /dev/null
+++ b/quantum/serial_link/tests/rules.mk
@@ -0,0 +1,3 @@
1serial_link_byte_stuffer_SRC :=\
2 $(SERIAL_PATH)/tests/byte_stuffer_tests.cpp \
3 $(SERIAL_PATH)/protocol/byte_stuffer.c \ No newline at end of file