コード例 #1
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)
コード例 #2
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)