123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #include <unity.h>
- #include <algorithm>
- #include <memory>
- #include "kbf.h"
- #include "kbf/uart.h"
- #define KBF_UART_TEST_ORIGINAL "Just some data."
- #define KBF_UART_TEST_FILTERED "Just_some_data."
- #define KBF_UART_TEST_WAIT_SIGNAL "signal"
- using std::shared_ptr;
- shared_ptr<kbf::UART> setupUart() {
- auto uart1 = new kbf::UART(1);
- uart1->setPins(33, 32, 25, 26); // TODO use Kconfig
- return shared_ptr<kbf::UART>(uart1);
- }
- static void filter(string &data, kbf::UART &uart) {
- TEST_ASSERT_EQUAL_STRING(KBF_UART_TEST_ORIGINAL, data.c_str());
- std::replace(data.begin(), data.end(), ' ', '_');
- }
- static void uartReadWriteMasterTest() {
- auto uart1 = setupUart();
- uart1->onRead = filter;
- auto data = uart1->read();
- TEST_ASSERT_EQUAL_STRING(KBF_UART_TEST_FILTERED, data.c_str());
- uart1->write(data);
- }
- static void uartReadWriteSlaveTest() {
- auto uart1 = setupUart();
- uart1->write(KBF_UART_TEST_ORIGINAL);
- auto data = uart1->read();
- TEST_ASSERT_EQUAL_STRING(KBF_UART_TEST_FILTERED, data.c_str());
- }
- TEST_CASE_MULTIPLE_DEVICES("UART read/write", "[kbf_uart][multidev]", uartReadWriteMasterTest, uartReadWriteSlaveTest);
- static int counter = 0;
- static void incrementCounter(string &, kbf::UART &) {
- counter++;
- }
- static void uartWaitMasterTest() {
- counter = 0;
- auto uart = setupUart();
- uart->onRead = incrementCounter;
- uart->waitFor(KBF_UART_TEST_WAIT_SIGNAL);
- TEST_ASSERT_EQUAL(3, counter);
- }
- static void uartWaitSlaveTest() {
- auto uart = setupUart();
- uart->write("not the signal");
- uart->write("still not the signal");
- uart->write(KBF_UART_TEST_WAIT_SIGNAL);
- }
- TEST_CASE_MULTIPLE_DEVICES("UART waitFor", "[kbf_uart][multidev]", uartWaitMasterTest, uartWaitSlaveTest);
|