Unit tests for SmartRest
Dependencies: C027 SmartRest mbed
Diff: mock/MockClient.cpp
- Revision:
- 0:789029e49ea1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mock/MockClient.cpp Mon Mar 24 10:12:45 2014 +0000 @@ -0,0 +1,91 @@ +#include "MockClient.h" + +#define STATE_INIT 0 +#define STATE_IN_REQUEST 1 +#define STATE_SENT_ID 2 +#define STATE_SENT_DATA 3 +#define STATE_REQ_COMPLETE 4 +#define STATE_RECVD_RESPONSE 5 +#define STATE_RECV_DATA 6 + +MockClient::MockClient() +{ + _state = STATE_INIT; + _data = NULL; + _ident = NULL; +} + +void MockClient::receiveData(const char* str) +{ + _data = str; +} + +char* MockClient::sentData() +{ + return _sink.value(); +} + +void MockClient::clearSent() +{ + _sink.clear(); +} + +uint8_t MockClient::beginRequest() +{ + if (_state != STATE_INIT) + return CLIENT_INTERNAL_ERROR; + _state = STATE_IN_REQUEST; + return CLIENT_OK; +} + +uint8_t MockClient::sendIdentifier(const char* identifier) +{ + if (_state != STATE_IN_REQUEST) + return CLIENT_INTERNAL_ERROR; + _ident = (char*)identifier; + _state = STATE_SENT_ID; + return CLIENT_OK; +} + +uint8_t MockClient::sendData(DataGenerator& generator) +{ + if (_state != STATE_SENT_ID) + return CLIENT_INTERNAL_ERROR; + generator.writeTo(_sink); + _state = STATE_SENT_DATA; + return CLIENT_OK; +} + +uint8_t MockClient::endRequest() +{ + if ((_state != STATE_SENT_ID) && (_state != STATE_SENT_DATA)) + return CLIENT_INTERNAL_ERROR; + _state = STATE_REQ_COMPLETE; + return CLIENT_OK; +} + +uint8_t MockClient::awaitResponse() +{ + if (_state != STATE_REQ_COMPLETE) + return CLIENT_INTERNAL_ERROR; + _state = STATE_RECVD_RESPONSE; + return CLIENT_OK; +} + +AbstractDataSource& MockClient::receiveData() +{ + if ((_state == STATE_RECVD_RESPONSE) && (_data != NULL)) + _source.set(_data); + else + _source.clear(); + _state = STATE_RECV_DATA; + return _source; +} + +void MockClient::stop() +{ + _state = STATE_INIT; + _sink.clear(); + _source.clear(); +} +