#include #include #include #include #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); }