Mercurial > hg > orthanc-tests
comparison Tests/Tests.py @ 299:c2144cf4bd83
HasGdcmPlugin() test
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 14 May 2020 19:19:19 +0200 |
parents | 032722c3e919 |
children | d6c2eb5a2603 |
comparison
equal
deleted
inserted
replaced
298:40d9f449b9dd | 299:c2144cf4bd83 |
---|---|
135 'StudyDescription': 'Sébastien^', | 135 'StudyDescription': 'Sébastien^', |
136 'StudyDate' : '19700202', | 136 'StudyDate' : '19700202', |
137 } | 137 } |
138 ] | 138 ] |
139 | 139 |
140 | |
141 def HasGdcmPlugin(): | |
142 plugins = DoGet(_REMOTE, '/plugins') | |
143 return ('gdcm' in plugins) | |
140 | 144 |
141 | 145 |
142 class Orthanc(unittest.TestCase): | 146 class Orthanc(unittest.TestCase): |
143 def setUp(self): | 147 def setUp(self): |
144 if (sys.version_info >= (3, 0)): | 148 if (sys.version_info >= (3, 0)): |
1626 def test_googlecode_issue_19(self): | 1630 def test_googlecode_issue_19(self): |
1627 # This is an image with "YBR_FULL" photometric interpretation, it is not supported by Orthanc | 1631 # This is an image with "YBR_FULL" photometric interpretation, it is not supported by Orthanc |
1628 # gdcmconv -i /home/jodogne/DICOM/GdcmDatabase/US_DataSet/HDI5000_US/3EAF5E01 -w -o Issue19.dcm | 1632 # gdcmconv -i /home/jodogne/DICOM/GdcmDatabase/US_DataSet/HDI5000_US/3EAF5E01 -w -o Issue19.dcm |
1629 | 1633 |
1630 a = UploadInstance(_REMOTE, 'Issue19.dcm')['ID'] | 1634 a = UploadInstance(_REMOTE, 'Issue19.dcm')['ID'] |
1631 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/941ad3c8-05d05b88-560459f9-0eae0e20-6cddd533/preview')) | 1635 if not HasGdcmPlugin(): |
1636 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/941ad3c8-05d05b88-560459f9-0eae0e20-6cddd533/preview')) | |
1632 | 1637 |
1633 | 1638 |
1634 def test_googlecode_issue_37(self): | 1639 def test_googlecode_issue_37(self): |
1635 # Same test for issues 35 and 37. Fixed in Orthanc 0.9.1 | 1640 # Same test for issues 35 and 37. Fixed in Orthanc 0.9.1 |
1636 u = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')['ID'] | 1641 u = UploadInstance(_REMOTE, 'Beaufix/IM-0001-0001.dcm')['ID'] |
3069 Check('1.2.840.10008.1.2.4.70', '7132cfbc457305b04b59787030c785d2') | 3074 Check('1.2.840.10008.1.2.4.70', '7132cfbc457305b04b59787030c785d2') |
3070 Check('1.2.840.10008.1.2.4.80', '6ff51ae525d362e0d04f550a64075a0e') | 3075 Check('1.2.840.10008.1.2.4.80', '6ff51ae525d362e0d04f550a64075a0e') |
3071 Check('1.2.840.10008.1.2.4.81', '801579ae7cbf28e604ea74f2c99fa2ca') | 3076 Check('1.2.840.10008.1.2.4.81', '801579ae7cbf28e604ea74f2c99fa2ca') |
3072 Check('1.2.840.10008.1.2.5', '6ff51ae525d362e0d04f550a64075a0e') # RLE, supported since Orthanc 1.0.1 | 3077 Check('1.2.840.10008.1.2.5', '6ff51ae525d362e0d04f550a64075a0e') # RLE, supported since Orthanc 1.0.1 |
3073 Check('1.2.840.10008.1.2', 'd54aed9f67a100984b42942cc2e9939b') | 3078 Check('1.2.840.10008.1.2', 'd54aed9f67a100984b42942cc2e9939b') |
3074 Check('1.2.840.10008.1.2.4.90', None) # JPEG-2000 image, not supported | 3079 |
3075 Check('1.2.840.10008.1.2.4.91', None) # JPEG-2000 image, not supported | 3080 # JPEG2k image, not supported without GDCM plugin |
3081 if not HasGdcmPlugin(): | |
3082 Check('1.2.840.10008.1.2.4.90', None) | |
3083 Check('1.2.840.10008.1.2.4.91', None) | |
3076 | 3084 |
3077 | 3085 |
3078 def test_raw_frame(self): | 3086 def test_raw_frame(self): |
3079 s = UploadInstance(_REMOTE, 'Issue22.dcm')['ID'] | 3087 s = UploadInstance(_REMOTE, 'Issue22.dcm')['ID'] |
3080 self.assertEqual(24, len(DoGet(_REMOTE, '/instances/%s/frames' % s))) | 3088 self.assertEqual(24, len(DoGet(_REMOTE, '/instances/%s/frames' % s))) |
5511 def test_modify_transcode(self): | 5519 def test_modify_transcode(self): |
5512 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID'] | 5520 i = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm')['ID'] |
5513 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax( | 5521 self.assertEqual('1.2.840.10008.1.2.1', GetTransferSyntax( |
5514 DoGet(_REMOTE, '/instances/%s/file' % i))) | 5522 DoGet(_REMOTE, '/instances/%s/file' % i))) |
5515 | 5523 |
5516 for syntax in [ | 5524 a = ExtractDicomTags(DoGet(_REMOTE, '/instances/%s/file' % i), [ 'SOPInstanceUID' ]) [0] |
5517 '1.2.840.10008.1.2', | 5525 self.assertTrue(len(a) > 20) |
5518 '1.2.840.10008.1.2.1', | 5526 |
5519 #'1.2.840.10008.1.2.1.99', # Deflated Explicit VR Little Endian | 5527 SYNTAXES = [ |
5520 '1.2.840.10008.1.2.2', | 5528 '1.2.840.10008.1.2', |
5521 '1.2.840.10008.1.2.4.50', | 5529 '1.2.840.10008.1.2.1', |
5522 '1.2.840.10008.1.2.4.51', | 5530 '1.2.840.10008.1.2.1.99', # Deflated Explicit VR Little Endian |
5523 '1.2.840.10008.1.2.4.57', | 5531 '1.2.840.10008.1.2.2', |
5524 '1.2.840.10008.1.2.4.70', | 5532 '1.2.840.10008.1.2.4.50', |
5525 #'1.2.840.10008.1.2.4.80', # This makes DCMTK 3.6.2 crash | 5533 '1.2.840.10008.1.2.4.51', |
5526 #'1.2.840.10008.1.2.4.81', # This makes DCMTK 3.6.2 crash | 5534 '1.2.840.10008.1.2.4.57', |
5527 ]: | 5535 '1.2.840.10008.1.2.4.70', |
5536 ] | |
5537 | |
5538 if HasGdcmPlugin(): | |
5539 SYNTAXES = SYNTAXES + [ | |
5540 '1.2.840.10008.1.2.4.80', # This makes DCMTK 3.6.2 crash | |
5541 '1.2.840.10008.1.2.4.81', # This makes DCMTK 3.6.2 crash | |
5542 '1.2.840.10008.1.2.4.90', # JPEG2k, unavailable without GDCM | |
5543 '1.2.840.10008.1.2.4.91', # JPEG2k, unavailable without GDCM | |
5544 ] | |
5545 | |
5546 for syntax in SYNTAXES: | |
5528 transcoded = DoPost(_REMOTE, '/instances/%s/modify' % i, { | 5547 transcoded = DoPost(_REMOTE, '/instances/%s/modify' % i, { |
5529 'Transcode' : syntax, | 5548 'Transcode' : syntax, |
5549 'Keep' : [ 'SOPInstanceUID' ], | |
5550 'Force' : True, | |
5530 }) | 5551 }) |
5531 | 5552 |
5532 self.assertEqual(syntax, GetTransferSyntax(transcoded)) | 5553 self.assertEqual(syntax, GetTransferSyntax(transcoded)) |
5533 | 5554 |
5555 b = ExtractDicomTags(transcoded, [ 'SOPInstanceUID' ]) [0] | |
5556 self.assertTrue(len(b) > 20) | |
5557 if syntax in [ '1.2.840.10008.1.2.4.50', | |
5558 '1.2.840.10008.1.2.4.51', | |
5559 '1.2.840.10008.1.2.4.81', | |
5560 '1.2.840.10008.1.2.4.91' ]: | |
5561 # Lossy transcoding: The SOP instance UID must have changed | |
5562 self.assertNotEqual(a, b) | |
5563 else: | |
5564 self.assertEqual(a, b) | |
5534 | 5565 |
5535 def test_archive_transcode(self): | 5566 def test_archive_transcode(self): |
5536 info = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm') | 5567 info = UploadInstance(_REMOTE, 'KarstenHilbertRF.dcm') |
5537 | 5568 |
5538 # GET on "/media" | 5569 # GET on "/media" |