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