From 07450e9fe80913d280b80cb6eec11572c015ff1c Mon Sep 17 00:00:00 2001 From: Skye Deving <76892045+skyedeving@users.noreply.github.com> Date: Mon, 4 Jan 2021 06:36:47 -0600 Subject: [PATCH] Add tests aopacket --- CMakeLists.txt | 16 ++++++++++++++ README_TEST.md | 8 +++++++ test/CMakeLists.txt | 6 ++++++ test/test_aopacket.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 README_TEST.md create mode 100644 test/CMakeLists.txt create mode 100644 test/test_aopacket.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..322c90c --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.1.0) + +project(ao) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_AUTOUIC ON) + +if(CMAKE_VERSION VERSION_LESS "3.7.0") + set(CMAKE_INCLUDE_CURRENT_DIR ON) +endif() + +add_subdirectory(test) diff --git a/README_TEST.md b/README_TEST.md new file mode 100644 index 0000000..c426bad --- /dev/null +++ b/README_TEST.md @@ -0,0 +1,8 @@ +Running tests requires Catch2 and cmake + +```sh +mkdir cbuild && cd cbuild +cmake .. +make +./test/test +``` diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..cc02859 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,6 @@ +find_package(Qt5 COMPONENTS Widgets REQUIRED) +find_package(Catch2 REQUIRED) + +add_executable(test test_aopacket.cpp ../include/aopacket.h ../src/aopacket.cpp) +target_include_directories(test PRIVATE ../include) +target_link_libraries(test PRIVATE Qt5::Widgets Catch2::Catch2) diff --git a/test/test_aopacket.cpp b/test/test_aopacket.cpp new file mode 100644 index 0000000..a5aeb43 --- /dev/null +++ b/test/test_aopacket.cpp @@ -0,0 +1,47 @@ +#define CATCH_CONFIG_MAIN +#include + +#include "aopacket.h" + +TEST_CASE("AOPacket construct", "[aopacket]") { + // Parameters + QString packet_string = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d/123/edit##%"; + QString header = "CT"; + QStringList contents = {"MY_OOC_NAME", "/doc https://docs.google.com/document/d/123/edit#"}; + + // Packet string only + AOPacket p(packet_string); + REQUIRE(p.to_string() == packet_string); + + // Header and Contents Separate + AOPacket p2(header, contents); + REQUIRE(p2.to_string() == packet_string); +} + +TEST_CASE("AOPacket encode/decode", "[aopacket]") { + // Parameters + QString packet_string = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d/%$&/edit##%"; + QString header = "CT"; + QStringList contents = {"MY_OOC_NAME", "/doc https://docs.google.com/document/d/%$&/edit#"}; + + // Encodes that get "sent" to the server + QString bad_send = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d//edit##%"; + QString good_send = "CT#MY_OOC_NAME#/doc https://docs.google.com/document/d//edit#%"; + + // Bad encode/decode for docs because the split on '#' after "edit" in the doc url + AOPacket p(packet_string); + p.net_encode(); + REQUIRE(p.to_string() == bad_send); + + p.net_decode(); + REQUIRE(p.to_string() == packet_string); + + // Good encode/decode for docs because header and contents are separate + AOPacket p2(header, contents); + + p2.net_encode(); + REQUIRE(p2.to_string() == good_send); + + p2.net_decode(); + REQUIRE(p2.to_string() == packet_string); +}