comparison UnitTestsSources/DicomMapTests.cpp @ 2410:3590c936e56f

parsing numbers in DicomValue
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 29 Sep 2017 10:13:52 +0200
parents 7284093111b0
children cad393b41bc3
comparison
equal deleted inserted replaced
2409:e4045b3c9772 2410:3590c936e56f
218 TestModule(ResourceType_Patient, DicomModule_Patient); 218 TestModule(ResourceType_Patient, DicomModule_Patient);
219 TestModule(ResourceType_Study, DicomModule_Study); 219 TestModule(ResourceType_Study, DicomModule_Study);
220 TestModule(ResourceType_Series, DicomModule_Series); // TODO 220 TestModule(ResourceType_Series, DicomModule_Series); // TODO
221 TestModule(ResourceType_Instance, DicomModule_Instance); 221 TestModule(ResourceType_Instance, DicomModule_Instance);
222 } 222 }
223
224
225 TEST(DicomMap, Parse)
226 {
227 DicomMap m;
228 float f;
229 double d;
230 int32_t i;
231 int64_t j;
232 uint32_t k;
233 uint64_t l;
234
235 m.SetValue(DICOM_TAG_PATIENT_NAME, " ", false); // Empty value
236 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
237 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
238 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
239 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
240 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
241 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
242
243 m.SetValue(DICOM_TAG_PATIENT_NAME, "0", true); // Binary value
244 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
245 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
246 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
247 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
248 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
249 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
250
251 // 2**31-1
252 m.SetValue(DICOM_TAG_PATIENT_NAME, "2147483647", false);
253 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
254 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
255 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
256 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
257 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
258 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
259 ASSERT_FLOAT_EQ(2147483647.0f, f);
260 ASSERT_DOUBLE_EQ(2147483647.0, d);
261 ASSERT_EQ(2147483647, i);
262 ASSERT_EQ(2147483647, j);
263 ASSERT_EQ(2147483647u, k);
264 ASSERT_EQ(2147483647u, l);
265
266 // 2**31
267 m.SetValue(DICOM_TAG_PATIENT_NAME, "2147483648", false);
268 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
269 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
270 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
271 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
272 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
273 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
274 ASSERT_FLOAT_EQ(2147483648.0f, f);
275 ASSERT_DOUBLE_EQ(2147483648.0, d);
276 ASSERT_EQ(2147483648, j);
277 ASSERT_EQ(2147483648u, k);
278 ASSERT_EQ(2147483648u, l);
279
280 // 2**32-1
281 m.SetValue(DICOM_TAG_PATIENT_NAME, "4294967295", false);
282 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
283 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
284 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
285 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
286 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
287 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
288 ASSERT_FLOAT_EQ(4294967295.0f, f);
289 ASSERT_DOUBLE_EQ(4294967295.0, d);
290 ASSERT_EQ(4294967295, j);
291 ASSERT_EQ(4294967295u, k);
292 ASSERT_EQ(4294967295u, l);
293
294 // 2**32
295 m.SetValue(DICOM_TAG_PATIENT_NAME, "4294967296", false);
296 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
297 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
298 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
299 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
300 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
301 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
302 ASSERT_FLOAT_EQ(4294967296.0f, f);
303 ASSERT_DOUBLE_EQ(4294967296.0, d);
304 ASSERT_EQ(4294967296, j);
305 ASSERT_EQ(4294967296u, l);
306
307 m.SetValue(DICOM_TAG_PATIENT_NAME, "-1", false);
308 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
309 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
310 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
311 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
312 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
313 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
314 ASSERT_FLOAT_EQ(-1.0f, f);
315 ASSERT_DOUBLE_EQ(-1.0, d);
316 ASSERT_EQ(-1, i);
317 ASSERT_EQ(-1, j);
318
319 // -2**31
320 m.SetValue(DICOM_TAG_PATIENT_NAME, "-2147483648", false);
321 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
322 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
323 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
324 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
325 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
326 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
327 ASSERT_FLOAT_EQ(-2147483648.0f, f);
328 ASSERT_DOUBLE_EQ(-2147483648.0, d);
329 ASSERT_EQ(-2147483648, i);
330 ASSERT_EQ(-2147483648, j);
331
332 // -2**31 - 1
333 m.SetValue(DICOM_TAG_PATIENT_NAME, "-2147483649", false);
334 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseFloat(f));
335 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseDouble(d));
336 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger32(i));
337 ASSERT_TRUE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseInteger64(j));
338 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger32(k));
339 ASSERT_FALSE(m.GetValue(DICOM_TAG_PATIENT_NAME).ParseUnsignedInteger64(l));
340 ASSERT_FLOAT_EQ(-2147483649.0f, f);
341 ASSERT_DOUBLE_EQ(-2147483649.0, d);
342 ASSERT_EQ(-2147483649, j);
343 }