comparison Plugins/WSI/Run.py @ 569:201e69006cff

WSI: added test_iiif
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 13 Jul 2023 13:33:19 +0200
parents 6399d3a1cd30
children 9d41b7f18be8
comparison
equal deleted inserted replaced
568:6399d3a1cd30 569:201e69006cff
434 434
435 TestTransferSyntax(s, '1.2.840.10008.1.2.4.90') 435 TestTransferSyntax(s, '1.2.840.10008.1.2.4.90')
436 TestDefaultAccept(s, 'PNG') 436 TestDefaultAccept(s, 'PNG')
437 TestForceAccept(s) 437 TestForceAccept(s)
438 438
439 def test_iiif(self):
440 CallDicomizer([ GetDatabasePath('LenaGrayscale.png'), # Image is 512x512
441 '--levels=3', '--tile-width=128', '--tile-height=128' ])
442
443 self.assertEqual(3, len(DoGet(ORTHANC, '/instances')))
444
445 s = DoGet(ORTHANC, '/series')
446 self.assertEqual(1, len(s))
447
448 uri = '/wsi/iiif/tiles/%s' % s[0]
449 info = DoGet(ORTHANC, '%s/info.json' % uri)
450 self.assertEqual('http://iiif.io/api/image/3/context.json', info['@context'])
451 self.assertEqual('http://iiif.io/api/image', info['protocol'])
452 self.assertEqual('http://localhost:8042%s' % uri, info['id'])
453 self.assertEqual('level0', info['profile'])
454 self.assertEqual('ImageService3', info['type'])
455 self.assertEqual(512, info['width'])
456 self.assertEqual(512, info['height'])
457
458 self.assertEqual(3, len(info['sizes']))
459 self.assertEqual(512, info['sizes'][0]['width'])
460 self.assertEqual(512, info['sizes'][0]['height'])
461 self.assertEqual(256, info['sizes'][1]['width'])
462 self.assertEqual(256, info['sizes'][1]['height'])
463 self.assertEqual(128, info['sizes'][2]['width'])
464 self.assertEqual(128, info['sizes'][2]['height'])
465
466 self.assertEqual(1, len(info['tiles']))
467 self.assertEqual(128, info['tiles'][0]['width'])
468 self.assertEqual(128, info['tiles'][0]['height'])
469 self.assertEqual([ 1, 2, 4 ], info['tiles'][0]['scaleFactors'])
470
471 # The list of URIs below was generated by "orthanc-wsi/Resources/TestIIIFTiles.py"
472
473 # Level 0
474 GetImage(ORTHANC, '/%s/0,0,128,128/128,128/0/default.jpg' % uri)
475 GetImage(ORTHANC, '/%s/128,0,128,128/128,128/0/default.jpg' % uri)
476 GetImage(ORTHANC, '/%s/256,0,128,128/128,128/0/default.jpg' % uri)
477 GetImage(ORTHANC, '/%s/384,0,128,128/128,128/0/default.jpg' % uri)
478 GetImage(ORTHANC, '/%s/0,128,128,128/128,128/0/default.jpg' % uri)
479 GetImage(ORTHANC, '/%s/128,128,128,128/128,128/0/default.jpg' % uri)
480 GetImage(ORTHANC, '/%s/256,128,128,128/128,128/0/default.jpg' % uri)
481 GetImage(ORTHANC, '/%s/384,128,128,128/128,128/0/default.jpg' % uri)
482 GetImage(ORTHANC, '/%s/0,256,128,128/128,128/0/default.jpg' % uri)
483 GetImage(ORTHANC, '/%s/128,256,128,128/128,128/0/default.jpg' % uri)
484 GetImage(ORTHANC, '/%s/256,256,128,128/128,128/0/default.jpg' % uri)
485 GetImage(ORTHANC, '/%s/384,256,128,128/128,128/0/default.jpg' % uri)
486 GetImage(ORTHANC, '/%s/0,384,128,128/128,128/0/default.jpg' % uri)
487 GetImage(ORTHANC, '/%s/128,384,128,128/128,128/0/default.jpg' % uri)
488 GetImage(ORTHANC, '/%s/256,384,128,128/128,128/0/default.jpg' % uri)
489 GetImage(ORTHANC, '/%s/384,384,128,128/128,128/0/default.jpg' % uri)
490
491 # Level 1
492 GetImage(ORTHANC, '/%s/0,0,256,256/128,128/0/default.jpg' % uri)
493 GetImage(ORTHANC, '/%s/256,0,256,256/128,128/0/default.jpg' % uri)
494 GetImage(ORTHANC, '/%s/0,256,256,256/128,128/0/default.jpg' % uri)
495 GetImage(ORTHANC, '/%s/256,256,256,256/128,128/0/default.jpg' % uri)
496
497 # Level 2
498 i = GetImage(ORTHANC, '/%s/0,0,512,512/128,128/0/default.jpg' % uri)
499 self.assertEqual(128, i.width)
500 self.assertEqual(128, i.height)
501
502 uri2 = '/wsi/iiif/series/%s/manifest.json' % s[0]
503 manifest = DoGet(ORTHANC, uri2)
504 self.assertEqual('http://iiif.io/api/presentation/3/context.json', manifest['@context'])
505 self.assertEqual('http://localhost:8042%s' % uri2, manifest['id'])
506
507 self.assertEqual(1, len(manifest['items']))
508 self.assertEqual(1, len(manifest['items'][0]['items']))
509 self.assertEqual(1, len(manifest['items'][0]['items'][0]['items']))
510
511 self.assertEqual('Manifest', manifest['type'])
512 self.assertEqual('Canvas', manifest['items'][0]['type'])
513 self.assertEqual('AnnotationPage', manifest['items'][0]['items'][0]['type'])
514 self.assertEqual('Annotation', manifest['items'][0]['items'][0]['items'][0]['type'])
515
516 self.assertEqual(512, manifest['items'][0]['width'])
517 self.assertEqual(512, manifest['items'][0]['height'])
518
519 body = manifest['items'][0]['items'][0]['items'][0]['body']
520 self.assertEqual(1, len(body['service']))
521 self.assertEqual('image/jpeg', body['format'])
522 self.assertEqual('Image', body['type'])
523 self.assertEqual(512, body['width'])
524 self.assertEqual(512, body['height'])
525 self.assertEqual('level0', body['service'][0]['profile'])
526 self.assertEqual('ImageService3', body['service'][0]['type'])
527 self.assertEqual('http://localhost:8042%s' % uri, body['service'][0]['id'])
528
529
439 try: 530 try:
440 print('\nStarting the tests...') 531 print('\nStarting the tests...')
441 unittest.main(argv = [ sys.argv[0] ] + args.options) 532 unittest.main(argv = [ sys.argv[0] ] + args.options)
442 533
443 finally: 534 finally: