From 96c496600b1455ae13b0229b0dbc3edfd4c51da9 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sat, 11 Jul 2015 11:52:39 +0300 Subject: [PATCH] Cleaner YAML validation --- .../dsdl_test/dsdl_uavcan_compilability.cpp | 111 ++++++++++-------- 1 file changed, 63 insertions(+), 48 deletions(-) diff --git a/libuavcan/test/dsdl_test/dsdl_uavcan_compilability.cpp b/libuavcan/test/dsdl_test/dsdl_uavcan_compilability.cpp index f7b7bdd2b8..eb4227c73e 100644 --- a/libuavcan/test/dsdl_test/dsdl_uavcan_compilability.cpp +++ b/libuavcan/test/dsdl_test/dsdl_uavcan_compilability.cpp @@ -19,59 +19,74 @@ #include #include +#include +template +static bool validateYaml(const T& obj, const std::string& reference) +{ + std::ostringstream os; + os << obj; + if (os.str() == reference) + { + return true; + } + else + { + std::cout << "INVALID YAML:\n" + << "EXPECTED:\n" + << "===\n" + << reference + << "\n===\n" + << "ACTUAL:\n" + << "\n===\n" + << os.str() + << "===" << std::endl; + return false; + } +} TEST(Dsdl, Streaming) { - std::ostringstream os; - - uavcan::protocol::GetNodeInfo::Response get_node_info_rsp; - os << get_node_info_rsp << std::endl << "==========" << std::endl; + EXPECT_TRUE(validateYaml(uavcan::protocol::GetNodeInfo::Response(), + "status: \n" + " uptime_sec: 0\n" + " health: 0\n" + " mode: 0\n" + " sub_mode: 0\n" + " vendor_specific_status_code: 0\n" + "software_version: \n" + " major: 0\n" + " minor: 0\n" + " optional_field_flags: 0\n" + " vcs_commit: 0\n" + " image_crc: 0\n" + "hardware_version: \n" + " major: 0\n" + " minor: 0\n" + " unique_id: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" + " certificate_of_authenticity: \"\"\n" + "name: \"\"")); root_ns_a::Deep ps; ps.a.resize(1); - os << ps << std::endl << "==========" << std::endl; - - static const std::string Reference = - "status: \n" - " uptime_sec: 0\n" - " health: 0\n" - " mode: 0\n" - " sub_mode: 0\n" - " vendor_specific_status_code: 0\n" - "software_version: \n" - " major: 0\n" - " minor: 0\n" - " optional_field_flags: 0\n" - " vcs_commit: 0\n" - " image_crc: 0\n" - "hardware_version: \n" - " major: 0\n" - " minor: 0\n" - " unique_id: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" - " certificate_of_authenticity: \"\"\n" - "name: \"\"\n" - "==========\n" - "c: 0\n" - "str: \"\"\n" - "a: \n" - " - \n" - " scalar: 0\n" - " vector: \n" - " - \n" - " vector: [0, 0]\n" - " bools: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" - " - \n" - " vector: [0, 0]\n" - " bools: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" - "b: \n" - " - \n" - " vector: [0, 0]\n" - " bools: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" - " - \n" - " vector: [0, 0]\n" - " bools: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" - "==========\n"; - std::cout << os.str(); - ASSERT_EQ(Reference, os.str()); + EXPECT_TRUE(validateYaml(ps, + "c: 0\n" + "str: \"\"\n" + "a: \n" + " - \n" + " scalar: 0\n" + " vector: \n" + " - \n" + " vector: [0, 0]\n" + " bools: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" + " - \n" + " vector: [0, 0]\n" + " bools: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" + "b: \n" + " - \n" + " vector: [0, 0]\n" + " bools: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" + " - \n" + " vector: [0, 0]\n" + " bools: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]")); }