#include #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN #include #include // #include "../common/adc_utils.h" // #include "../net/adc_netmessage.h" #include "../net/adc_device_netmsg.h" #include "../net/adc_endpoint.h" #include "../net/adc_netmsg.h" using namespace adc; static constexpr char DD[] = "="; static constexpr char TD[] = "-"; TEST_CASE("[ADC NET MESSAGE]") { AdcKeyTokenNetMessage
msg; std::string_view bytes{"SET=POS 1 2 3 4 5"}; std::cout << "INPUT BYTES: [" << bytes << "]\n"; msg.setFromBytes(bytes.begin(), bytes.end()); auto keyv = msg.keyView(); auto keyb = msg.keyBytes(); std::cout << "KEY VIEW: [" << keyv << "]\n"; std::cout << "KEY BYTE: [" << keyb << "]\n"; auto tks = msg.tokens(1, 3); for (auto& el : tks) { std::cout << "TOKEN: [" << el << "]\n"; } auto t2 = msg.bytesView(); std::cout << "BYTES VIEW: "; for (auto& el : t2) { std::cout << "[" << el << "]"; } std::cout << "\n"; std::cout << "\n\n---------\n\n"; msg.setTokens("FILTER", "A1", "B3"); std::cout << "BYTES: " << msg.bytes() << "\n"; std::cout << "TOK BYTES: [" << msg.tokensBytes(1, 1) << "]\n"; std::cout << "\n\n---------\n\n"; AdcTokenNetMessage<> tmsg; std::list bb{'1', ' ', '2', ' ', '3', ' ', '4', ' ', '5'}; tmsg.setFromBytes(bb.begin(), bb.end()); auto t1 = tmsg.bytesView(); std::cout << "TOKENS VIEW: "; for (auto& el : t1) { std::cout << "[" << el << "]"; } std::cout << "\n"; std::cout << "\n\n\n"; AdcEndpoint ept(AdcEndpoint::PROTO_ID_LOCAL, "SOCK"); std::cout << "EPT: [" << ept.endpoint() << "]\n"; std::cout << "EPT SZ: " << ept.endpoint().size() << "\n"; char ee[] = "tls://dewlkj.dwed.dwed:8012/dwelk"; ept.setEndpoint(ee); std::cout << "EPT: [" << ept.endpoint() << "]\n"; std::string bs = " SET EXP 1.24 0.23652 9.765432 "; std::cout << "BS: {" << bs << "}\n"; AdcDeviceNetMessage md(bs); std::cout << "KEY = {" << md.keyword() << "}\n"; std::cout << "KEY = {" << md.key() << "}\n"; for (auto& pp : md.params(1, 2)) { std::cout << "PAR: " << pp << "\n"; } } /* TEST_CASE("[ADC NET MESSAGE]") { AdcKeyParamNetMessage
msg; std::string_view bytes{"SET=POS 1 2 3 4 5"}; std::cout << "INPUT BYTES: [" << bytes << "]\n"; msg.setFromBytes(bytes.begin(), bytes.end()); std::string key, pars, bb; msg.key(key); std::cout << "KEY: [" << key << "]\n"; msg.paramsBytes(pars); std::cout << "PARS BYTES: [" << pars << "]\n"; pars.clear(); msg.paramsBytes(pars, 2, 3); std::cout << "PARS BYTES: [" << pars << "]\n"; std::list ls; msg.params(ls, 0, 3); for (auto& el : ls) { std::cout << "PAR: [" << el << "]\n"; } msg.bytes(bb); std::cout << "MESSAGE: [" << bb << "]\n"; REQUIRE_EQ(bb, bytes); // msg.setKeyParam("GET", "IMAGE", std::string_view("CROP"), 4, 7, std::make_pair(10, 20)); msg.setKeyParam("GET", "IMAGE", std::string_view("CROP"), 4, 7); bb.clear(); msg.bytes(bb); std::cout << "MSG: [" << bb << "]\n"; key.clear(); msg.key(key); std::cout << "KEY: [" << key << "]\n"; ls.clear(); msg.params(ls, 1, 3); for (auto& el : ls) { std::cout << "PAR: [" << el << "]\n"; } ls = {"AAA", "BBB", "CCC"}; std::string sr{"RES: "}; std::vector vsv; auto N = utils::AdcReturnRangeElementsView(ls, std::string_view("<>"), vsv); std::cout << "\n\nN = " << N << "\n"; for (auto& el : vsv) { std::cout << el << "\n"; } N = utils::AdcJoinRange(ls, std::string_view("*"), sr); std::cout << "\n\nN = " << N << "\n"; std::cout << sr << "\n"; } */