Beispiel #1
0
    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',
                ))
            )
Beispiel #4
0
    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'))
Beispiel #5
0
    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), [])
Beispiel #6
0
    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',
                ))
            )
Beispiel #9
0
    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',
                ]))
Beispiel #12
0
 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',
             ))
         )
Beispiel #13
0
    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',
                ])
            )