Skip to content

Commit

Permalink
added tests
Browse files Browse the repository at this point in the history
U-NORTHAMERICA\taheroux authored and U-NORTHAMERICA\taheroux committed Mar 6, 2014

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent e92c390 commit e136237
Showing 4 changed files with 31 additions and 19 deletions.
1 change: 0 additions & 1 deletion quadkey/__init__.py
Original file line number Diff line number Diff line change
@@ -17,7 +17,6 @@ def __repr__(self):
return self.key

@classmethod
@precondition(TileSystem.valid_level)
def from_str(cls, key):
level = len(key)
lat, lon = QuadKey.get_coordinates(key)
19 changes: 10 additions & 9 deletions quadkey/tile_system.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
from util import precondition
from math import cos
from math import cos, pi

def valid_level(level):
LEVEL_RANGE = (1,23)
return LEVEL_RANGE[0] <= level <= LEVEL_RANGE[1]

class TileSystem:
"""
@@ -11,9 +15,6 @@ class TileSystem:
EARTH_RADIUS = 6378137
LATITUDE_RANGE = (-85.05112878, 85.05112878)
LONGITUDE_RANGE = (-180., 180.)
LEVEL_RANGE = (1,23)

valid_level = lambda level: TileSystem.LEVEL_RANGE[0] <= level <= TileSystem.LEVEL_RANGE[1]

@staticmethod
@precondition(lambda n, minMax: minMax[0] <= minMax[1])
@@ -28,14 +29,14 @@ def map_size(level):
return 256 << level

@staticmethod
@precondition(valid_level(*args[1]))
def ground_resolution(float lat, int level):
@precondition(lambda lat, lvl: valid_level(lvl))
def ground_resolution(lat, level):
"""Gets ground res in meters / pixel"""
lat = TileSystem.clip(lat, TileSytem.LATITUDE_RANGE)
return cos(lat * pi / 180) * 2 * pi * EARTH_RADIUS / TileSystem.map_size(level)
lat = TileSystem.clip(lat, TileSystem.LATITUDE_RANGE)
return cos(lat * pi / 180) * 2 * pi * TileSystem.EARTH_RADIUS / TileSystem.map_size(level)

@staticmethod
@precondition(valid_level(*args[1]))
@precondition(lambda lat, lvl, dpi: valid_level(lvl))
def map_scale(lat, level, dpi):
"""Gets the scale of the map expressed as ratio 1 : N. Returns N"""
return TileSystem.ground_resolution(lat, level) * dpi / 0.0254
2 changes: 1 addition & 1 deletion quadkey/util.py
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@

def condition(precondition=None, postcondition=None):
def decorator(func):
@functools.wraps(func) # presever name, docstring, etc
@functools.wraps(func) # preserve name, docstring, etc
def wrapper(*args, **kwargs): #NOTE: no self
if precondition is not None:
assert precondition(*args, **kwargs)
28 changes: 20 additions & 8 deletions tests/tile_system.py
Original file line number Diff line number Diff line change
@@ -17,14 +17,26 @@ def testMapSize(self):
with self.assertRaises(AssertionError):
TileSystem.map_size(0)

def testFromString(self):
pass
def testGroundResolution(self):
TileSystem.ground_resolution(45, 7)

def testToString(self):
pass
def testMapScale(self):
TileSystem.map_scale(45, 7, 45)

def testGetQuadKey(self):
pass
def testGeoToPixel(self):
TileSystem.geo_to_pixel(geo, level)

def testGetCoordinates(self):
pass
def testPixelToGeo(self):
TileSystem.pixel_to_geo(pixel, level)

def testPixelToTile(self):
TileSystem.pixel_to_tile(pixel)

def testTileToPixel(self):
TileSystem.tile_to_pixel(tile)

def testTileToQuadkey(self):
TileSystem.tile_to_quadkey(tile, level)

def testQuadkeyToTile(self):
TileSystem.quadkey_to_tile(quadkey)

0 comments on commit e136237

Please sign in to comment.