Mercurial > hg > GlobalNeighbors
comparison tests/test_write.py @ 22:e69cb496324e
we have a data dump
| author | Jeff Hammel <k0scist@gmail.com> |
|---|---|
| date | Sun, 25 Jun 2017 17:45:19 -0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 21:22c384fe954d | 22:e69cb496324e |
|---|---|
| 1 #!/usr/bin/env python | |
| 2 | |
| 3 """ | |
| 4 test writing + reading distances | |
| 5 """ | |
| 6 | |
| 7 import os | |
| 8 import shutil | |
| 9 import tempfile | |
| 10 import unittest | |
| 11 from common import datafile | |
| 12 from globalneighbors.distance import calculate_neighbors | |
| 13 from globalneighbors.distance import write_neighbors | |
| 14 from globalneighbors.locations import locations | |
| 15 from globalneighbors.neighbors import read_neighbors_file | |
| 16 from globalneighbors.read import read_cities | |
| 17 | |
| 18 | |
| 19 class TestDistanceReadWrite(unittest.TestCase): | |
| 20 | |
| 21 def test_10000(self): | |
| 22 """test 10000 cities""" | |
| 23 | |
| 24 # read locations | |
| 25 citiesfile = datafile('10000cities.tsv') | |
| 26 assert os.path.exists(citiesfile) | |
| 27 with open(citiesfile) as f: | |
| 28 city_locations = locations(read_cities(f)) | |
| 29 | |
| 30 # calculate neighbors | |
| 31 neighbors = calculate_neighbors(city_locations, | |
| 32 k=50, | |
| 33 lat_tol=2., | |
| 34 lon_tol=2.) | |
| 35 | |
| 36 # make a staging area | |
| 37 tmpdir = tempfile.mkdtemp() | |
| 38 try: | |
| 39 # write the neighbors | |
| 40 outfile = os.path.join(tmpdir, 'neighbors.dat') | |
| 41 assert not os.path.exists(outfile) | |
| 42 with open(outfile, 'w') as f: | |
| 43 write_neighbors(f, neighbors) | |
| 44 assert os.path.exists(outfile) | |
| 45 | |
| 46 # read the neighbors | |
| 47 with open(outfile) as f: | |
| 48 new_neighbors = read_neighbors_file(f) | |
| 49 finally: | |
| 50 shutil.rmtree(tmpdir, ignore_errors=True) | |
| 51 | |
| 52 # they should be equal | |
| 53 assert len(neighbors) == len(new_neighbors) | |
| 54 assert sorted(neighbors.keys()) == sorted(new_neighbors.keys()) | |
| 55 for key in neighbors.keys(): | |
| 56 valueA = neighbors[key] | |
| 57 valueB = new_neighbors[key] | |
| 58 assert valueA == valueB | |
| 59 | |
| 60 | |
| 61 if __name__ == '__main__': | |
| 62 unittest.main() |
