diff --git a/tests/run_tests b/tests/run_tests new file mode 100755 index 0000000..20da97d --- /dev/null +++ b/tests/run_tests @@ -0,0 +1,6 @@ +#!/bin/sh + +DIR=$(dirname $0) +g++ -std=c++11 -O2 $DIR/test_regex.cpp -lxdo -o test.out || exec "Test aborted" +./test.out || rm test.out +rm test.out \ No newline at end of file diff --git a/tests/test_regex.cpp b/tests/test_regex.cpp new file mode 100644 index 0000000..0f35907 --- /dev/null +++ b/tests/test_regex.cpp @@ -0,0 +1,57 @@ +#include +#include +#include +#include "../src/comfortable-swipe.hpp" + +namespace test { + void gesture_begin_should_match_regex(); + void gesture_update_should_match_regex(); + void gesture_end_should_match_regex(); +} + +int main() { + std::cout << "(1) Testing gesture_begin_should_match_regex()" << std::endl; + test::gesture_begin_should_match_regex(); + + std::cout << "(2) Testing gesture_begin_should_match_regex()" << std::endl; + test::gesture_update_should_match_regex(); + + std::cout << "(3) Testing gesture_begin_should_match_regex()" << std::endl; + test::gesture_end_should_match_regex(); + std::cout << "ALL TEST PASSED" << std::endl; +} + +namespace test { + void gesture_begin_test(const char* data, const char* expected_fingers) { + std::cout << " testing against \"" << data << "\"..."; + std::cmatch matches; + auto result = std::regex_match(data, matches, service::gesture_begin); + assert(result != 0); + assert((string) matches[1] == expected_fingers); + std::cout << "PASSED" << std::endl; + } + void gesture_begin_should_match_regex() { + test::gesture_begin_test(" event15 GESTURE_SWIPE_BEGIN +34.33s 3\n", "3"); + test::gesture_begin_test("-event4 GESTURE_SWIPE_BEGIN +3.12s 4\n", "4"); + test::gesture_begin_test("-event7 GESTURE_SWIPE_BEGIN +4.72s 3\n", "3"); + test::gesture_begin_test(" event9 GESTURE_SWIPE_BEGIN +45.80s 4\n", "4"); + } + void gesture_update_should_match_regex() { + const char* data = " event15 GESTURE_SWIPE_UPDATE +34.70s 3 -0.12/ 4.99 (-0.33/13.50 unaccelerated)\n"; + std::cmatch matches; + auto result = std::regex_match(data, matches, service::gesture_update); + assert(result != 0); + assert((string) matches[1] == "3"); + assert((string) matches[2] == "-0.12"); + assert((string) matches[3] == "4.99"); + assert((string) matches[4] == "-0.33"); + assert((string) matches[5] == "13.50"); + } + void gesture_end_should_match_regex() { + const char* data = " event15 GESTURE_SWIPE_END +35.03s 3\n"; + std::cmatch matches; + auto result = std::regex_match(data, matches, service::gesture_end); + assert(result != 0); + assert((string) matches[1] == "3"); + } +} \ No newline at end of file