mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import unittest
 | |
| from unittest import mock
 | |
| 
 | |
| from django.contrib.gis.gdal import GDAL_VERSION, Driver, GDALException
 | |
| 
 | |
| valid_drivers = (
 | |
|     # vector
 | |
|     "ESRI Shapefile",
 | |
|     "MapInfo File",
 | |
|     "S57",
 | |
|     "DGN",
 | |
|     "Memory",
 | |
|     "CSV",
 | |
|     "GML",
 | |
|     "KML",
 | |
|     # raster
 | |
|     "GTiff",
 | |
|     "JPEG",
 | |
|     "MEM",
 | |
|     "PNG",
 | |
| )
 | |
| 
 | |
| invalid_drivers = ("Foo baz", "clucka", "ESRI Shp", "ESRI rast")
 | |
| 
 | |
| aliases = {
 | |
|     "eSrI": "ESRI Shapefile",
 | |
|     "SHAPE": "ESRI Shapefile",
 | |
|     "sHp": "ESRI Shapefile",
 | |
|     "tiFf": "GTiff",
 | |
|     "tIf": "GTiff",
 | |
|     "jPEg": "JPEG",
 | |
|     "jpG": "JPEG",
 | |
| }
 | |
| 
 | |
| if GDAL_VERSION[:2] <= (3, 10):
 | |
|     aliases.update(
 | |
|         {
 | |
|             "tiger": "TIGER",
 | |
|             "tiger/line": "TIGER",
 | |
|         }
 | |
|     )
 | |
| 
 | |
| 
 | |
| class DriverTest(unittest.TestCase):
 | |
|     def test01_valid_driver(self):
 | |
|         "Testing valid GDAL/OGR Data Source Drivers."
 | |
|         for d in valid_drivers:
 | |
|             dr = Driver(d)
 | |
|             self.assertEqual(d, str(dr))
 | |
| 
 | |
|     def test02_invalid_driver(self):
 | |
|         "Testing invalid GDAL/OGR Data Source Drivers."
 | |
|         for i in invalid_drivers:
 | |
|             with self.assertRaises(GDALException):
 | |
|                 Driver(i)
 | |
| 
 | |
|     def test03_aliases(self):
 | |
|         "Testing driver aliases."
 | |
|         for alias, full_name in aliases.items():
 | |
|             dr = Driver(alias)
 | |
|             self.assertEqual(full_name, str(dr))
 | |
| 
 | |
|     @mock.patch("django.contrib.gis.gdal.driver.capi.get_driver_count")
 | |
|     @mock.patch("django.contrib.gis.gdal.driver.capi.register_all")
 | |
|     def test_registered(self, reg, count):
 | |
|         """
 | |
|         Prototypes are registered only if the driver count is zero.
 | |
|         """
 | |
| 
 | |
|         def check(count_val):
 | |
|             reg.reset_mock()
 | |
|             count.return_value = count_val
 | |
|             Driver.ensure_registered()
 | |
|             if count_val:
 | |
|                 self.assertFalse(reg.called)
 | |
|             else:
 | |
|                 reg.assert_called_once_with()
 | |
| 
 | |
|         check(0)
 | |
|         check(120)
 |