]> Creatis software - gdcm.git/blobdiff - gdcmPython/testSuite.py
* gdcmPython/testSuite.py : test the readable flag of file for tests
[gdcm.git] / gdcmPython / testSuite.py
index ff72e39e7dcb843f7f834cdf270ac81a65cada8b..32627872c50957107b197e3ca0a61217cd6989a9 100644 (file)
@@ -1,5 +1,6 @@
 import unittest
 import os
+from gdcmPython import *
 from vtkgdcmPython import *
 
 class gdcmTestCase(unittest.TestCase):
@@ -21,7 +22,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "FUJI PHOTO FILM CO. LTD."],
            ["Manufacturer's Model Name", "9000"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:776 Length:387200"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:776 Length:387200 x(5e880)"]
+                       ] ],
       ####################################
       # CT modality examples:
       ####################################
@@ -36,7 +38,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "1"],
            ["Manufacturer", "Picker International, Inc."],
            ["Manufacturer's Model Name", "PQ5000"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1680 Length:524288"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1680 Length:524288 x(80000)"]
+                         ] ],
       ["CT-MONO2-16-ort.dcm",
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2"],  # Implicit VR, LE
            ["Modality", "CT"],
@@ -48,7 +51,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "1"],
            ["Manufacturer", "GE MEDICAL SYSTEMS"],
            ["Manufacturer's Model Name", "HiSpeed CT/i"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1674 Length:524288"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1674 Length:524288 x(80000)"]
+                         ] ],
       ["CT-MONO2-16-ankle.dcm",
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2"],  # Implicit, little
            ["Modality", "CT"],
@@ -60,7 +64,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "1"],
            ["Manufacturer", "GE MEDICAL SYSTEMS"],
            ["Manufacturer's Model Name", "GENESIS_ZEUS"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1148 Length:524288"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1148 Length:524288 x(80000)"]
+                         ] ],
       ["CT-MONO2-8-abdo.dcm",
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2"],  # Implicit, little
            ["Modality", "CT"],
@@ -71,7 +76,8 @@ class gdcmTestCase(unittest.TestCase):
            ["High Bit", "7"],
            ["Pixel Representation", "0"],
            ["Manufacturer", "FUJI"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:796 Length:262144"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:796 Length:262144 x(40000)"]
+                         ] ],
       ["CT-MONO2-12-lomb-an2.acr2",
          [ ["Modality", "CT"],
            #"Transfer Syntax UID" and "Photometric Interpretation" are absent.
@@ -82,7 +88,8 @@ class gdcmTestCase(unittest.TestCase):
            ["High Bit", "11"],
            ["Pixel Representation", "0"],
            ["Manufacturer", "SIEMENS"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1230 Length:524288"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1230 Length:524288 x(80000)"]
+                         ] ],
       ["CT-MONO2-16-chest.dcm",
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2.4.70"], # jpeg...
            ["Modality", "CT"],
@@ -94,7 +101,8 @@ class gdcmTestCase(unittest.TestCase):
            ["High Bit", "15"],
            ["Pixel Representation", "1"],
            ["Manufacturer", "GE MEDICAL SYSTEMS"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1638 Length:143498"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1638 Length:143498 x(2308a)"]
+                         ] ],
       ####################################
       ### MR modality examples:
       ####################################
@@ -110,7 +118,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "Philips"],
            # Note: 256*256*12/8 = 98304
-           ["Pixel Data", "gdcm::NotLoaded. Address:650 Length:98304"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:650 Length:98304 x(18000)"]
+                         ] ],
       ["MR-MONO2-12-an2.acr2",
          [ ["Modality", "MR"],
            ["Photometric Interpretation", "MONOCHROME2"],
@@ -122,7 +131,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "SIEMENS"],
            ["Manufacturer's Model Name", "MAGNETOM VISION"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1866 Length:131072"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1866 Length:131072 x(20000)"]
+                         ] ],
       ["MR-MONO2-16-head.dcm",
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2"], # Imp VR, LE
            ["Modality", "MR"],
@@ -135,7 +145,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "1"],
            ["Manufacturer", "GE MEDICAL SYSTEMS"],
            ["Manufacturer's Model Name", "GENESIS_SIGNA"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1804 Length:131072"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1804 Length:131072 x(20000)"]
+                         ] ],
       # MR-MONO2-12-shoulder example is present in the Jpeg section.
       # MR-MONO2-16-knee is not present in the test suite since it is too
       #    closely related to MR-MONO2-16-head.dcm to be of interest.
@@ -155,7 +166,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Bits Allocated", "8"],
            ["High Bit", "7"],
            ["Pixel Representation", "0"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1654 Length:307200"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1654 Length:307200 x(4b000)"]
+                         ] ],
       # OT-MONO2-8-colon is not present in the test suite since it is too
       #    closely related to OT-MONO2-8-a7 to be of interest.
       ["OT-MONO2-8-a7.dcm",
@@ -169,7 +181,8 @@ class gdcmTestCase(unittest.TestCase):
            ["High Bit", "7"],
            ["Pixel Representation", "0"],
            ["Manufacturer", "Philips Medical Systems"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:438 Length:262144"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:438 Length:262144 x(40000)"]
+                         ] ],
       ####################################
       # US (Ultra Sound) modality examples:
       ####################################
@@ -190,7 +203,8 @@ class gdcmTestCase(unittest.TestCase):
          # You said it, puffy (tu l'as dit, bouffi, in french language)
          # RGB is 3 bytes per pixel
          # + Planar configuration (0028,0006) = 0 --> Pixels RGB       
-           ["Pixel Data", "gdcm::NotLoaded. Address:904 Length:92160"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:904 Length:92160 x(16800)"]
+                         ] ],
       ["US-RGB-8-epicard.dcm",
          # Interest: Big endian transfert syntax
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2.2"],  # Big endian
@@ -207,7 +221,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Manufacturer's Model Name", "LOGIQ 700"],
          # + Planar configuration (0028,0006) = 1 --> Plane R, Plane G, Plane B  
            ["Implementation Version Name", "OFFIS-DCMTK-311"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1012 Length:921600"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1012 Length:921600 x(e1000)"]
+                         ] ],
    ]
 
    MultiFrameFiles = [
@@ -226,7 +241,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "Philips"],
            # Note: 256*256*16=1048576 (16 is the number of Frames) 
-           ["Pixel Data", "gdcm::NotLoaded. Address:920 Length:1048576"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:920 Length:1048576 x(100000)"]
+                         ] ],
       ["NM-MONO2-16-13x-heart.dcm",
          # Interest: NM modality, multi-frame
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2.1"], # ExpVR, LE
@@ -241,7 +257,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "ACME Products"],
            # Note: 64*64*13*2=106496
-           ["Pixel Data", "gdcm::NotLoaded. Address:1234 Length:106496"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1234 Length:106496 x(1a000)"]
+                         ] ],
       ["US-MONO2-8-8x-execho.dcm",
          # Interest: multi-frame
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2.1"], # ExpVR, LE
@@ -255,7 +272,8 @@ class gdcmTestCase(unittest.TestCase):
            ["High Bit", "7"],
            ["Pixel Representation", "0"],
            ["Manufacturer", "Acme Products"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:976 Length:122880"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:976 Length:122880 x(1e000)"]
+                         ] ],
       ["US-PAL-8-10x-echo.dcm",
          # Interest: RLE (Run Length Encoded) compression, multiframe
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2.5"], # RLE
@@ -269,10 +287,11 @@ class gdcmTestCase(unittest.TestCase):
            ["High Bit", "7"],
            ["Pixel Representation", "0"],
            ["Manufacturer", "ACME Products"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:2428 Length:481182"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:2428 Length:481182 x(7579e)"]
+                         ] ],
       ["XA-MONO2-8-12x-catheter.dcm",
          # Interest: XA modality, multi-frame
-         [ ["Transfer Syntax UID", "1.2.840.10008.1.2.4.70"], # jpeg
+         [ #["Transfer Syntax UID", "1.2.840.10008.1.2.4.70"], # jpeg
            ["Number of Frames", "12"],  # 12 images
            ["Modality", "XA"],
            ["Photometric Interpretation", "MONOCHROME2"],
@@ -283,7 +302,8 @@ class gdcmTestCase(unittest.TestCase):
            ["High Bit", "7"],
            ["Pixel Representation", "0"],
            ["Manufacturer", "Acme Products"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1006 Length:920072"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1006 Length:920072 x(e0a08)"]
+                         ] ],
    ]
 
    GdcmFiles = [
@@ -301,7 +321,7 @@ class gdcmTestCase(unittest.TestCase):
            ["Manufacturer's Model Name", "GBS III"],
          # FIXME: this image looks padded at the end. The length of the file
          # is 140288. Notice that, 256*256*2 + 1024 = 131072 + 1024 = 132096
-           ["Pixel Data", "gdcm::NotLoaded. Address:8192 Length:132096"],
+           ["Pixel Data", "gdcm::NotLoaded. Address:8192 Length:132096 x(20400)"],
            # Oddities: "Study ID" and "Series Number" are empty
            ["Study ID", ""],
            ["Series Number", ""] ] ],
@@ -324,7 +344,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Series Instance UID",
             "1.3.12.2.1107.5.2.4.7630.20000918175714000007"],
            ["Series Number", "7"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:6052 Length:524288"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:6052 Length:524288 x(80000)"]
+                         ] ],
       ["gdcm-US-ALOKA-16.dcm",
          # Interest: - possesses 3 LUTS: a Green (checked), a Red and BLue.
          #           - announced as implicit VR, but really explicit VR.
@@ -332,7 +353,7 @@ class gdcmTestCase(unittest.TestCase):
            ["Modality", "US"],
            ["Photometric Interpretation", "PALETTE COLOR"],
            ["Segmented Green Palette Color Lookup Table Data",
-            "gdcm::NotLoaded. Address:89576 Length:113784"],
+            "gdcm::NotLoaded. Address:89576 Length:113784 x(1bc78)"],
            ["Rows", "480"],
            ["Columns", "640"],
            ["Bits Stored", "16"],
@@ -341,7 +362,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "ALOKA CO., LTD."],
            ["Manufacturer's Model Name", "SSD-4000"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:258740 Length:614400"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:258740 Length:614400 x(96000)"]
+                         ] ],
       ["gdcm-MR-PHILIPS-16.dcm",
          # Interest: - possesses a sequence
          #           - dicom file, with a recognition code of ACR-NEMA1
@@ -358,7 +380,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Manufacturer", "Philips Medical Systems"],
            ["Manufacturer's Model Name", "Gyroscan Intera"],
            ["Sequence Variant", "OTHER"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:6584 Length:131072"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:6584 Length:131072 x(20000)"]
+                         ] ],
       ["gdcm-MR-PHILIPS-16-Multi-Seq.dcm",
          # Interest: - possesses many sequences in group 0x0029
          #           - Big sequence 28808 bytes at (0x0029, 0x263d)
@@ -376,7 +399,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Manufacturer", "Philips Medical Systems"],
            ["Manufacturer's Model Name", "Gyroscan Intera"],
            ["Sequence Variant", "OTHER"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:35846 Length:32768"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:35846 Length:32768 x(8000)"]
+                         ] ],
       ["gdcm-MR-PHILIPS-16-NonRectPix.dcm",
          # Interest: - pixels are non rectangular
          #           - private elements are in explicit VR (which is normal)
@@ -392,7 +416,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Manufacturer", "Philips Medical Systems"],
            ["Manufacturer's Model Name", "Gyroscan Intera"],
            ["Pixel Spacing", "0.487416\\0.194966"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:5010 Length:20480"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:5010 Length:20480 x(5000)"]
+                         ] ],
       ["gdcm-CR-DCMTK-16-NonSamplePerPix.dcm",
          # Interest: - Misses the "Samples Per Pixel" element which prevents
          #             e-film from reading it.
@@ -407,7 +432,8 @@ class gdcmTestCase(unittest.TestCase):
            ["High Bit", "7"],
            ["Pixel Representation", "0"],
            ["Implementation Version Name", "OFFIS_DCMTK_341"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:740 Length:562500"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:740 Length:562500 x(89544)"]
+                         ] ],
    ]
 
    GdcmJpegFiles = [
@@ -424,7 +450,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "SIEMENS"],
            ["Manufacturer's Model Name", "Volume Zoom"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:2946 Length:192218"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:2946 Length:192218 x(2eeda)"]
+                         ] ],
       ["MR-MONO2-12-shoulder.dcm",
          # Interest: Jpeg compression [Lossless, non-hierar. (14)]
          [ ["Transfer Syntax UID", "1.2.840.10008.1.2.4.57"],
@@ -438,7 +465,8 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "Philips Medical Systems"],
            ["Manufacturer's Model Name", "Gyroscan NT"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:1580 Length:718948"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:1580 Length:718948 x(af864)"]
+                         ] ],
       ["gdcm-JPEG-LossLess3a.dcm",
          # Interest: - Jpeg compression [Lossless, hierar., first-order
          #             pred. 14, Select. Val. 1]
@@ -477,7 +505,7 @@ class gdcmTestCase(unittest.TestCase):
          #   0215424   ¶ 016 P   Ñ 002 016
          # and (\f °, ¶ 016) is NOT an OB item TAG which is required to be
          # present (at least there should be a sequence delimiter), refer to
-         # PS 3.5-2001 page 50. 
+         # PS 3.5-2001 page 50.
         #
         # That's right :
         # at 9ec : ItemTag : fffe,e000
@@ -486,7 +514,7 @@ class gdcmTestCase(unittest.TestCase):
          #         at 9f8 : fragment length 212866 x(00033f82)
          # at 3497e : ItemTag  b00c,0eb6 (should be fffe,e000 or fffe,e0dd):
  
-      ["gdcm-JPEG-LossLess3b.dcm",
+      ["gdcm-JPEG-LossLessThoravision.dcm",
          # Interest: - Jpeg compression [Lossless, hierar., first-order
          #             pred. 14, Select. Val. 1]
          #           - encoding is sligthly different from LossLess3a.dcm ???
@@ -501,20 +529,24 @@ class gdcmTestCase(unittest.TestCase):
            ["Pixel Representation", "0"],
            ["Manufacturer", "Philips Medical Systems"],
            ["Manufacturer's Model Name", "Cassette Holder Type 9840 500 35201"],
-           ["Pixel Data", "gdcm::NotLoaded. Address:3144 Length:4795668"] ] ],
+           ["Pixel Data", "gdcm::NotLoaded. Address:3144 Length:4795668 x(492d14)"]
+                         ] ],
    ]
 
    def _BaseTest(self, FileSet):
       for entry in FileSet:
          fileName = os.path.join(GDCM_TEST_DATA_PATH, entry[0])
-         toRead = gdcmHeader(fileName)
-         valDict = toRead.GetPubElVal()
+         reader = gdcmHeader(fileName)
+         assert reader.IsReadable(),\
+                "File '%s' is not readable by gdcmHeader" % fileName
+
+         valDict = reader.GetPubElVal()
          for subEntry in entry[1]:
             element = subEntry[0]
             value   = subEntry[1]
-            self.assertEqual(valDict[element], value, 
+            self.assertEqual(valDict[element], value,
                              ("Wrong %s for file %s (got %s, shoud be %s)"
-                               % (element,fileName, valDict[element], value)) )
+                             % (element,fileName, valDict[element], value)) )
 
    def testBarre(self):
       gdcmTestCase._BaseTest(self, gdcmTestCase.BarreFiles)
@@ -536,19 +568,31 @@ class gdcmTestCase(unittest.TestCase):
       Source.GetImageData()
       TargetFileName = "junk"
       Target = Source.WriteDcmImplVR(TargetFileName)
-      Sign = 'c3d27238647b7eaa773bff6ea0692b54'
+      # Sign = 'c3d27238647b7eaa773bff6ea0692b54' # old signature in the file
+      Sign = 'a1e2abdc2f6abedd86b93c8b88db5203' # new signature (found on Win)
       ComputeSign = md5.new(open(TargetFileName).read()).hexdigest()
       self.assertEqual(ComputeSign, Sign,
           ("Wrong signature for file %s (got %s, shoud be %s)"
            % (SourceFileName, ComputeSign, Sign)) )
       os.unlink(TargetFileName)
-
+      
 if __name__ == '__main__':
    if not GDCM_TEST_DATA_PATH:
-      print "GDCM_TEST_DATA_PATH is not setup properly. This test suite"
-      print "   requires that some Dicom reference files be installed."
+      print "GDCM_TEST_DATA_PATH (internal variable) is not setup properly."
+      print "   This test suite requires that some Dicom reference files be "
+      print "   installed."
       print "   For further details on installation of gdcmData, please"
       print "   refer to the developper's section of page "
       print "       http://www.creatis.insa-lyon.fr/Public/Gdcm"
-   unittest.main()
+      print ""
+      print "gdcmData directory (used in the test suite) must be placed in"
+      print "the gdcm directory. The gdcm tree must be :"
+      print "   gdcm"
+      print "    |____Dicts"
+      print "    |____Doc"
+      print "    |____gdcmData      (not in gdcm by default)"
+      print "    |____gdcmPython"
+      print "    |____Test"
+   else:
+      unittest.main()