def setUp(self): self.tmp_directory = tempfile.mkdtemp() print('Temporay directory {} created'.format(self.tmp_directory)) self.sqlite_path = os.path.join(self.tmp_directory, 'offline-cache.sqlite3') self.offline_cache = OffLineCache(self.sqlite_path)
#################################################################################################### from PyGeoPortail.TileMap.OffLineCache import MapLevel, Tile, Run, Region, OffLineCache from PyGeoPortail.Math.Interval import IntervalInt #################################################################################################### offline_cache = OffLineCache('offline-cache.sqlite3') tile_provider = None map_level = MapLevel(provider_id=1, map_id=1, version=1, level=1) region = Region('region1', map_level, runs=(Run(1, IntervalInt(2, 3)), Run(2, IntervalInt(2, 6)), )) offline_cache.insert_region(region, tile_provider) region = Region('region2', map_level, runs=(Run(1, IntervalInt(3, 3)), Run(2, IntervalInt(5, 6)), Run(3, IntervalInt(4, 6)), )) offline_cache.insert_region(region, tile_provider) offline_cache.delete_region(1) # test on-line cache
class TestOffLineCache(unittest.TestCase): ############################################## def setUp(self): self.tmp_directory = tempfile.mkdtemp() print('Temporay directory {} created'.format(self.tmp_directory)) self.sqlite_path = os.path.join(self.tmp_directory, 'offline-cache.sqlite3') self.offline_cache = OffLineCache(self.sqlite_path) ############################################## def tearDown(self): # subprocess.call(('sqlite3', self.sqlite_path, '.dump')) shutil.rmtree(self.tmp_directory) ############################################## @unittest.skip('') def test_map_level(self): offline_cache = self.offline_cache map_level1 = MapLevel(provider_id=1, map_id=1, version=1, level=1) map_level_id1 = offline_cache._get_map_level_id(map_level1) self.assertEqual(map_level_id1, 1) map_level2 = MapLevel(provider_id=2, map_id=2, version=2, level=2) map_level_id2 = offline_cache._get_map_level_id(map_level2) self.assertEqual(map_level_id2, 2) map_level_id1 = offline_cache._get_map_level_id(map_level1) self.assertEqual(map_level_id1, 1) offline_cache.load_map_levels() self.assertEqual(len(offline_cache._map_level_id_cache), 2) map_level3 = MapLevel(provider_id=3, map_id=3, version=3, level=3) map_level_id3 = offline_cache._get_map_level_id(map_level3) self.offline_cache.delete_map_level(map_level1) offline_cache.commit() offline_cache.load_map_levels() self.assertListEqual(list(offline_cache._map_level_id_cache.keys()), [2, 3]) # vacuum_map_level # offline_cache._query().exec_('DELETE * from map_level') # offline_cache.commit() ############################################## @unittest.skip('') def test_tile(self): offline_cache = self.offline_cache map_level1 = MapLevel(provider_id=1, map_id=1, version=1, level=1) tile1 = TileIndex(map_level1, row=1, column=1) offline_cache.insert_tile(tile1, offline=1) # Fixme: bool offline_cache.commit() # Fixme: print(offline_cache.get_tile(tile1)) # Fixme: has_tile return 0 self.assertEqual(offline_cache.has_tile(tile1), 1) offline_cache.update_tile_offline_count(tile1, 2) offline_cache.commit() self.assertEqual(offline_cache.has_tile(tile1), 2) offline_cache.delete_tile(tile1) offline_cache.commit() self.assertEqual(offline_cache.has_tile(tile1), 1) offline_cache.delete_tile(tile1) offline_cache.commit() self.assertEqual(offline_cache.has_tile(tile1), 0) # with self.assertRaises(): # print(offline_cache.get_tile(tile1)) # offline_cache._query().exec_('DELETE * from map_level') # offline_cache._query().exec_('DELETE * from tile') # offline_cache.commit() ############################################## # @unittest.skip('') def test_region(self): offline_cache = self.offline_cache tile_provider = None map_level = MapLevel(provider_id=1, map_id=1, version=1, level=1) column_interval1 = IntervalInt(1, 3) column_interval2 = IntervalInt(3, 6) region1 = Region('region1', map_level, runs=(Run(1, column_interval1), Run(2, column_interval1), Run(3, column_interval1), )) offline_cache.insert_region(region1, tile_provider) # offline_cache.commit() region2 = Region('region2', map_level, runs=(Run(1, column_interval2), Run(2, column_interval2), Run(3, column_interval2), )) offline_cache.insert_region(region2, tile_provider) offline_cache.commit() for row in range(1, 3 +1): for i in column_interval1.iter()[:-1]: self.assertEqual(offline_cache.has_tile(TileIndex(map_level, row, column=i)), 1) self.assertEqual(offline_cache.has_tile(TileIndex(map_level, row, column=3)), 2) for i in column_interval2.iter()[1:]: self.assertEqual(offline_cache.has_tile(TileIndex(map_level, row, column=i)), 1) offline_cache.delete_region('region1') offline_cache.commit() for row in range(1, 3 +1): for i in column_interval1.iter()[:-1]: self.assertEqual(offline_cache.has_tile(TileIndex(map_level, row, column=i)), 0) for i in column_interval2.iter(): self.assertEqual(offline_cache.has_tile(TileIndex(map_level, row, column=i)), 1) region = offline_cache.get_region('region2') self.assertEqual(len(region.runs), 3) self.assertEqual(region.number_of_tiles, 3*column_interval2.length()) print(offline_cache.tile_count_for_provider_id(1))