X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTests%2FUnit%2FCensusTest.py;fp=src%2FTests%2FUnit%2FCensusTest.py;h=3f56afb3fbf0b9e0f425e5c626193e6c85684ddc;hb=e29f3e5cc471e3cb60f641fcf3a3577c87896f36;hp=0000000000000000000000000000000000000000;hpb=f9f6eeb97d2a5588ba6e567b48f186c704342be9;p=dead%2Fcensus-tools.git diff --git a/src/Tests/Unit/CensusTest.py b/src/Tests/Unit/CensusTest.py new file mode 100644 index 0000000..3f56afb --- /dev/null +++ b/src/Tests/Unit/CensusTest.py @@ -0,0 +1,43 @@ +import unittest + +import Census +import Configuration.Defaults +import GPS +import SummaryFile1 +import Tests.Fixtures + + +class DatabaseTest(unittest.TestCase): + + def setUp(self): + self.cdb = Census.Database(Configuration.Defaults.DATABASE_HOST, + Configuration.Defaults.DATABASE_NAME, + Configuration.Defaults.DATABASE_USERNAME, + Configuration.Defaults.SRID) + + + def testEachBlockContainsItsOwnPopulation(self): + # These calculations are slightly off due to a discrepancy + # between the WKB/WKT format calculations. It would appear + # that converting from WKB to WKT and then back loses some + # information. + # + # The error is 1/100th of a person. Should be pretty safe. + error_threshold = 0.01 + + grp = SummaryFile1.GeoRecordParser() + fixtures_path = Tests.Fixtures.Path() + '/SummaryFile1/one_hundred_records.txt' + fixtures = grp.parse_blocks(fixtures_path) + + for b in fixtures: + block_boundary = self.cdb.get_block_geometry_as_wkt(b.tiger_blkidfp00()) + contained_population = self.cdb.find_contained_population(block_boundary) + error = abs(b.pop100 - contained_population) + self.assertTrue(error <= error_threshold) + + +def suite(): + suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(DatabaseTest)) + return suite +