# HG changeset patch # User Sebastien Jodogne # Date 1551209551 -3600 # Node ID 230aede7f8d50dd2fc2233556bb189971f5e2cf7 # Parent 4d5af1f49cb2241e03a6ab1908695105802c52d4 test_bitbucket_issue_96 diff -r 4d5af1f49cb2 -r 230aede7f8d5 Plugins/DicomWeb/DicomWeb.py --- a/Plugins/DicomWeb/DicomWeb.py Tue Feb 26 18:30:31 2019 +0100 +++ b/Plugins/DicomWeb/DicomWeb.py Tue Feb 26 20:32:31 2019 +0100 @@ -75,14 +75,23 @@ for i in answer[0]: header += '%s: %s\r\n' % (i, answer[0][i]) - msg = email.message_from_string(header + '\r\n' + answer[1]) + b = bytearray() + b.extend(header.encode('ascii')) + b.extend(b'\r\n') + b.extend(answer[1]) + + if (sys.version_info >= (3, 0)): + msg = email.message_from_bytes(b) + else: + msg = email.message_from_string(b) + if not msg.is_multipart(): raise Exception('Not a multipart message') result = [] for part in msg.walk(): - payload = part.get_payload(decode=True) + payload = part.get_payload(decode = True) if payload != None: result.append(payload) diff -r 4d5af1f49cb2 -r 230aede7f8d5 Plugins/DicomWeb/Run.py --- a/Plugins/DicomWeb/Run.py Tue Feb 26 18:30:31 2019 +0100 +++ b/Plugins/DicomWeb/Run.py Tue Feb 26 20:32:31 2019 +0100 @@ -434,8 +434,13 @@ self.assertEqual(1, len(a)) self.assertEqual('IS', a[0]['00180091']['vr']) # EchoTrainLength + if (sys.version_info >= (3, 0)): + types = (int) + else: + types = (int, long) + b = a[0]['00180091']['Value'][0] - self.assertTrue(isinstance(b, (int, long))) + self.assertTrue(isinstance(b, types)) self.assertEqual(10, b) # This is the QIDO-RS testing @@ -444,7 +449,7 @@ self.assertEqual('IS', a[0]['00201208']['vr']) # Number of Study Related Instances b = a[0]['00201208']['Value'][0] - self.assertTrue(isinstance(b, (int, long))) + self.assertTrue(isinstance(b, types)) self.assertEqual(1, b) @@ -486,16 +491,41 @@ a = DoGet(ORTHANC, '/dicom-web/instances') self.assertEqual(1, len(a)) + self.assertEqual(2, a[0]['00280008']['Value'][0]) # Number of frames + self.assertEqual(512, a[0]['00280010']['Value'][0]) # Rows + self.assertEqual(512, a[0]['00280011']['Value'][0]) # Columns + self.assertEqual(8, a[0]['00280100']['Value'][0]) # Bits allocated + url = a[0]['00081190']['Value'][0] prefix = 'http://localhost:8042' self.assertTrue(url.startswith(prefix)) uri = url[len(prefix):] - b = DoGetRaw(ORTHANC, '%s/frames/1' % uri, headers = { 'Accept' : 'multipart/related; type=application/octet-stream' }) - print b + self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 0))) + self.assertRaises(Exception, lambda: DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 3))) + + b = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 1)) + self.assertEqual(1, len(b)) + self.assertEqual(512 * 512 * 3, len(b[0])) + c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 2)) + self.assertEqual(1, len(c)) + self.assertEqual(512 * 512 * 3, len(c[0])) + self.assertEqual(b[0], c[0]) + + c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 2), + headers = { 'Accept' : 'multipart/related; type=application/octet-stream' }) + self.assertEqual(1, len(c)) + self.assertEqual(b[0], c[0]) + + c = DoGetMultipart(ORTHANC, '%s/frames/%d' % (uri, 2), + headers = { 'Accept' : 'multipart/related; type="application/octet-stream"' }) + self.assertEqual(1, len(c)) + self.assertEqual(b[0], c[0]) + + try: print('\nStarting the tests...') unittest.main(argv = [ sys.argv[0] ] + args.options)