Ejemplo n.º 1
0
    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")
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
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)
Ejemplo n.º 4
0
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])
Ejemplo n.º 5
0
 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 == '{}')
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 def test_gbfs_system_info_presence(self):
     gbfs = BySykkelModel.GbfsInfo(BySykkelConfig.OfflineGBFS, "")
     content = BySykkelData.get_content(gbfs.system_info_url)
     self.assertFalse(content == '{}')
Ejemplo n.º 9
0
 def test_station_status_presence(self):
     gbfs = BySykkelModel.GbfsInfo(BySykkelConfig.OfflineGBFS, "")
     content = BySykkelData.get_content(gbfs.station_status_url)
     self.assertFalse(content == '{}')
Ejemplo n.º 10
0
 def setUp(self):
     self.source = BySykkelModel.Source(BySykkelConfig.OfflineGBFS, "")
     updated = self.source.update(self.gps_loc)
Ejemplo n.º 11
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)