aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--quantum/serial_link/tests/rules.mk12
-rw-r--r--quantum/serial_link/tests/testlist.mk6
-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
5serial_link_frame_validator_SRC := \
6 $(SERIAL_PATH)/tests/frame_validator_tests.cpp \
7 $(SERIAL_PATH)/protocol/frame_validator.c
8
5serial_link_frame_router_SRC := \ 9serial_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
11serial_link_frame_validator_SRC := \ 15serial_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
15serial_link_transport_SRC := \ 19serial_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 @@
1TEST_LIST +=\ 1TEST_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
22SOFTWARE. 22SOFTWARE.
23*/ 23*/
24 24
25#include <cgreen/cgreen.h> 25#include "gtest/gtest.h"
26#include "serial_link/protocol/triple_buffered_object.c" 26extern "C" {
27#include "serial_link/protocol/triple_buffered_object.h"
28}
27 29
28typedef struct { 30struct 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
33test_object_t test_object;
34 34
35Describe(TripleBufferedObject); 35test_object test_object;
36BeforeEach(TripleBufferedObject) {
37 triple_buffer_init((triple_buffer_object_t*)&test_object);
38}
39AfterEach(TripleBufferedObject) {}
40 36
37class TripleBufferedObject : public testing::Test {
38public:
39 TripleBufferedObject() {
40 triple_buffer_init((triple_buffer_object_t*)&test_object);
41 }
42};
41 43
42Ensure(TripleBufferedObject, writes_and_reads_object) { 44TEST_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
48Ensure(TripleBufferedObject, does_not_read_empty) { 50TEST_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
52Ensure(TripleBufferedObject, writes_twice_and_reads_object) { 54TEST_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
60Ensure(TripleBufferedObject, performs_another_write_in_the_middle_of_read) { 62TEST_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
71Ensure(TripleBufferedObject, performs_two_writes_in_the_middle_of_read) { 73TEST_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}