# HG changeset patch # User Sebastien Jodogne # Date 1481279117 -3600 # Node ID 09afe3616660b41cd802855cd2093bd3de5d9e45 # Parent fff2b4a24b5f608e572adec63d8708e1f668dccf Orthanc.test_encodings for worklists diff -r fff2b4a24b5f -r 09afe3616660 Plugins/Worklists/Run.py --- a/Plugins/Worklists/Run.py Thu Dec 08 19:58:28 2016 +0100 +++ b/Plugins/Worklists/Run.py Fri Dec 09 11:25:17 2016 +0100 @@ -1,4 +1,6 @@ #!/usr/bin/python +# -*- coding: utf-8 -*- + # Orthanc - A Lightweight, RESTful DICOM Store # Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics @@ -40,6 +42,16 @@ parser.add_argument('--server', default = 'localhost', help = 'Address of the Orthanc server to test') +parser.add_argument('--rest', + type = int, + default = 8042, + help = 'Port to the REST API') +parser.add_argument('--username', + default = 'alice', + help = 'Username to the REST API') +parser.add_argument('--password', + default = 'orthanctest', + help = 'Password to the REST API') parser.add_argument('--dicom', type = int, default = 4242, @@ -51,6 +63,13 @@ +ORTHANC = DefineOrthanc(server = args.server, + username = args.username, + password = args.password, + restPort = args.rest) + + + ## ## Toolbox ## @@ -124,6 +143,15 @@ return False +def ParseTopLevelTags(answer): + tags = {} + for line in answer: + m = re.match(r'^\(([0-9a-f]{4},[0-9a-f]{4})\)\s*..\s*\[([^]]*)\]', line) + tags[m.group(1)] = m.group(2).strip() + + return tags + + ## ## The tests ## @@ -185,6 +213,45 @@ self.assertEqual(2, len(RunQuery('Sequences/Queries/orig.7814.dump', []))) + def test_encodings(self): + # Check out ../../Database/Worklists/Encodings/database.dump + TEST = u'Test-éüäöòДΘĝדصķћ๛ネİ' + ENCODINGS = { + 'Arabic' : [ 'ISO_IR 127' ], + 'Ascii' : [ 'ISO_IR 6' ], # More accurately, ISO 646 + 'Cyrillic' : [ 'ISO_IR 144' ], + 'Greek' : [ 'ISO_IR 126' ], + 'Hebrew' : [ 'ISO_IR 138' ], + 'Japanese' : [ 'ISO_IR 13', 'shift-jis' ], + 'Latin1' : [ 'ISO_IR 100' ], + 'Latin2' : [ 'ISO_IR 101' ], + 'Latin3' : [ 'ISO_IR 109' ], + 'Latin4' : [ 'ISO_IR 110' ], + 'Latin5' : [ 'ISO_IR 148' ], + 'Thai' : [ 'ISO_IR 166', 'tis-620' ], + 'Utf8' : [ 'ISO_IR 192' ], + } + + AddToDatabase('Encodings/database.dump') + + for name, encoding in ENCODINGS.iteritems(): + self.assertEqual(name, DoPut(ORTHANC, '/tools/default-encoding', name)) + result = RunQuery('Encodings/query.dump', []) + + self.assertEqual(1, len(result)) + self.assertEqual(2, len(result[0])) + tags = ParseTopLevelTags(result[0]) + + if len(encoding) == 1: + encoded = TEST.encode(name, 'ignore') + else: + encoded = TEST.encode(encoding[1], 'ignore') + + self.assertEqual(encoding[0], tags['0008,0005']) + self.assertEqual(encoded, tags['0010,0010']) + + + try: print('\nStarting the tests...')