A library for talking to Multi-Tech's Cellular SocketModem Devices.

Dependents:   M2X_dev axeda_wrapper_dev MTS_M2x_Example1 MTS_Cellular_Connect_Example ... more

Committer:
mfiore
Date:
Thu Jan 02 18:11:25 2014 +0000
Revision:
124:6d964b4343c8
Parent:
tests/testMTSCircularBuffer.h@68:c490e4a51778
Child:
141:571e0ef6c8dc
finish cleaning up test directory; socket, socket echo, and ping tests can be run on wifi or cellular by changing #define value in each test header; test_main.cpp has commented out main function with all tests ready to go

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jengbrecht 0:563b70517320 1 #ifndef TESTMTSCIRCULARBUFFER_H
jengbrecht 0:563b70517320 2 #define TESTMTSCIRCULARBUFFER_H
jengbrecht 0:563b70517320 3
jengbrecht 0:563b70517320 4 #include "MTSCircularBuffer.h"
jengbrecht 0:563b70517320 5 #include "Vars.h"
jengbrecht 0:563b70517320 6
mfiore 124:6d964b4343c8 7 /* unit tests for the circular buffer class */
mfiore 124:6d964b4343c8 8
mfiore 60:ee9c7a700330 9 using namespace mts;
mfiore 60:ee9c7a700330 10
jengbrecht 0:563b70517320 11 int capacity = 0;
jengbrecht 0:563b70517320 12 MTSCircularBuffer* buffer = new MTSCircularBuffer(5);
jengbrecht 0:563b70517320 13
jengbrecht 0:563b70517320 14 void callback()
jengbrecht 0:563b70517320 15 {
sgodinez 67:1003b410f781 16 capacity = buffer->remaining();
jengbrecht 0:563b70517320 17 }
jengbrecht 0:563b70517320 18
jengbrecht 0:563b70517320 19 int testMTSCircularBuffer()
jengbrecht 0:563b70517320 20 {
sgodinez 67:1003b410f781 21 printf("Testing: MTSCircularBuffer\r\n");
jengbrecht 0:563b70517320 22 int failed = 0;
mfiore 60:ee9c7a700330 23 char byte;
jengbrecht 0:563b70517320 24
jengbrecht 0:563b70517320 25
jengbrecht 0:563b70517320 26 //Test getSize method
sgodinez 67:1003b410f781 27 if (buffer->capacity() != 5) {
sgodinez 67:1003b410f781 28 printf("Failed: capacity()\r\n");
jengbrecht 0:563b70517320 29 failed++;
jengbrecht 0:563b70517320 30 }
jengbrecht 0:563b70517320 31
jengbrecht 0:563b70517320 32 //Test clear function
jengbrecht 0:563b70517320 33 buffer->write("AT", 2);
jengbrecht 0:563b70517320 34 buffer->clear();
sgodinez 67:1003b410f781 35 if (buffer->size() != 0) {
sgodinez 67:1003b410f781 36 printf("Failed: clear()\r\n");
jengbrecht 0:563b70517320 37 failed++;
jengbrecht 0:563b70517320 38 }
jengbrecht 0:563b70517320 39
jengbrecht 0:563b70517320 40 /* The next set of test all rely on an empty buffer!!! */
jengbrecht 0:563b70517320 41
jengbrecht 0:563b70517320 42 //Test isEmpty method - empty buffer
jengbrecht 0:563b70517320 43 if (buffer->isEmpty() != true) {
sgodinez 67:1003b410f781 44 printf("Failed: isEmpty() - empty\r\n");
jengbrecht 0:563b70517320 45 failed++;
jengbrecht 0:563b70517320 46 }
jengbrecht 0:563b70517320 47
jengbrecht 0:563b70517320 48 //Test isFull method - empty buffer
jengbrecht 0:563b70517320 49 if (buffer->isFull() == true) {
sgodinez 67:1003b410f781 50 printf("Failed: isFull() - empty\r\n");
jengbrecht 0:563b70517320 51 failed++;
jengbrecht 0:563b70517320 52 }
jengbrecht 0:563b70517320 53
jengbrecht 0:563b70517320 54 //Test capacity method - empty buffer
sgodinez 67:1003b410f781 55 if (buffer->remaining() != 5) {
sgodinez 67:1003b410f781 56 printf("Failed: remaining() - empty\r\n");
jengbrecht 0:563b70517320 57 failed++;
jengbrecht 0:563b70517320 58 }
jengbrecht 0:563b70517320 59
jengbrecht 0:563b70517320 60 //Test available method - empty buffer
sgodinez 67:1003b410f781 61 if (buffer->size() != 0) {
sgodinez 67:1003b410f781 62 printf("Failed: size() - empty\r\n");
jengbrecht 0:563b70517320 63 failed++;
jengbrecht 0:563b70517320 64 }
jengbrecht 0:563b70517320 65
jengbrecht 0:563b70517320 66 /* The next set of tests all rely on a full buffer */
jengbrecht 0:563b70517320 67
jengbrecht 0:563b70517320 68 //Test bulk write method
jengbrecht 0:563b70517320 69 int tmp = buffer->write("Test", 5);
mfiore 60:ee9c7a700330 70 if (tmp != 5) {
sgodinez 67:1003b410f781 71 printf("Failed: bulk write()\r\n");
jengbrecht 0:563b70517320 72 failed++;
jengbrecht 0:563b70517320 73 }
jengbrecht 0:563b70517320 74
jengbrecht 0:563b70517320 75 //Test isEmpty method - full buffer
jengbrecht 0:563b70517320 76 if (buffer->isEmpty() == true) {
sgodinez 67:1003b410f781 77 printf("Failed: isEmpty() - full\r\n");
jengbrecht 0:563b70517320 78 failed++;
jengbrecht 0:563b70517320 79 }
jengbrecht 0:563b70517320 80
jengbrecht 0:563b70517320 81 //Test isFull method - full buffer
jengbrecht 0:563b70517320 82 if (buffer->isFull() == false) {
sgodinez 67:1003b410f781 83 printf("Failed: isFull() - full\r\n");
jengbrecht 0:563b70517320 84 failed++;
jengbrecht 0:563b70517320 85 }
jengbrecht 0:563b70517320 86
jengbrecht 0:563b70517320 87 //Test capacity method - full buffer
sgodinez 67:1003b410f781 88 if (buffer->remaining() != 0) {
sgodinez 67:1003b410f781 89 printf("Failed: remaining() - full\r\n");
jengbrecht 0:563b70517320 90 failed++;
jengbrecht 0:563b70517320 91 }
jengbrecht 0:563b70517320 92
jengbrecht 0:563b70517320 93 //Test available method - full buffer
sgodinez 67:1003b410f781 94 if (buffer->size() != 5) {
sgodinez 67:1003b410f781 95 printf("Failed: size() - full\r\n");
jengbrecht 0:563b70517320 96 failed++;
jengbrecht 0:563b70517320 97 }
jengbrecht 0:563b70517320 98
jengbrecht 0:563b70517320 99 //Test single overwrite method
mfiore 60:ee9c7a700330 100 if (buffer->write('A') != 0) {
sgodinez 67:1003b410f781 101 printf("Failed: write() - overwrite\r\n");
jengbrecht 0:563b70517320 102 failed++;
jengbrecht 0:563b70517320 103 }
jengbrecht 0:563b70517320 104
jengbrecht 0:563b70517320 105 //Test bulk overwrite method
mfiore 60:ee9c7a700330 106 if (buffer->write("Test", 5) != 0) {
sgodinez 67:1003b410f781 107 printf("Failed: bulk write() - overflow\r\n");
jengbrecht 0:563b70517320 108 failed++;
jengbrecht 0:563b70517320 109 }
jengbrecht 0:563b70517320 110
jengbrecht 0:563b70517320 111 //Test single read method
sgodinez 67:1003b410f781 112 if ((buffer->read(byte) < 1 && byte != 'T') || buffer->remaining() != 1) {
sgodinez 67:1003b410f781 113 printf("Failed: single read()\r\n");
jengbrecht 0:563b70517320 114 failed++;
jengbrecht 0:563b70517320 115 }
jengbrecht 0:563b70517320 116
jengbrecht 0:563b70517320 117 //Test bulk read method
jengbrecht 0:563b70517320 118 char data[5];
mfiore 60:ee9c7a700330 119 if (buffer->read(data, 4) != 4 || data[0] != 'e' || data[1] != 's' || data[2] != 't' || data[3] != '\0') {
sgodinez 67:1003b410f781 120 printf("Failed: bulk read()\r\n");
jengbrecht 0:563b70517320 121 failed++;
jengbrecht 0:563b70517320 122 }
jengbrecht 0:563b70517320 123
jengbrecht 0:563b70517320 124 //Test wrap write/read methods
mfiore 60:ee9c7a700330 125 tmp = buffer->write("AT", 3);
mfiore 60:ee9c7a700330 126 if (tmp != 3 || (buffer->read(byte) < 1 && byte != 'A') || (buffer->read(byte) < 1 && byte != 'T')) {
sgodinez 67:1003b410f781 127 printf("Failed: wrap write()/read()\r\n");
jengbrecht 0:563b70517320 128 failed++;
jengbrecht 0:563b70517320 129 }
jengbrecht 0:563b70517320 130 buffer->clear();
jengbrecht 0:563b70517320 131
jengbrecht 0:563b70517320 132 /* The next set of test are focused all on the attach methods */
jengbrecht 0:563b70517320 133
jengbrecht 0:563b70517320 134 //Test attach with greater than below level
jengbrecht 0:563b70517320 135 buffer->attach(&callback, 3, Vars::GREATER);
jengbrecht 0:563b70517320 136 buffer->write("ABC", 3);
jengbrecht 0:563b70517320 137 if (capacity != 0) {
sgodinez 67:1003b410f781 138 printf("Failed: attach() - greater/below\r\n");
jengbrecht 0:563b70517320 139 failed++;
jengbrecht 0:563b70517320 140 }
jengbrecht 0:563b70517320 141
jengbrecht 0:563b70517320 142 //Test attach with greater than above level
jengbrecht 0:563b70517320 143 buffer->write('T');
jengbrecht 0:563b70517320 144 if (capacity != 1) {
sgodinez 67:1003b410f781 145 printf("Failed: attach() - greater/above\r\n");
jengbrecht 0:563b70517320 146 failed++;
jengbrecht 0:563b70517320 147 }
jengbrecht 0:563b70517320 148 buffer->clear();
jengbrecht 0:563b70517320 149 capacity = 0;
jengbrecht 0:563b70517320 150
jengbrecht 0:563b70517320 151 //Test attach with greater equal than below level
jengbrecht 0:563b70517320 152 buffer->attach(&callback, 3, Vars::GREATER_EQUAL);
jengbrecht 0:563b70517320 153 buffer->write("AB", 2);
jengbrecht 0:563b70517320 154 if (capacity != 0) {
sgodinez 67:1003b410f781 155 printf("Failed: attach() - greater equal/below\r\n");
jengbrecht 0:563b70517320 156 failed++;
jengbrecht 0:563b70517320 157 }
jengbrecht 0:563b70517320 158
jengbrecht 0:563b70517320 159 //Test attach with greater equal than above level
jengbrecht 0:563b70517320 160 buffer->write('T');
jengbrecht 0:563b70517320 161 if (capacity != 2) {
sgodinez 67:1003b410f781 162 printf("Failed: attach() - greater equal/above\r\n");
jengbrecht 0:563b70517320 163 failed++;
jengbrecht 0:563b70517320 164 }
jengbrecht 0:563b70517320 165
jengbrecht 0:563b70517320 166 //Test attach with less than above level
jengbrecht 0:563b70517320 167 buffer->clear();
jengbrecht 0:563b70517320 168 buffer->write("ABC", 3);
jengbrecht 0:563b70517320 169 capacity = 0;
jengbrecht 0:563b70517320 170 buffer->attach(&callback, 2, Vars::LESS);
mfiore 60:ee9c7a700330 171 buffer->read(byte);
jengbrecht 0:563b70517320 172 if (capacity != 0) {
sgodinez 67:1003b410f781 173 printf("Failed: attach() - less_equal/above\r\n");
jengbrecht 0:563b70517320 174 failed++;
jengbrecht 0:563b70517320 175 }
jengbrecht 0:563b70517320 176
jengbrecht 0:563b70517320 177 //Test attach with less than below level
mfiore 60:ee9c7a700330 178 buffer->read(byte);
jengbrecht 0:563b70517320 179 if (capacity != 4) {
sgodinez 67:1003b410f781 180 printf("Failed: attach() - less_equal/below%d\r\n", capacity);
jengbrecht 0:563b70517320 181 failed++;
jengbrecht 0:563b70517320 182 }
jengbrecht 0:563b70517320 183
jengbrecht 0:563b70517320 184 //Test attach with less equal than above level
jengbrecht 0:563b70517320 185 buffer->clear();
jengbrecht 0:563b70517320 186 buffer->write("Test", 4);
jengbrecht 0:563b70517320 187 capacity = 0;
jengbrecht 0:563b70517320 188 buffer->attach(&callback, 2, Vars::LESS_EQUAL);
mfiore 60:ee9c7a700330 189 buffer->read(byte);
jengbrecht 0:563b70517320 190 if (capacity != 0) {
sgodinez 67:1003b410f781 191 printf("Failed: attach() - less equal/above\r\n");
jengbrecht 0:563b70517320 192 failed++;
jengbrecht 0:563b70517320 193 }
jengbrecht 0:563b70517320 194
jengbrecht 0:563b70517320 195 //Test attach with less equal than below level
mfiore 60:ee9c7a700330 196 buffer->read(byte);
jengbrecht 0:563b70517320 197 if (capacity != 3) {
sgodinez 67:1003b410f781 198 printf("Failed: attach() - less equal/below%d\r\n", capacity);
jengbrecht 0:563b70517320 199 failed++;
jengbrecht 0:563b70517320 200 }
jengbrecht 0:563b70517320 201
jengbrecht 0:563b70517320 202 //Test attach with less equal than above level
jengbrecht 0:563b70517320 203 buffer->clear();
jengbrecht 0:563b70517320 204 buffer->write("Test", 4);
jengbrecht 0:563b70517320 205 capacity = 0;
jengbrecht 0:563b70517320 206 buffer->attach(&callback, 2, Vars::EQUAL);
mfiore 60:ee9c7a700330 207 buffer->read(byte);
jengbrecht 0:563b70517320 208 if (capacity != 0) {
sgodinez 67:1003b410f781 209 printf("Failed: attach() - equal/above\r\n");
jengbrecht 0:563b70517320 210 failed++;
jengbrecht 0:563b70517320 211 }
jengbrecht 0:563b70517320 212
jengbrecht 0:563b70517320 213 //Test attach with less equal than below level
mfiore 60:ee9c7a700330 214 buffer->read(byte);
jengbrecht 0:563b70517320 215 if (capacity != 3) {
sgodinez 67:1003b410f781 216 printf("Failed: attach() - equal/below%d\r\n", capacity);
jengbrecht 0:563b70517320 217 failed++;
jengbrecht 0:563b70517320 218 }
jengbrecht 0:563b70517320 219
sgodinez 67:1003b410f781 220 //Test Ins and Outs
sgodinez 67:1003b410f781 221 {
sgodinez 68:c490e4a51778 222 const char inData[] = "*ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890*";
sgodinez 67:1003b410f781 223 const int size = sizeof(inData);
sgodinez 67:1003b410f781 224 char outData[size];
sgodinez 67:1003b410f781 225
sgodinez 67:1003b410f781 226 int bytesWritten = 0;
sgodinez 67:1003b410f781 227 int bytesRead = 0;
sgodinez 67:1003b410f781 228 buffer->clear();
sgodinez 67:1003b410f781 229
sgodinez 67:1003b410f781 230 Timer tmr;
sgodinez 67:1003b410f781 231 tmr.start();
sgodinez 67:1003b410f781 232 do {
sgodinez 67:1003b410f781 233 int remaining = size - bytesRead;
sgodinez 67:1003b410f781 234 int readable = buffer->size();
sgodinez 67:1003b410f781 235 if(remaining) {
sgodinez 67:1003b410f781 236 if(readable) {
sgodinez 67:1003b410f781 237 //printf("READABLE [%d]\r\n", readable);
sgodinez 67:1003b410f781 238 int received = buffer->read(&outData[bytesRead], remaining);
sgodinez 67:1003b410f781 239 bytesRead += received;
sgodinez 67:1003b410f781 240 //printf("READ [%d] TOTAL[%d] REMAINING[%d]\r\n", received, bytesRead, size - bytesRead);
sgodinez 67:1003b410f781 241 }
sgodinez 67:1003b410f781 242 }
sgodinez 67:1003b410f781 243
sgodinez 67:1003b410f781 244 remaining = size - bytesWritten;
sgodinez 67:1003b410f781 245 int writeable = buffer->remaining();
sgodinez 67:1003b410f781 246 if(remaining) {
sgodinez 67:1003b410f781 247 if(writeable) {
sgodinez 67:1003b410f781 248 //printf("WRITEABLE [%d]\r\n", writeable);
sgodinez 67:1003b410f781 249 int written = buffer->write(&inData[bytesWritten], remaining);
sgodinez 67:1003b410f781 250 bytesWritten += written;
sgodinez 67:1003b410f781 251 remaining = size - bytesWritten;
sgodinez 67:1003b410f781 252 //printf("WROTE [%d] TOTAL[%d] REMAINING[%d]\r\n", written, bytesWritten, size - bytesWritten);
sgodinez 67:1003b410f781 253 }
sgodinez 67:1003b410f781 254 }
sgodinez 67:1003b410f781 255
sgodinez 67:1003b410f781 256 } while (tmr.read_ms() <= 5000 && bytesRead < size);
sgodinez 67:1003b410f781 257
sgodinez 68:c490e4a51778 258 printf("INPUT [%d]: [%s]\r\n", size, inData);
sgodinez 68:c490e4a51778 259 printf("OUTPUT [%d]: [%s]\r\n", bytesRead, outData);
sgodinez 67:1003b410f781 260 for(int i = 0; i < size - 1; i++) {
sgodinez 67:1003b410f781 261 if(inData[i] != outData[i]) {
sgodinez 67:1003b410f781 262 printf("Failed: Buffers do not match at index %d\r\n", i);
sgodinez 67:1003b410f781 263 failed++;
sgodinez 67:1003b410f781 264 break;
sgodinez 67:1003b410f781 265 }
sgodinez 67:1003b410f781 266 }
sgodinez 67:1003b410f781 267 }
sgodinez 67:1003b410f781 268
sgodinez 67:1003b410f781 269 printf("Finished Testing: MTSCircularBuffer\r\n");
jengbrecht 0:563b70517320 270 return failed;
jengbrecht 0:563b70517320 271 }
jengbrecht 0:563b70517320 272
jengbrecht 0:563b70517320 273 #endif /* TESTMTSCIRCULARBUFFER_H */