def __init__(self):
self.latitude = 0
self.longitude = 0
-
-
-
-def CalculateDistance(p1, p2):
- """
- Calculate the distance between two Coordinates, p1 and p2.
- """
- delta_x = p2.longitude - p1.longitude
- delta_y = p2.latitude - p1.latitude
- euclidean_distance = sqrt(delta_x**2 + delta_y**2)
-
- return euclidean_distance
return record
-
-
-
-def FindClosestBlock(blocks, target_coords):
- """
- Find the closest block (from within blocks) to the GPS
- coordinates given by target_coords.
- """
-
- # Empty by default. Hopefully we're passed some blocks.
- closest_block = None
- min_distance = 999999999.0 # Don't look at me like that.
-
- for block in blocks:
- this_distance = GPS.CalculateDistance(target_coords, block.coordinates)
- if (this_distance < min_distance):
- closest_block = block
- min_distance = this_distance
-
- return closest_block
-
-
-
-def FindAveragePopulationDensity(coords, geo_file_path):
- grp = GeoRecordParser()
- blocks = grp.parse_blocks(geo_file_path)
- closest_block = FindClosestBlock(blocks, coords)
-
- return closest_block.population_density()
fixture_path = Tests.Fixtures.Path() + '/SummaryFile1/mdgeo.uf1'
blocks = self.grp.parse_blocks(fixture_path)
self.assertEqual(len(blocks), 79128)
-
-
-class SummaryFile1Test(unittest.TestCase):
-
- def testEachBlockIsClosestToItself(self):
- blocks_path = Tests.Fixtures.Path() + '/SummaryFile1/mdgeo.uf1'
- grp = SummaryFile1.GeoRecordParser()
- blocks = grp.parse_blocks(blocks_path)
-
- # Only test 100 of these guys (or however many blocks there
- # are in those 100 records.
- fixtures_path = Tests.Fixtures.Path() + '/SummaryFile1/one_hundred_records.txt'
- fixtures = grp.parse_blocks(fixtures_path)
-
- for b in fixtures:
- # It's probably unnecessary to copy the coordinates
- # into a new instance here, but whatever.
- b_coords = GPS.Coordinates()
- b_coords.latitude = b.coordinates.latitude
- b_coords.longitude = b.coordinates.longitude
-
- closest_block = SummaryFile1.FindClosestBlock(blocks, b_coords)
- self.assertEqual(b.block, closest_block.block)
-
-
- def testEachBlockHasItsOwnAverageDensity(self):
- geo_file_path = Tests.Fixtures.Path() + '/SummaryFile1/mdgeo.uf1'
-
- # Only test 5 of these guys; they take longer.
- grp = SummaryFile1.GeoRecordParser()
- fixtures_path = Tests.Fixtures.Path() + '/SummaryFile1/five_blocks.txt'
- fixtures = grp.parse_blocks(fixtures_path)
-
- for b in fixtures:
- # It's probably unnecessary to copy the coordinates
- # into a new instance here, but whatever.
- avg_density = SummaryFile1.FindAveragePopulationDensity(b.coordinates, geo_file_path)
- self.assertEqual(b.population_density(), avg_density)
-
+
def suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(GeoRecordParserTest))
- suite.addTest(unittest.makeSuite(SummaryFile1Test))
suite.addTest(unittest.makeSuite(BlockTest))
return suite