def test_station_status_distance(self): #Simply test some distance is calculated and updated. #Correctness belongs to GPSLocation distance calculation and is out of scope self.station_status.update_distance(BySykkelModel.GPSLocation(24,24)) self.assertFalse(self.station_status.distance == 0) #Distance to itself is 0 and easy to check self.station_status.update_distance(BySykkelModel.GPSLocation(25,25)) self.assertEqual(self.station_status.distance, 0)
class TestModelSource(unittest.TestCase): GBFS = "offline/gbfs.json" gps_loc = BySykkelModel.GPSLocation(25,25) gps_update_loc = BySykkelModel.GPSLocation(25.1,25) def setUp(self): self.source = BySykkelModel.Source(BySykkelConfig.OfflineGBFS, "") updated = self.source.update(self.gps_loc) def trace(self, title) : if not BySykkelConfig.SilentRun: print(title) for it in self.source.status: print(it) print("========") def sumBikes(self): sum = 0 for row in self.source.status: sum += row.bikes return sum def sumDocks(self): sum = 0 for row in self.source.status: sum += row.docks return sum def test_source_init(self): self.trace("Init") self.assertEqual(len(self.source.status), 4) self.assertEqual(self.sumBikes(), 7) self.assertEqual(self.sumDocks(), 7) def test_source_skip_update(self): updated = self.source.update(self.gps_loc) self.trace("Skip Update") self.assertEqual(updated, False) def test_source_update_location(self): updated = self.source.update(self.gps_update_loc) self.trace("Update Location") self.assertEqual(updated, True) self.assertEqual(len(self.source.status), 4) self.assertEqual(self.sumBikes(), 7) self.assertEqual(self.sumDocks(), 7) #TODO: Add location change test def test_source_update_info(self): #Switch to newer version of station_info self.source.gbfs.station_info_url = "offline/station_info_update.json" updated = self.source.update(self.gps_update_loc) self.trace("Update Info") self.assertEqual(updated, True) self.assertEqual(len(self.source.status), 4) #Lysaker is removed from info self.assertEqual(self.sumBikes(), 6) self.assertEqual(self.sumDocks(), 6) def test_source_update_status(self): #Switch to newer version of station_status self.source.gbfs.station_status_url = "offline/station_status_update.json" updated = self.source.update(self.gps_loc) self.trace("Update Status") self.assertEqual(updated, True) self.assertEqual(len(self.source.status), 4) #Lysaker not returning, 7 Juni not renting self.assertEqual(self.sumBikes(), 5) self.assertEqual(self.sumDocks(), 6) def test_source_update_info_and_status(self): #Switch to newer version of both info and status self.source.gbfs.station_info_url = "offline/station_info_update.json" self.source.gbfs.station_status_url = "offline/station_status_update.json" updated = self.source.update(self.gps_loc) self.trace("Update Info and Status") self.assertEqual(updated, True) self.assertEqual(len(self.source.status), 4) #Lysaker removed Station 11 added self.assertEqual(self.sumBikes(), 12) self.assertEqual(self.sumDocks(), 14)