Changed tab to spaces

This commit is contained in:
hsaturn
2022-10-30 21:43:45 +01:00
parent 2147b147fc
commit e7fc147424

View File

@@ -4,148 +4,148 @@
#include <map> #include <map>
/** /**
* TinyMqtt local unit tests. * TinyMqtt local unit tests.
* *
* Clients are connected to pseudo remote broker * Clients are connected to pseudo remote broker
* The remote should be 127.0.0.1:1883 <--- But this does not work due to Esp network limitations * The remote should be 127.0.0.1:1883 <--- But this does not work due to Esp network limitations
* We are using 127.0.0.1 because this is simpler to test with a single ESP * We are using 127.0.0.1 because this is simpler to test with a single ESP
* Also, this will allow to mock and thus run Action on github * Also, this will allow to mock and thus run Action on github
**/ **/
using namespace std; using namespace std;
MqttBroker broker(1883); MqttBroker broker(1883);
std::map<std::string, std::map<Topic, int>> published; // map[client_id] => map[topic] = count std::map<std::string, std::map<Topic, int>> published; // map[client_id] => map[topic] = count
const char* lastPayload; const char* lastPayload;
size_t lastLength; size_t lastLength;
void onPublish(const MqttClient* srce, const Topic& topic, const char* payload, size_t length) void onPublish(const MqttClient* srce, const Topic& topic, const char* payload, size_t length)
{ {
if (srce) if (srce)
published[srce->id()][topic]++; published[srce->id()][topic]++;
lastPayload = payload; lastPayload = payload;
lastLength = length; lastLength = length;
} }
test(local_client_should_unregister_when_destroyed) test(local_client_should_unregister_when_destroyed)
{ {
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.clientsCount(), (size_t)0);
{ {
assertEqual(broker.clientsCount(), (size_t)0); // Ensure client is not yet connected assertEqual(broker.clientsCount(), (size_t)0); // Ensure client is not yet connected
MqttClient client(&broker); MqttClient client(&broker);
assertEqual(broker.clientsCount(), (size_t)1); // Ensure client is now connected assertEqual(broker.clientsCount(), (size_t)1); // Ensure client is now connected
} }
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.clientsCount(), (size_t)0);
} }
#if 0 #if 0
test(local_connect) test(local_connect)
{ {
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.clientsCount(), (size_t)0);
MqttClient client; MqttClient client;
assertTrue(client.connected()); assertTrue(client.connected());
assertEqual(broker.clientsCount(), (size_t)1); assertEqual(broker.clientsCount(), (size_t)1);
} }
test(local_publish_should_be_dispatched) test(local_publish_should_be_dispatched)
{ {
published.clear(); published.clear();
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.clientsCount(), (size_t)0);
MqttClient subscriber; MqttClient subscriber;
subscriber.subscribe("a/b"); subscriber.subscribe("a/b");
subscriber.subscribe("a/c"); subscriber.subscribe("a/c");
subscriber.setCallback(onPublish); subscriber.setCallback(onPublish);
MqttClient publisher; MqttClient publisher;
publisher.publish("a/b"); publisher.publish("a/b");
publisher.publish("a/c"); publisher.publish("a/c");
publisher.publish("a/c"); publisher.publish("a/c");
assertEqual(published.size(), (size_t)1); // 1 client has received something assertEqual(published.size(), (size_t)1); // 1 client has received something
assertEqual(published[""]["a/b"], 1); assertEqual(published[""]["a/b"], 1);
assertEqual(published[""]["a/c"], 2); assertEqual(published[""]["a/c"], 2);
} }
test(local_publish_should_be_dispatched_to_local_clients) test(local_publish_should_be_dispatched_to_local_clients)
{ {
published.clear(); published.clear();
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.clientsCount(), (size_t)0);
MqttClient subscriber_a("A"); MqttClient subscriber_a("A");
subscriber_a.setCallback(onPublish); subscriber_a.setCallback(onPublish);
subscriber_a.subscribe("a/b"); subscriber_a.subscribe("a/b");
subscriber_a.subscribe("a/c"); subscriber_a.subscribe("a/c");
MqttClient subscriber_b("B"); MqttClient subscriber_b("B");
subscriber_b.setCallback(onPublish); subscriber_b.setCallback(onPublish);
subscriber_b.subscribe("a/b"); subscriber_b.subscribe("a/b");
MqttClient publisher; MqttClient publisher;
publisher.publish("a/b"); publisher.publish("a/b");
publisher.publish("a/c"); publisher.publish("a/c");
assertEqual(published.size(), (size_t)2); // 2 clients have received something assertEqual(published.size(), (size_t)2); // 2 clients have received something
assertEqual(published["A"]["a/b"], 1); assertEqual(published["A"]["a/b"], 1);
assertEqual(published["A"]["a/c"], 1); assertEqual(published["A"]["a/c"], 1);
assertEqual(published["B"]["a/b"], 1); assertEqual(published["B"]["a/b"], 1);
assertEqual(published["B"]["a/c"], 0); assertEqual(published["B"]["a/c"], 0);
} }
test(local_unsubscribe) test(local_unsubscribe)
{ {
published.clear(); published.clear();
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.clientsCount(), (size_t)0);
MqttClient subscriber; MqttClient subscriber;
subscriber.setCallback(onPublish); subscriber.setCallback(onPublish);
subscriber.subscribe("a/b"); subscriber.subscribe("a/b");
MqttClient publisher; MqttClient publisher;
publisher.publish("a/b"); publisher.publish("a/b");
subscriber.unsubscribe("a/b"); subscriber.unsubscribe("a/b");
publisher.publish("a/b"); publisher.publish("a/b");
publisher.publish("a/b"); publisher.publish("a/b");
assertEqual(published[""]["a/b"], 1); // Only one publish has been received assertEqual(published[""]["a/b"], 1); // Only one publish has been received
} }
test(local_nocallback_when_destroyed) test(local_nocallback_when_destroyed)
{ {
published.clear(); published.clear();
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.clientsCount(), (size_t)0);
MqttClient publisher; MqttClient publisher;
{ {
MqttClient subscriber; MqttClient subscriber;
subscriber.setCallback(onPublish); subscriber.setCallback(onPublish);
subscriber.subscribe("a/b"); subscriber.subscribe("a/b");
publisher.publish("a/b"); publisher.publish("a/b");
} }
publisher.publish("a/b"); publisher.publish("a/b");
assertEqual(published.size(), (size_t)1); // Only one publish has been received assertEqual(published.size(), (size_t)1); // Only one publish has been received
} }
#endif #endif
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// setup() and loop() // setup() and loop()
void setup() { void setup() {
delay(1000); delay(1000);
Serial.begin(115200); Serial.begin(115200);
while(!Serial); while(!Serial);
Serial.println("=============[ LOCAL TinyMqtt TESTS ]========================"); Serial.println("=============[ LOCAL TinyMqtt TESTS ]========================");
} }
void loop() { void loop() {
aunit::TestRunner::run(); aunit::TestRunner::run();
if (Serial.available()) ESP.reset(); if (Serial.available()) ESP.reset();
} }