diff options
-rw-r--r-- | quantum/serial_link/tests/rules.mk | 12 | ||||
-rw-r--r-- | quantum/serial_link/tests/testlist.mk | 6 | ||||
-rw-r--r-- | quantum/serial_link/tests/triple_buffered_object_tests.cpp (renamed from quantum/serial_link/tests/triple_buffered_object_tests.c) | 52 |
3 files changed, 38 insertions, 32 deletions
diff --git a/quantum/serial_link/tests/rules.mk b/quantum/serial_link/tests/rules.mk index bf342c9d2..b81515bc5 100644 --- a/quantum/serial_link/tests/rules.mk +++ b/quantum/serial_link/tests/rules.mk | |||
@@ -2,17 +2,21 @@ serial_link_byte_stuffer_SRC :=\ | |||
2 | $(SERIAL_PATH)/tests/byte_stuffer_tests.cpp \ | 2 | $(SERIAL_PATH)/tests/byte_stuffer_tests.cpp \ |
3 | $(SERIAL_PATH)/protocol/byte_stuffer.c | 3 | $(SERIAL_PATH)/protocol/byte_stuffer.c |
4 | 4 | ||
5 | serial_link_frame_validator_SRC := \ | ||
6 | $(SERIAL_PATH)/tests/frame_validator_tests.cpp \ | ||
7 | $(SERIAL_PATH)/protocol/frame_validator.c | ||
8 | |||
5 | serial_link_frame_router_SRC := \ | 9 | serial_link_frame_router_SRC := \ |
6 | $(SERIAL_PATH)/tests/frame_router_tests.cpp \ | 10 | $(SERIAL_PATH)/tests/frame_router_tests.cpp \ |
7 | $(SERIAL_PATH)/protocol/byte_stuffer.c \ | 11 | $(SERIAL_PATH)/protocol/byte_stuffer.c \ |
8 | $(SERIAL_PATH)/protocol/frame_validator.c \ | 12 | $(SERIAL_PATH)/protocol/frame_validator.c \ |
9 | $(SERIAL_PATH)/protocol/frame_router.c | 13 | $(SERIAL_PATH)/protocol/frame_router.c |
10 | 14 | ||
11 | serial_link_frame_validator_SRC := \ | 15 | serial_link_triple_buffered_object_SRC := \ |
12 | $(SERIAL_PATH)/tests/frame_validator_tests.cpp \ | 16 | $(SERIAL_PATH)/tests/triple_buffered_object_tests.cpp \ |
13 | $(SERIAL_PATH)/protocol/frame_validator.c | 17 | $(SERIAL_PATH)/protocol/triple_buffered_object.c |
14 | 18 | ||
15 | serial_link_transport_SRC := \ | 19 | serial_link_transport_SRC := \ |
16 | $(SERIAL_PATH)/tests/transport_tests.cpp \ | 20 | $(SERIAL_PATH)/tests/transport_tests.cpp \ |
17 | $(SERIAL_PATH)/protocol/transport.c \ | 21 | $(SERIAL_PATH)/protocol/transport.c \ |
18 | $(SERIAL_PATH)/protocol/triple_buffered_object.c \ No newline at end of file | 22 | $(SERIAL_PATH)/protocol/triple_buffered_object.c |
diff --git a/quantum/serial_link/tests/testlist.mk b/quantum/serial_link/tests/testlist.mk index 4a734b1e1..a80e88884 100644 --- a/quantum/serial_link/tests/testlist.mk +++ b/quantum/serial_link/tests/testlist.mk | |||
@@ -1,6 +1,6 @@ | |||
1 | TEST_LIST +=\ | 1 | TEST_LIST +=\ |
2 | serial_link_byte_stuffer\ | 2 | serial_link_byte_stuffer\ |
3 | serial_link_frame_router\ | ||
4 | serial_link_frame_validator\ | 3 | serial_link_frame_validator\ |
5 | serial_link_transport\ | 4 | serial_link_frame_router\ |
6 | serial_link_triple_buffered_object \ No newline at end of file | 5 | serial_link_triple_buffered_object\ |
6 | serial_link_transport \ No newline at end of file | ||
diff --git a/quantum/serial_link/tests/triple_buffered_object_tests.c b/quantum/serial_link/tests/triple_buffered_object_tests.cpp index 6f7c82b46..7724bbee9 100644 --- a/quantum/serial_link/tests/triple_buffered_object_tests.c +++ b/quantum/serial_link/tests/triple_buffered_object_tests.cpp | |||
@@ -22,53 +22,55 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
22 | SOFTWARE. | 22 | SOFTWARE. |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <cgreen/cgreen.h> | 25 | #include "gtest/gtest.h" |
26 | #include "serial_link/protocol/triple_buffered_object.c" | 26 | extern "C" { |
27 | #include "serial_link/protocol/triple_buffered_object.h" | ||
28 | } | ||
27 | 29 | ||
28 | typedef struct { | 30 | struct test_object{ |
29 | uint8_t state; | 31 | uint8_t state; |
30 | uint32_t buffer[3]; | 32 | uint32_t buffer[3]; |
31 | }test_object_t; | 33 | }; |
32 | |||
33 | test_object_t test_object; | ||
34 | 34 | ||
35 | Describe(TripleBufferedObject); | 35 | test_object test_object; |
36 | BeforeEach(TripleBufferedObject) { | ||
37 | triple_buffer_init((triple_buffer_object_t*)&test_object); | ||
38 | } | ||
39 | AfterEach(TripleBufferedObject) {} | ||
40 | 36 | ||
37 | class TripleBufferedObject : public testing::Test { | ||
38 | public: | ||
39 | TripleBufferedObject() { | ||
40 | triple_buffer_init((triple_buffer_object_t*)&test_object); | ||
41 | } | ||
42 | }; | ||
41 | 43 | ||
42 | Ensure(TripleBufferedObject, writes_and_reads_object) { | 44 | TEST_F(TripleBufferedObject, writes_and_reads_object) { |
43 | *triple_buffer_begin_write(&test_object) = 0x3456ABCC; | 45 | *triple_buffer_begin_write(&test_object) = 0x3456ABCC; |
44 | triple_buffer_end_write(&test_object); | 46 | triple_buffer_end_write(&test_object); |
45 | assert_that(*triple_buffer_read(&test_object), is_equal_to(0x3456ABCC)); | 47 | EXPECT_EQ(*triple_buffer_read(&test_object), 0x3456ABCC); |
46 | } | 48 | } |
47 | 49 | ||
48 | Ensure(TripleBufferedObject, does_not_read_empty) { | 50 | TEST_F(TripleBufferedObject, does_not_read_empty) { |
49 | assert_that(triple_buffer_read(&test_object), is_equal_to(NULL)); | 51 | EXPECT_EQ(triple_buffer_read(&test_object), nullptr); |
50 | } | 52 | } |
51 | 53 | ||
52 | Ensure(TripleBufferedObject, writes_twice_and_reads_object) { | 54 | TEST_F(TripleBufferedObject, writes_twice_and_reads_object) { |
53 | *triple_buffer_begin_write(&test_object) = 0x3456ABCC; | 55 | *triple_buffer_begin_write(&test_object) = 0x3456ABCC; |
54 | triple_buffer_end_write(&test_object); | 56 | triple_buffer_end_write(&test_object); |
55 | *triple_buffer_begin_write(&test_object) = 0x44778899; | 57 | *triple_buffer_begin_write(&test_object) = 0x44778899; |
56 | triple_buffer_end_write(&test_object); | 58 | triple_buffer_end_write(&test_object); |
57 | assert_that(*triple_buffer_read(&test_object), is_equal_to(0x44778899)); | 59 | EXPECT_EQ(*triple_buffer_read(&test_object), 0x44778899); |
58 | } | 60 | } |
59 | 61 | ||
60 | Ensure(TripleBufferedObject, performs_another_write_in_the_middle_of_read) { | 62 | TEST_F(TripleBufferedObject, performs_another_write_in_the_middle_of_read) { |
61 | *triple_buffer_begin_write(&test_object) = 1; | 63 | *triple_buffer_begin_write(&test_object) = 1; |
62 | triple_buffer_end_write(&test_object); | 64 | triple_buffer_end_write(&test_object); |
63 | uint32_t* read = triple_buffer_read(&test_object); | 65 | uint32_t* read = triple_buffer_read(&test_object); |
64 | *triple_buffer_begin_write(&test_object) = 2; | 66 | *triple_buffer_begin_write(&test_object) = 2; |
65 | triple_buffer_end_write(&test_object); | 67 | triple_buffer_end_write(&test_object); |
66 | assert_that(*read, is_equal_to(1)); | 68 | EXPECT_EQ(*read, 1); |
67 | assert_that(*triple_buffer_read(&test_object), is_equal_to(2)); | 69 | EXPECT_EQ(*triple_buffer_read(&test_object), 2); |
68 | assert_that(triple_buffer_read(&test_object), is_equal_to(NULL)); | 70 | EXPECT_EQ(triple_buffer_read(&test_object), nullptr); |
69 | } | 71 | } |
70 | 72 | ||
71 | Ensure(TripleBufferedObject, performs_two_writes_in_the_middle_of_read) { | 73 | TEST_F(TripleBufferedObject, performs_two_writes_in_the_middle_of_read) { |
72 | *triple_buffer_begin_write(&test_object) = 1; | 74 | *triple_buffer_begin_write(&test_object) = 1; |
73 | triple_buffer_end_write(&test_object); | 75 | triple_buffer_end_write(&test_object); |
74 | uint32_t* read = triple_buffer_read(&test_object); | 76 | uint32_t* read = triple_buffer_read(&test_object); |
@@ -76,7 +78,7 @@ Ensure(TripleBufferedObject, performs_two_writes_in_the_middle_of_read) { | |||
76 | triple_buffer_end_write(&test_object); | 78 | triple_buffer_end_write(&test_object); |
77 | *triple_buffer_begin_write(&test_object) = 3; | 79 | *triple_buffer_begin_write(&test_object) = 3; |
78 | triple_buffer_end_write(&test_object); | 80 | triple_buffer_end_write(&test_object); |
79 | assert_that(*read, is_equal_to(1)); | 81 | EXPECT_EQ(*read, 1); |
80 | assert_that(*triple_buffer_read(&test_object), is_equal_to(3)); | 82 | EXPECT_EQ(*triple_buffer_read(&test_object), 3); |
81 | assert_that(triple_buffer_read(&test_object), is_equal_to(NULL)); | 83 | EXPECT_EQ(triple_buffer_read(&test_object), nullptr); |
82 | } | 84 | } |