changeset 932:d7cc1ed1ad65

new tests to decode LUT multiframes
author Alain Mazy <am@orthanc.team>
date Wed, 17 Jun 2026 16:05:17 +0200
parents 1e29700a920f
children 54eb9d9f6e1f
files Database/US-multiframe-RGB48-RAW.dcm Database/US-multiframe-RGB48-RLE.dcm Tests/Tests.py
diffstat 3 files changed, 57 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
Binary file Database/US-multiframe-RGB48-RAW.dcm has changed
Binary file Database/US-multiframe-RGB48-RLE.dcm has changed
--- a/Tests/Tests.py	Tue Jun 16 11:31:07 2026 +0200
+++ b/Tests/Tests.py	Wed Jun 17 16:05:17 2026 +0200
@@ -12836,3 +12836,60 @@
                 }
 
             self.assertRaises(Exception, lambda: DoPost(_REMOTE, '/tools/create-dicom', json.dumps(payload)))
+
+
+    def test_multiframe_rgb48_raw(self):
+        if IsOrthancVersionAbove(_REMOTE, 1, 12, 12):
+            i = UploadInstance(_REMOTE, 'US-multiframe-RGB48-RAW.dcm')['ID']
+
+            # note: the execution paths are different when we are using GDCM or not (at least in 1.12.11), even if the TS is RAW !!!
+            #       so it is important to test with AND without GDCM (this is done in the orthanc-builder nightly tests)
+
+            im = GetImage(_REMOTE, '/instances/%s/preview' % i)
+            self.assertEqual("RGB", im.mode)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])
+
+            im = GetImage(_REMOTE, '/instances/%s/frames/2/preview' % i)
+            self.assertEqual("RGB", im.mode)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])
+
+            im = GetImage(_REMOTE, '/instances/%s/frames/2/image-uint16' % i)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])
+
+            im = GetImage(_REMOTE, '/instances/%s/frames/2/image-uint8' % i)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])
+
+            im = GetImage(_REMOTE, '/instances/%s/frames/2/rendered' % i)
+            self.assertEqual("RGB", im.mode)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])
+
+
+    def test_multiframe_rgb48_rle(self):
+        if IsOrthancVersionAbove(_REMOTE, 1, 12, 12):
+            i = UploadInstance(_REMOTE, 'US-multiframe-RGB48-RLE.dcm')['ID']
+
+            # note: the execution paths are different when we are using GDCM or not (at least in 1.12.11), even if the TS is RAW !!!
+            #       so it is important to test with AND without GDCM (this is done in the orthanc-builder nightly tests)
+
+            im = GetImage(_REMOTE, '/instances/%s/preview' % i)
+            self.assertEqual("RGB", im.mode)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])
+
+            im = GetImage(_REMOTE, '/instances/%s/frames/2/preview' % i)
+            self.assertEqual("RGB", im.mode)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])
+
+            im = GetImage(_REMOTE, '/instances/%s/frames/2/image-uint16' % i)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])
+
+            im = GetImage(_REMOTE, '/instances/%s/frames/2/image-uint8' % i)
+            self.assertEqual(800, im.size[0])
+            self.assertEqual(600, im.size[1])