def test_system_info(self): gbfs = BySykkelModel.GbfsInfo(BySykkelConfig.OfflineGBFS, "") system_info = BySykkelModel.SystemInfo(gbfs.system_info_url, "") self.assertEqual(system_info.name, "Oslo Bysykkel") self.assertEqual(system_info.phone_number, "+4791589700") self.assertEqual(system_info.email, "*****@*****.**") self.assertEqual(system_info.format("{2}-{0}-{1}"), "[email protected] Oslo Bysykkel AS-+4791589700")
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)
def setUp(self): station_static_data = dict() station_static_data["name"] = "Station 11" station_static_data["address"] = "From earth, to the left" station_static_data["lat"] = 25 station_static_data["lon"] = 25 self.station_status = BySykkelModel.StationStatus(station_static_data)
def _get_station_by_id(request, output): resource_id_split = request.resource.split('/') if resource_id_split[-1].isdigit(): station_id = int(resource_id_split[-1]) model = BySykkelModel.Source(BySykkelConfig.OnlineGBFS, BySykkelConfig.OnlineClientID) model.update(BySykkelModel.GPSLocation.parse(request.params.gps)) if (station_id in model.info.keys()): return model.info[station_id].format(output.station_format()) return output.error("Invalid station id:" + resource_id_split[-1])
def test_gbfs_addresses(self): gbfs = BySykkelModel.GbfsInfo(self.GBFS, self.CLIENT_ID) content = BySykkelData.get_content(gbfs.system_info_url, self.CLIENT_ID) self.assertFalse(content == '{}', gbfs.system_info_url + " is invalid/not reachable") content = BySykkelData.get_content(gbfs.station_info_url, self.CLIENT_ID) self.assertFalse(content == '{}') content = BySykkelData.get_content(gbfs.station_status_url, self.CLIENT_ID) self.assertFalse(content == '{}')
def _get_all_stations(request, output): model = BySykkelModel.Source(BySykkelConfig.OnlineGBFS, BySykkelConfig.OnlineClientID) model.update(BySykkelModel.GPSLocation.parse(request.params.gps)) result = output.list_prefix() view = model.status if request.params.top != 0: view = model.status[0:request.params.top] for value in view: if value.bikes >= request.params.bikes: if value.docks >= request.params.docks: if (len(result) > len(output.list_prefix())): result += output.list_separator() result += value.format(output.station_format()) result += output.list_suffix() return result
def test_station_dictionary_status(self): gbfs = BySykkelModel.GbfsInfo(BySykkelConfig.OfflineGBFS, "") js = json.loads(BySykkelData.get_content(gbfs.station_status_url, "")) station_status = BySykkelModel.StationDict(js) self.assertEqual(len(station_status.dictionary), 4)
def test_gbfs_system_info_presence(self): gbfs = BySykkelModel.GbfsInfo(BySykkelConfig.OfflineGBFS, "") content = BySykkelData.get_content(gbfs.system_info_url) self.assertFalse(content == '{}')
def test_station_status_presence(self): gbfs = BySykkelModel.GbfsInfo(BySykkelConfig.OfflineGBFS, "") content = BySykkelData.get_content(gbfs.station_status_url) self.assertFalse(content == '{}')
def setUp(self): self.source = BySykkelModel.Source(BySykkelConfig.OfflineGBFS, "") updated = self.source.update(self.gps_loc)
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)