Commit 321015d4fed67106417e8020fe745051bcbede31

Authored by Wiebe Cazemier
1 parent 497bc9eb

Workaround Qt's COMPARE warnings

Showing 1 changed file with 45 additions and 29 deletions
FlashMQTests/tst_maintests.cpp
@@ -10,6 +10,22 @@ @@ -10,6 +10,22 @@
10 #include "mainappthread.h" 10 #include "mainappthread.h"
11 #include "twoclienttestcontext.h" 11 #include "twoclienttestcontext.h"
12 12
  13 +// Dumb Qt version gives warnings when comparing uint with number literal.
  14 +template <typename T1, typename T2>
  15 +inline bool myCastCompare(const T1 &t1, const T2 &t2, const char *actual, const char *expected,
  16 + const char *file, int line)
  17 +{
  18 + T1 t2_ = static_cast<T1>(t2);
  19 + return QTest::compare_helper(t1 == t2_, "Compared values are not the same",
  20 + QTest::toString(t1), QTest::toString(t2), actual, expected, file, line);
  21 +}
  22 +
  23 +#define MYCASTCOMPARE(actual, expected) \
  24 +do {\
  25 + if (!myCastCompare(actual, expected, #actual, #expected, __FILE__, __LINE__))\
  26 + return;\
  27 +} while (false)
  28 +
13 class MainTests : public QObject 29 class MainTests : public QObject
14 { 30 {
15 Q_OBJECT 31 Q_OBJECT
@@ -57,12 +73,12 @@ void MainTests::test_circbuf() @@ -57,12 +73,12 @@ void MainTests::test_circbuf()
57 { 73 {
58 CirBuf buf(64); 74 CirBuf buf(64);
59 75
60 - QCOMPARE(buf.freeSpace(), 63); 76 + MYCASTCOMPARE(buf.freeSpace(), 63);
61 77
62 - int write_n = 40; 78 + uint write_n = 40;
63 79
64 char *head = buf.headPtr(); 80 char *head = buf.headPtr();
65 - for (int i = 0; i < write_n; i++) 81 + for (uint i = 0; i < write_n; i++)
66 { 82 {
67 head[i] = i+1; 83 head[i] = i+1;
68 } 84 }
@@ -70,40 +86,40 @@ void MainTests::test_circbuf() @@ -70,40 +86,40 @@ void MainTests::test_circbuf()
70 buf.advanceHead(write_n); 86 buf.advanceHead(write_n);
71 87
72 QCOMPARE(buf.head, write_n); 88 QCOMPARE(buf.head, write_n);
73 - QCOMPARE(buf.tail, 0); 89 + MYCASTCOMPARE(buf.tail, 0);
74 QCOMPARE(buf.maxReadSize(), write_n); 90 QCOMPARE(buf.maxReadSize(), write_n);
75 QCOMPARE(buf.maxWriteSize(), (64 - write_n - 1)); 91 QCOMPARE(buf.maxWriteSize(), (64 - write_n - 1));
76 QCOMPARE(buf.freeSpace(), 64 - write_n - 1); 92 QCOMPARE(buf.freeSpace(), 64 - write_n - 1);
77 93
78 - for (int i = 0; i < write_n; i++) 94 + for (uint i = 0; i < write_n; i++)
79 { 95 {
80 - QCOMPARE(buf.tailPtr()[i], i+1); 96 + MYCASTCOMPARE(buf.tailPtr()[i], i+1);
81 } 97 }
82 98
83 buf.advanceTail(write_n); 99 buf.advanceTail(write_n);
84 QVERIFY(buf.tail == buf.head); 100 QVERIFY(buf.tail == buf.head);
85 QCOMPARE(buf.tail, write_n); 101 QCOMPARE(buf.tail, write_n);
86 - QCOMPARE(buf.maxReadSize(), 0); 102 + MYCASTCOMPARE(buf.maxReadSize(), 0);
87 QCOMPARE(buf.maxWriteSize(), (64 - write_n)); // no longer -1, because the head can point to 0 afterwards 103 QCOMPARE(buf.maxWriteSize(), (64 - write_n)); // no longer -1, because the head can point to 0 afterwards
88 - QCOMPARE(buf.freeSpace(), 63); 104 + MYCASTCOMPARE(buf.freeSpace(), 63);
89 105
90 write_n = buf.maxWriteSize(); 106 write_n = buf.maxWriteSize();
91 107
92 head = buf.headPtr(); 108 head = buf.headPtr();
93 - for (int i = 0; i < write_n; i++) 109 + for (uint i = 0; i < write_n; i++)
94 { 110 {
95 head[i] = i+1; 111 head[i] = i+1;
96 } 112 }
97 buf.advanceHead(write_n); 113 buf.advanceHead(write_n);
98 114
99 - QCOMPARE(buf.head, 0); 115 + MYCASTCOMPARE(buf.head, 0);
100 116
101 // Now write more, starting at the beginning. 117 // Now write more, starting at the beginning.
102 118
103 write_n = buf.maxWriteSize(); 119 write_n = buf.maxWriteSize();
104 120
105 head = buf.headPtr(); 121 head = buf.headPtr();
106 - for (int i = 0; i < write_n; i++) 122 + for (uint i = 0; i < write_n; i++)
107 { 123 {
108 head[i] = i+100; // Offset by 100 so we can see if we overwrite the tail 124 head[i] = i+100; // Offset by 100 so we can see if we overwrite the tail
109 } 125 }
@@ -136,7 +152,7 @@ void MainTests::test_circbuf_unwrapped_doubling() @@ -136,7 +152,7 @@ void MainTests::test_circbuf_unwrapped_doubling()
136 } 152 }
137 QCOMPARE(buf.buf[64], 0); // Vacant place, because of the circulerness. 153 QCOMPARE(buf.buf[64], 0); // Vacant place, because of the circulerness.
138 154
139 - QCOMPARE(buf.head, 63); 155 + MYCASTCOMPARE(buf.head, 63);
140 156
141 buf.doubleSize(); 157 buf.doubleSize();
142 tail = buf.tailPtr(); 158 tail = buf.tailPtr();
@@ -151,10 +167,10 @@ void MainTests::test_circbuf_unwrapped_doubling() @@ -151,10 +167,10 @@ void MainTests::test_circbuf_unwrapped_doubling()
151 QCOMPARE(tail[i], 5); 167 QCOMPARE(tail[i], 5);
152 } 168 }
153 169
154 - QCOMPARE(buf.tail, 0);  
155 - QCOMPARE(buf.head, 63);  
156 - QCOMPARE(buf.maxWriteSize(), 64);  
157 - QCOMPARE(buf.maxReadSize(), 63); 170 + MYCASTCOMPARE(buf.tail, 0);
  171 + MYCASTCOMPARE(buf.head, 63);
  172 + MYCASTCOMPARE(buf.maxWriteSize(), 64);
  173 + MYCASTCOMPARE(buf.maxReadSize(), 63);
158 } 174 }
159 175
160 void MainTests::test_circbuf_wrapped_doubling() 176 void MainTests::test_circbuf_wrapped_doubling()
@@ -170,14 +186,14 @@ void MainTests::test_circbuf_wrapped_doubling() @@ -170,14 +186,14 @@ void MainTests::test_circbuf_wrapped_doubling()
170 } 186 }
171 buf.advanceHead(w); 187 buf.advanceHead(w);
172 188
173 - QCOMPARE(buf.tail, 0);  
174 - QCOMPARE(buf.head, w);  
175 - QCOMPARE(buf.maxReadSize(), 40);  
176 - QCOMPARE(buf.maxWriteSize(), 23); 189 + MYCASTCOMPARE(buf.tail, 0);
  190 + MYCASTCOMPARE(buf.head, w);
  191 + MYCASTCOMPARE(buf.maxReadSize(), 40);
  192 + MYCASTCOMPARE(buf.maxWriteSize(), 23);
177 193
178 buf.advanceTail(40); 194 buf.advanceTail(40);
179 195
180 - QCOMPARE(buf.maxWriteSize(), 24); 196 + MYCASTCOMPARE(buf.maxWriteSize(), 24);
181 197
182 head = buf.headPtr(); 198 head = buf.headPtr();
183 for (int i = 0; i < 24; i++) 199 for (int i = 0; i < 24; i++)
@@ -186,10 +202,10 @@ void MainTests::test_circbuf_wrapped_doubling() @@ -186,10 +202,10 @@ void MainTests::test_circbuf_wrapped_doubling()
186 } 202 }
187 buf.advanceHead(24); 203 buf.advanceHead(24);
188 204
189 - QCOMPARE(buf.tail, 40);  
190 - QCOMPARE(buf.head, 0);  
191 - QCOMPARE(buf.maxReadSize(), 24);  
192 - QCOMPARE(buf.maxWriteSize(), 39); 205 + MYCASTCOMPARE(buf.tail, 40);
  206 + MYCASTCOMPARE(buf.head, 0);
  207 + MYCASTCOMPARE(buf.maxReadSize(), 24);
  208 + MYCASTCOMPARE(buf.maxWriteSize(), 39);
193 209
194 // Now write a little more, which starts at the start 210 // Now write a little more, which starts at the start
195 211
@@ -199,18 +215,18 @@ void MainTests::test_circbuf_wrapped_doubling() @@ -199,18 +215,18 @@ void MainTests::test_circbuf_wrapped_doubling()
199 head[i] = 88; 215 head[i] = 88;
200 } 216 }
201 buf.advanceHead(10); 217 buf.advanceHead(10);
202 - QCOMPARE(buf.head, 10); 218 + MYCASTCOMPARE(buf.head, 10);
203 219
204 buf.doubleSize(); 220 buf.doubleSize();
205 221
206 // The 88's that were appended at the start, should now appear at the end; 222 // The 88's that were appended at the start, should now appear at the end;
207 for (int i = 64; i < 74; i++) 223 for (int i = 64; i < 74; i++)
208 { 224 {
209 - QCOMPARE(buf.buf[i], 88); 225 + MYCASTCOMPARE(buf.buf[i], 88);
210 } 226 }
211 227
212 - QCOMPARE(buf.tail, 40);  
213 - QCOMPARE(buf.head, 74); 228 + MYCASTCOMPARE(buf.tail, 40);
  229 + MYCASTCOMPARE(buf.head, 74);
214 } 230 }
215 231
216 void MainTests::test_circbuf_full_wrapped_buffer_doubling() 232 void MainTests::test_circbuf_full_wrapped_buffer_doubling()