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:
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?

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 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 */