tdd-in-c/test/mqtt_example_test.c

50 lines
1.8 KiB
C

#include <cgreen/cgreen.h>
#include <cgreen/mocks.h>
#include <mqtt_example.h>
#include <MQTTClient.h>
#define NOT_NULL (void*)1
LIBMQTT_API int MQTTClient_create(MQTTClient* handle, const char* serverURI, const char* clientId,
int persistence_type, void* persistence_context) {
return (int)mock(handle);
}
LIBMQTT_API int MQTTClient_connect(MQTTClient handle, MQTTClient_connectOptions* options) {
return (int)mock(handle);
}
LIBMQTT_API int MQTTClient_publishMessage(MQTTClient handle, const char* topicName, MQTTClient_message* msg, MQTTClient_deliveryToken* dt) {
return (int)mock(msg->payload, msg->payloadlen);
}
LIBMQTT_API int MQTTClient_waitForCompletion(MQTTClient handle, MQTTClient_deliveryToken dt, unsigned long timeout) {
return (int)mock();
}
LIBMQTT_API int MQTTClient_disconnect(MQTTClient handle, int timeout) {
return (int)mock();
}
LIBMQTT_API void MQTTClient_destroy(MQTTClient* handle) {
mock(handle);
}
Describe(mqtt_example);
BeforeEach(mqtt_example) {
// cgreen_mocks_are(learning_mocks);
}
AfterEach(mqtt_example) {}
Ensure(mqtt_example, payload_is_sent) {
// Arrange
MQTTClient mock_handle = NOT_NULL;
char *payload = "Hello World.";
size_t payload_len = strlen(payload);
// Expect
expect(MQTTClient_create, will_set_contents_of_parameter(handle, &mock_handle, sizeof(mock_handle)));
expect(MQTTClient_connect, when(handle, is_equal_to(mock_handle)), will_return(MQTTCLIENT_SUCCESS));
expect(MQTTClient_publishMessage, when(msg->payload, is_equal_to_string(payload)), when(msg->payloadlen, is_equal_to(payload_len)));
expect(MQTTClient_waitForCompletion, will_return(MQTTCLIENT_SUCCESS));
expect(MQTTClient_disconnect);
expect(MQTTClient_destroy);
// Act
send_mqtt_msg(payload, payload_len);
}