comparison Tests/Tests.py @ 51:264a20a0276d

test_modify_sequence
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 09 Oct 2015 13:31:37 +0200
parents 8de63d56cf11
children 7c08e542db23
comparison
equal deleted inserted replaced
50:8de63d56cf11 51:264a20a0276d
74 if abs(d) >= 0.51: # Add some tolerance for rounding errors 74 if abs(d) >= 0.51: # Add some tolerance for rounding errors
75 return False 75 return False
76 76
77 return True 77 return True
78 78
79
80
81 def GenerateTestSequence():
82 return [
83 {
84 'StudyDescription': 'Hello^',
85 'ReferencedStudySequence' : [
86 {
87 'StudyDescription': 'Toto',
88 },
89 {
90 'StudyDescription': 'Tata',
91 },
92 ]
93 },
94 {
95 'StudyDescription': 'Sébastien^',
96 'StudyDate' : '19700202',
97 }
98 ]
79 99
80 100
81 101
82 102
83 class Orthanc(unittest.TestCase): 103 class Orthanc(unittest.TestCase):
2313 i = DoPost(_REMOTE, '/tools/create-dicom', 2333 i = DoPost(_REMOTE, '/tools/create-dicom',
2314 json.dumps({ 2334 json.dumps({
2315 'Tags' : { 2335 'Tags' : {
2316 'SpecificCharacterSet': 'ISO_IR 100', # Encode using Latin1 2336 'SpecificCharacterSet': 'ISO_IR 100', # Encode using Latin1
2317 'PatientName': 'Jodogne^', 2337 'PatientName': 'Jodogne^',
2318 'ReferencedStudySequence': [ 2338 'ReferencedStudySequence': GenerateTestSequence(),
2319 {
2320 'StudyDescription': 'Hello^',
2321 'ReferencedStudySequence' : [
2322 {
2323 'StudyDescription': 'Toto',
2324 },
2325 {
2326 'StudyDescription': 'Tata',
2327 },
2328 ]
2329 },
2330 {
2331 'StudyDescription': 'Sébastien^',
2332 'StudyDate' : '19700202',
2333 }
2334 ]
2335 } 2339 }
2336 }))['ID'] 2340 }))['ID']
2337 2341
2338 self.assertEqual('Jodogne^', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i)) 2342 self.assertEqual('Jodogne^', DoGet(_REMOTE, '/instances/%s/content/PatientName' % i))
2339 self.assertEqual('Hello^', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/StudyDescription' % i)) 2343 self.assertEqual('Hello^', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/StudyDescription' % i))
2340 self.assertEqual('Toto', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/ReferencedStudySequence/0/StudyDescription' % i)) 2344 self.assertEqual('Toto', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/ReferencedStudySequence/0/StudyDescription' % i))
2341 self.assertEqual('Tata', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/ReferencedStudySequence/1/StudyDescription' % i)) 2345 self.assertEqual('Tata', DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/0/ReferencedStudySequence/1/StudyDescription' % i))
2342 self.assertEqual(u'Sébastien^'.encode('latin-1'), 2346 self.assertEqual(u'Sébastien^'.encode('latin-1'),
2343 DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/1/StudyDescription' % i)) 2347 DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence/1/StudyDescription' % i))
2348
2349
2350 def test_modify_sequence(self):
2351 i = UploadInstance(_REMOTE, 'PrivateTags.dcm')['ID']
2352 self.assertRaises(Exception, lambda: DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence' % i))
2353
2354 j = DoPost(_REMOTE, '/instances/%s/modify' % i,
2355 json.dumps({
2356 "Replace" : {
2357 "PatientName" : "hello",
2358 'ReferencedStudySequence': GenerateTestSequence(),
2359 },
2360 }),
2361 'application/json')
2362 j = DoPost(_REMOTE, '/instances', j, 'application/dicom')['ID']
2363 DoDelete(_REMOTE, '/instances/%s' % i)
2364
2365 self.assertEqual(2, len( DoGet(_REMOTE, '/instances/%s/content/ReferencedStudySequence' % j)))