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
tests/test_MTS_Circular_Buffer.h@124:6d964b4343c8, 2014-01-02 (annotated)
- 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?
User | Revision | Line number | New 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 */ |