def test_save(self): image = VImage.new_rgba(width=1, height=1, ink=rgba(r=0, g=0, b=0, a=0)) self.storage.save(x=0, y=1, z=2, image=image) self.storage.save(x=1, y=0, z=2, image=image) self.storage.save(x=1, y=0, z=3, image=image) self.storage.waitall() self.assertEqual(set(recursive_listdir(self.outputdir)), set(['2/', '2/0/', '2/0/1.png', '2/1/', '2/1/0.png', '3/', '3/1/', '3/1/0.png'])) # Is this a real file? self.assertFalse( os.path.islink(os.path.join(self.outputdir, '2', '0', '1.png')) ) # Does the symlinking work? self.assertEqual( os.readlink(os.path.join(self.outputdir, '2', '1', '0.png')), os.path.join(os.path.pardir, '0', '1.png') ) self.assertEqual( os.readlink(os.path.join(self.outputdir, '3', '1', '0.png')), os.path.join(os.path.pardir, os.path.pardir, '2', '0', '1.png') )
def test_simple(self): with NamedTemporaryDir() as outputdir: # Native resolution only image_pyramid(inputfile=self.inputfile, outputdir=outputdir, renderer=TouchRenderer(suffix='.png')) self.assertEqual( set(recursive_listdir(outputdir)), set(( '2/', '2/0/', '2/0/0.png', '2/0/1.png', '2/0/2.png', '2/0/3.png', '2/1/', '2/1/0.png', '2/1/1.png', '2/1/2.png', '2/1/3.png', '2/2/', '2/2/0.png', '2/2/1.png', '2/2/2.png', '2/2/3.png', '2/3/', '2/3/0.png', '2/3/1.png', '2/3/2.png', '2/3/3.png', )))
def test_simple(self): with NamedTemporaryDir() as outputdir: # Native resolution only image_pyramid(inputfile=self.inputfile, outputdir=outputdir, renderer=TouchRenderer(suffix='.png')) self.assertEqual( set(recursive_listdir(outputdir)), set(( '2/', '2/0/', '2/0/0.png', '2/0/1.png', '2/0/2.png', '2/0/3.png', '2/1/', '2/1/0.png', '2/1/1.png', '2/1/2.png', '2/1/3.png', '2/2/', '2/2/0.png', '2/2/1.png', '2/2/2.png', '2/2/3.png', '2/3/', '2/3/0.png', '2/3/1.png', '2/3/2.png', '2/3/3.png', )) )
def test_save_border(self): # Western hemisphere is border self.storage.save_border(x=0, y=0, z=1) self.storage.save_border(x=0, y=1, z=1) self.storage.save_border(x=0, y=1, z=2) self.assertEqual( set(recursive_listdir(self.outputdir)), set([ '1/', '1/0/', '1/0/0.png', '1/0/1.png', '2/', '2/0/', '2/0/1.png', ])) # Is this a real file? self.assertFalse( os.path.islink(os.path.join(self.outputdir, '1/0/0.png'))) # Does the symlinking work? self.assertEqual( os.readlink(os.path.join(self.outputdir, '1/0/1.png')), '0.png') self.assertEqual( os.readlink(os.path.join(self.outputdir, '2/0/1.png')), os.path.join(os.path.pardir, os.path.pardir, '1', '0', '0.png'))
def test_makedirs(self): # Cache should be empty self.assertFalse(self.storage.madedirs) self.storage.makedirs(x=0, y=1, z=2) self.assertEqual(set(recursive_listdir(self.outputdir)), set(['2/', '2/0/'])) # Is cache populated? self.assertTrue(self.storage.madedirs[2][0]) # Delete and readd without clearing cache rmtree(os.path.join(self.outputdir, '2')) self.assertEqual(os.listdir(self.outputdir), []) self.storage.makedirs(x=0, y=1, z=2) self.assertEqual(os.listdir(self.outputdir), [])
def test_downsample_aligned(self): with NamedTemporaryDir() as outputdir: image_pyramid(inputfile=self.alignedfile, outputdir=outputdir, min_resolution=0, renderer=TouchRenderer(suffix='.png')) files = set(recursive_listdir(outputdir)) self.assertEqual( files, set(( '0/', '0/0/', '0/0/0.png', '1/', '1/0/', '1/1/', '1/0/0.png', '2/', '2/0/', '2/1/', '2/2/', '2/3/', '2/1/1.png', # The following are the borders '1/0/1.png', '1/1/0.png', '1/1/1.png', '2/0/0.png', '2/0/1.png', '2/0/2.png', '2/0/3.png', '2/1/0.png', '2/1/2.png', '2/1/3.png', '2/2/0.png', '2/2/1.png', '2/2/2.png', '2/2/3.png', '2/3/0.png', '2/3/1.png', '2/3/2.png', '2/3/3.png', )))
def test_downsample_aligned(self): with NamedTemporaryDir() as outputdir: image_pyramid(inputfile=self.alignedfile, outputdir=outputdir, min_resolution=0, renderer=TouchRenderer(suffix='.png')) files = set(recursive_listdir(outputdir)) self.assertEqual( files, set(( '0/', '0/0/', '0/0/0.png', '1/', '1/0/', '1/1/', '1/0/0.png', '2/', '2/0/', '2/1/', '2/2/', '2/3/', '2/1/1.png', # The following are the borders '1/0/1.png', '1/1/0.png', '1/1/1.png', '2/0/0.png', '2/0/1.png', '2/0/2.png', '2/0/3.png', '2/1/0.png', '2/1/2.png', '2/1/3.png', '2/2/0.png', '2/2/1.png', '2/2/2.png', '2/2/3.png', '2/3/0.png', '2/3/1.png', '2/3/2.png', '2/3/3.png', )) )
def test_save_border(self): # Western hemisphere is border self.storage.save_border(x=0, y=0, z=1) self.storage.save_border(x=0, y=1, z=1) self.storage.save_border(x=0, y=1, z=2) self.storage.waitall() self.assertEqual(set(recursive_listdir(self.outputdir)), set([ '1/', '1/0/', '1/0/0.png', '1/0/1.png', '2/', '2/0/', '2/0/1.png', ])) # Is this a real file? self.assertFalse( os.path.islink(os.path.join( self.outputdir, '1/0/0.png' )) ) # Does the symlinking work? self.assertEqual( os.readlink(os.path.join( self.outputdir, '1/0/1.png' )), '0.png' ) self.assertEqual( os.readlink(os.path.join( self.outputdir, '2/0/1.png' )), os.path.join(os.path.pardir, os.path.pardir, '1', '0', '0.png') )
def test_simple(self): with NamedTemporaryDir() as outputdir: warp_pyramid(inputfile=self.inputfile, outputdir=outputdir, min_resolution=0, max_resolution=3, renderer=TouchRenderer(suffix='.png')) self.assertEqual( set(recursive_listdir(outputdir)), set(( '0/', '0/0/', '0/0/0.png', '1/', '1/0/', '1/0/0.png', '1/1/', '2/', '2/0/', '2/0/0.png', '2/0/1.png', '2/1/', '2/1/0.png', '2/1/1.png', '2/2/', '2/3/', '3/', '3/0/', '3/0/0.png', '3/0/1.png', '3/0/2.png', '3/0/3.png', '3/1/', '3/1/0.png', '3/1/1.png', '3/1/2.png', '3/1/3.png', '3/2/', '3/2/0.png', '3/2/1.png', '3/2/2.png', '3/2/3.png', '3/3/', '3/3/0.png', '3/3/1.png', '3/3/2.png', '3/3/3.png', '3/4/', '3/5/', '3/6/', '3/7/', # The following are the borders '1/0/1.png', '1/1/0.png', '1/1/1.png', '2/0/2.png', '2/0/3.png', '2/1/2.png', '2/1/3.png', '2/2/0.png', '2/2/1.png', '2/2/2.png', '2/2/3.png', '2/3/0.png', '2/3/1.png', '2/3/2.png', '2/3/3.png', '3/0/4.png', '3/0/5.png', '3/0/6.png', '3/0/7.png', '3/1/4.png', '3/1/5.png', '3/1/6.png', '3/1/7.png', '3/2/4.png', '3/2/5.png', '3/2/6.png', '3/2/7.png', '3/3/4.png', '3/3/5.png', '3/3/6.png', '3/3/7.png', '3/4/0.png', '3/4/1.png', '3/4/2.png', '3/4/3.png', '3/4/4.png', '3/4/5.png', '3/4/6.png', '3/4/7.png', '3/5/0.png', '3/5/1.png', '3/5/2.png', '3/5/3.png', '3/5/4.png', '3/5/5.png', '3/5/6.png', '3/5/7.png', '3/6/0.png', '3/6/1.png', '3/6/2.png', '3/6/3.png', '3/6/4.png', '3/6/5.png', '3/6/6.png', '3/6/7.png', '3/7/0.png', '3/7/1.png', '3/7/2.png', '3/7/3.png', '3/7/4.png', '3/7/5.png', '3/7/6.png', '3/7/7.png', )))
def test_upsample_symlink(self): with NamedTemporaryDir() as outputdir: zoom = 3 dataset = Dataset(self.upsamplingfile) image_pyramid(inputfile=self.upsamplingfile, outputdir=outputdir, max_resolution=dataset.GetNativeResolution() + zoom, renderer=TouchRenderer(suffix='.png')) files = set(recursive_listdir(outputdir)) self.assertEqual( files, set([ '0/', '0/0/', '0/0/0.png', '1/', '1/0/', '1/0/0.png', '1/0/1.png', '1/1/', '1/1/0.png', '1/1/1.png', '2/', '2/0/', '2/0/0.png', '2/0/1.png', '2/0/2.png', '2/0/3.png', '2/1/', '2/1/0.png', '2/1/1.png', '2/1/2.png', '2/1/3.png', '2/2/', '2/2/0.png', '2/2/1.png', '2/2/2.png', '2/2/3.png', '2/3/', '2/3/0.png', '2/3/1.png', '2/3/2.png', '2/3/3.png', '3/', '3/0/', '3/0/0.png', '3/0/1.png', '3/0/2.png', '3/0/3.png', '3/0/4.png', '3/0/5.png', '3/0/6.png', '3/0/7.png', '3/1/', '3/1/0.png', '3/1/1.png', '3/1/2.png', '3/1/3.png', '3/1/4.png', '3/1/5.png', '3/1/6.png', '3/1/7.png', '3/2/', '3/2/0.png', '3/2/1.png', '3/2/2.png', '3/2/3.png', '3/2/4.png', '3/2/5.png', '3/2/6.png', '3/2/7.png', '3/3/', '3/3/0.png', '3/3/1.png', '3/3/2.png', '3/3/3.png', '3/3/4.png', '3/3/5.png', '3/3/6.png', '3/3/7.png', '3/4/', '3/4/0.png', '3/4/1.png', '3/4/2.png', '3/4/3.png', '3/4/4.png', '3/4/5.png', '3/4/6.png', '3/4/7.png', '3/5/', '3/5/0.png', '3/5/1.png', '3/5/2.png', '3/5/3.png', '3/5/4.png', '3/5/5.png', '3/5/6.png', '3/5/7.png', '3/6/', '3/6/0.png', '3/6/1.png', '3/6/2.png', '3/6/3.png', '3/6/4.png', '3/6/5.png', '3/6/6.png', '3/6/7.png', '3/7/', '3/7/0.png', '3/7/1.png', '3/7/2.png', '3/7/3.png', '3/7/4.png', '3/7/5.png', '3/7/6.png', '3/7/7.png', ]))
def test_simple(self): with NamedTemporaryDir() as outputdir: warp_pyramid(inputfile=self.inputfile, outputdir=outputdir, min_resolution=0, max_resolution=3, renderer=TouchRenderer(suffix='.png')) self.assertEqual( set(recursive_listdir(outputdir)), set(( '0/', '0/0/', '0/0/0.png', '1/', '1/0/', '1/0/0.png', '1/1/', '2/', '2/0/', '2/0/0.png', '2/0/1.png', '2/1/', '2/1/0.png', '2/1/1.png', '2/2/', '2/3/', '3/', '3/0/', '3/0/0.png', '3/0/1.png', '3/0/2.png', '3/0/3.png', '3/1/', '3/1/0.png', '3/1/1.png', '3/1/2.png', '3/1/3.png', '3/2/', '3/2/0.png', '3/2/1.png', '3/2/2.png', '3/2/3.png', '3/3/', '3/3/0.png', '3/3/1.png', '3/3/2.png', '3/3/3.png', '3/4/', '3/5/', '3/6/', '3/7/', # The following are the borders '1/0/1.png', '1/1/0.png', '1/1/1.png', '2/0/2.png', '2/0/3.png', '2/1/2.png', '2/1/3.png', '2/2/0.png', '2/2/1.png', '2/2/2.png', '2/2/3.png', '2/3/0.png', '2/3/1.png', '2/3/2.png', '2/3/3.png', '3/0/4.png', '3/0/5.png', '3/0/6.png', '3/0/7.png', '3/1/4.png', '3/1/5.png', '3/1/6.png', '3/1/7.png', '3/2/4.png', '3/2/5.png', '3/2/6.png', '3/2/7.png', '3/3/4.png', '3/3/5.png', '3/3/6.png', '3/3/7.png', '3/4/0.png', '3/4/1.png', '3/4/2.png', '3/4/3.png', '3/4/4.png', '3/4/5.png', '3/4/6.png', '3/4/7.png', '3/5/0.png', '3/5/1.png', '3/5/2.png', '3/5/3.png', '3/5/4.png', '3/5/5.png', '3/5/6.png', '3/5/7.png', '3/6/0.png', '3/6/1.png', '3/6/2.png', '3/6/3.png', '3/6/4.png', '3/6/5.png', '3/6/6.png', '3/6/7.png', '3/7/0.png', '3/7/1.png', '3/7/2.png', '3/7/3.png', '3/7/4.png', '3/7/5.png', '3/7/6.png', '3/7/7.png', )) )
def test_upsample_symlink(self): with NamedTemporaryDir() as outputdir: zoom = 3 dataset = Dataset(self.upsamplingfile) image_pyramid(inputfile=self.upsamplingfile, outputdir=outputdir, max_resolution=dataset.GetNativeResolution() + zoom, renderer=TouchRenderer(suffix='.png')) files = set(recursive_listdir(outputdir)) self.assertEqual( files, set([ '0/', '0/0/', '0/0/0.png', '1/', '1/0/', '1/0/0.png', '1/0/1.png', '1/1/', '1/1/0.png', '1/1/1.png', '2/', '2/0/', '2/0/0.png', '2/0/1.png', '2/0/2.png', '2/0/3.png', '2/1/', '2/1/0.png', '2/1/1.png', '2/1/2.png', '2/1/3.png', '2/2/', '2/2/0.png', '2/2/1.png', '2/2/2.png', '2/2/3.png', '2/3/', '2/3/0.png', '2/3/1.png', '2/3/2.png', '2/3/3.png', '3/', '3/0/', '3/0/0.png', '3/0/1.png', '3/0/2.png', '3/0/3.png', '3/0/4.png', '3/0/5.png', '3/0/6.png', '3/0/7.png', '3/1/', '3/1/0.png', '3/1/1.png', '3/1/2.png', '3/1/3.png', '3/1/4.png', '3/1/5.png', '3/1/6.png', '3/1/7.png', '3/2/', '3/2/0.png', '3/2/1.png', '3/2/2.png', '3/2/3.png', '3/2/4.png', '3/2/5.png', '3/2/6.png', '3/2/7.png', '3/3/', '3/3/0.png', '3/3/1.png', '3/3/2.png', '3/3/3.png', '3/3/4.png', '3/3/5.png', '3/3/6.png', '3/3/7.png', '3/4/', '3/4/0.png', '3/4/1.png', '3/4/2.png', '3/4/3.png', '3/4/4.png', '3/4/5.png', '3/4/6.png', '3/4/7.png', '3/5/', '3/5/0.png', '3/5/1.png', '3/5/2.png', '3/5/3.png', '3/5/4.png', '3/5/5.png', '3/5/6.png', '3/5/7.png', '3/6/', '3/6/0.png', '3/6/1.png', '3/6/2.png', '3/6/3.png', '3/6/4.png', '3/6/5.png', '3/6/6.png', '3/6/7.png', '3/7/', '3/7/0.png', '3/7/1.png', '3/7/2.png', '3/7/3.png', '3/7/4.png', '3/7/5.png', '3/7/6.png', '3/7/7.png', ]) )