From 9228408f575ba51432c24b1ce0ae6d5cbc0a4369 Mon Sep 17 00:00:00 2001 From: hsaturn Date: Mon, 20 Feb 2023 02:39:43 +0100 Subject: [PATCH] [tests] Added -Wall and use TinyConsole::string --- tests/Makefile.opts | 2 +- tests/compile-test/tinymqtt-test.ino | 85 ++++++++++++++-------------- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/tests/Makefile.opts b/tests/Makefile.opts index 09ca8aa..0fdf387 100644 --- a/tests/Makefile.opts +++ b/tests/Makefile.opts @@ -1,7 +1,7 @@ # GCC # CXXFLAGS = -Wextra -Wall -std=gnu++11 -fno-exceptions -fno-threadsafe-statics -# EXTRA_CXXFLAGS=-g3 -O0 +CXXFLAGS=-D_GNU_SOURCE -Werror=return-type -std=gnu++11 -Wall # CLANG SANITIZE # CXX=clang diff --git a/tests/compile-test/tinymqtt-test.ino b/tests/compile-test/tinymqtt-test.ino index 7412b48..c9c88a4 100644 --- a/tests/compile-test/tinymqtt-test.ino +++ b/tests/compile-test/tinymqtt-test.ino @@ -7,6 +7,8 @@ #include #include +using string = TinyConsole::string; + bool echo_on = true; auto green = TinyConsole::green; auto red = TinyConsole::red; @@ -24,13 +26,13 @@ const char* password = ""; struct free_broker { public: - free_broker(const char* s, uint16_t p, const char* comment) : url(s), port(p) {} + free_broker(const char* s, uint16_t p, const char* /* comment */) : url(s), port(p) {} - TinyString url; + string url; uint16_t port; }; -const std::map list = +const std::map list = { { "mqtthq", { "public.mqtthq.com" , 8083, "publish/subscribe" }}, { "hivemq", { "broker.hivemq.com", 1883, "" }} @@ -65,13 +67,13 @@ void onPublish(const MqttClient* srce, const Topic& topic, const char* payload, } } -std::map clients; -std::map brokers; -std::map vars; +std::map clients; +std::map brokers; +std::map vars; -void eval(TinyString& cmd); +void eval(string& cmd); -void replace(const char* d, TinyString& str, TinyString srch, TinyString to) +void replace(const char* d, string& str, string srch, string to) { if (d[0] && d[1]) { @@ -79,7 +81,7 @@ void replace(const char* d, TinyString& str, TinyString srch, TinyString to) to=d[0]+to+d[1]; size_t pos = 0; - while((pos=str.find(srch, pos)) != TinyString::npos) + while((pos=str.find(srch, pos)) != string::npos) { str.erase(pos, srch.length()); str.insert(pos, to); @@ -88,7 +90,7 @@ void replace(const char* d, TinyString& str, TinyString srch, TinyString to) } } -void replaceVars(TinyString& cmd) +void replaceVars(string& cmd) { cmd = ' '+cmd+' '; @@ -104,10 +106,10 @@ void replaceVars(TinyString& cmd) } -void onCommand(const TinyString& command) +void onCommand(const string& command) { Console << endl; - TinyString cmd=command; + string cmd=command; if (cmd.substr(0,3)!="set") replaceVars(cmd); eval(cmd); Console << endl; @@ -158,12 +160,12 @@ void setup() if (Console.isTerm()) onCommand("every 333 view"); } -TinyString getword(TinyString& str, const char* if_empty=nullptr, char sep=' '); +string getword(string& str, const char* if_empty=nullptr, char sep=' '); -int getint(TinyString& str, const int if_empty=0) +int getint(string& str, const int if_empty=0) { - TinyString str2=str; - TinyString sword = getword(str); + string str2=str; + string sword = getword(str); if (sword[0] and isdigit(sword[0])) { int ret=atoi(sword.c_str()); @@ -175,11 +177,11 @@ int getint(TinyString& str, const int if_empty=0) return if_empty; } -TinyString getword(TinyString& str, const char* if_empty/*=nullptr*/, char sep/*=' '*/) +string getword(string& str, const char* if_empty/*=nullptr*/, char sep/*=' '*/) { char quote=(str[0]=='"' or str[0]=='\'' ? str[0] : 0); if (quote) str.erase(0,1); - TinyString sword; + string sword; while(str.length() and (str[0]!=sep or quote)) { if (str[0]==quote) @@ -222,7 +224,7 @@ TinyString getword(TinyString& str, const char* if_empty/*=nullptr*/, char sep/* return sword; } -bool isaddr(TinyString s) +bool isaddr(string s) { if (s.length()==0 or s.length()>3) return false; for(char c: s) @@ -230,14 +232,14 @@ bool isaddr(TinyString s) return true; } -TinyString getip(TinyString& str, const char* if_empty=nullptr, char sep=' ') +string getip(string& str, const char* if_empty=nullptr, char sep=' ') { - TinyString addr=getword(str, if_empty, sep); - TinyString ip=addr; - std::vector build; + string addr=getword(str, if_empty, sep); + string ip=addr; + std::vector build; while(ip.length()) { - TinyString b=getword(ip,nullptr,'.'); + string b=getword(ip,nullptr,'.'); if (isaddr(b) && build.size()<4) { build.push_back(b); @@ -253,7 +255,7 @@ TinyString getip(TinyString& str, const char* if_empty=nullptr, char sep=' ') b << (int)local[3-build.size()]; build.insert(build.begin(), b.str().c_str()); } - for(TinyString s: build) + for(string s: build) { if (addr.length()) addr += '.'; addr += s; @@ -262,20 +264,20 @@ TinyString getip(TinyString& str, const char* if_empty=nullptr, char sep=' ') return addr; } -std::set commands = { +std::set commands = { "broker", "blink", "client", "connect", "create", "delete", "debug", "help", "interval", "list", "ls", "ip", "off", "on", "set", "publish", "reset", "subscribe", "unsubscribe", "view", "echo", "every" }; -void convertToCommand(TinyString& search) +void convertToCommand(string& search) { while(search[0]==' ') search.erase(0,1); if (search.length()==0) return; - TinyString matches; + string matches; int count=0; - for(TinyString cmd: commands) + for(string cmd: commands) { if (cmd.substr(0, search.length()) == search) { @@ -293,7 +295,7 @@ void convertToCommand(TinyString& search) } } -bool compare(TinyString s, const char* cmd) +bool compare(string s, const char* cmd) { uint8_t p=0; while(s[p++]==*cmd++) @@ -304,11 +306,11 @@ bool compare(TinyString s, const char* cmd) return false; } -using ClientFunction = void(*)(TinyString& cmd, MqttClient* publish); +using ClientFunction = void(*)(string& cmd, MqttClient* publish); struct Every { - TinyString cmd; + string cmd; uint32_t ms; uint32_t next; uint32_t underrun=0; @@ -338,9 +340,9 @@ int16_t blink; std::vector everies; -void clientConnect(MqttClient* client, TinyString& cmd) +void clientConnect(MqttClient* client, string& cmd) { - TinyString remote = getword(cmd); + string remote = getword(cmd); uint16_t port; auto it=list.find(remote); if (it != list.end()) @@ -356,18 +358,18 @@ void clientConnect(MqttClient* client, TinyString& cmd) Console << (client->connected() ? "connected." : "not connected") << endl; } -void eval(TinyString& cmd) +void eval(string& cmd) { while(cmd.length()) { MqttError retval = MqttOk; - TinyString s; + string s; MqttBroker* broker = nullptr; MqttClient* client = nullptr; // client.function notation - if (cmd.find('.') != TinyString::npos && + if (cmd.find('.') != string::npos && cmd.find('.') < cmd.find(' ')) { s=getword(cmd, nullptr, '.'); @@ -619,7 +621,7 @@ void eval(TinyString& cmd) } else if (compare(s, "broker")) { - TinyString id=getword(cmd); + string id=getword(cmd); if (clients.find(id) != clients.end()) { Console << "A client already have that name" << endl; @@ -650,7 +652,7 @@ void eval(TinyString& cmd) } else if (compare(s, "client")) { - TinyString id=getword(cmd); + string id=getword(cmd); if (brokers.find(id) != brokers.end()) { Console << "A broker have that name" << endl; @@ -687,7 +689,7 @@ void eval(TinyString& cmd) } else if (compare(s, "set")) { - TinyString name(getword(cmd)); + string name(getword(cmd)); if (name.length()==0) { for(auto it: vars) @@ -799,7 +801,7 @@ void loop() if (not every.active) continue; if (every.ms && every.cmd.length() && ms > every.next) { - TinyString cmd(every.cmd); + string cmd(every.cmd); eval(cmd); every.next += every.ms; if (ms > every.next and ms > every.underrun) @@ -832,7 +834,6 @@ void loop() out++; } - static long count; #if defined(ESP9266) MDNS.update(); #endif