def testNotifyRiderPrice(self): d1 = Driver("V0", 23) r1 = Rider("R1", 0, 7, 1, 10, 20, 1, 1, 2, 1) # 0 r2 = Rider("R2", 0, 7, 3, 10, 20, 1, 1, 2, 1) r3 = Rider("R3", 0, 7, 77, 10, 20, 1, 1, 2, 1) r4 = Rider("R4", 0, 7, 6, 10, 20, 1, 1, 2, 1) riders = {"R1": r1, "R2": r2, "R3": r3, "R4": r4} d1.setRiders(riders) d1.calcTripRoute() d1.calcTripEffort() d1.notifyRiderPrice() self.assertAlmostEqual(7.87208, r1.getPrice(), delta=0.01) self.assertAlmostEqual(7.87208, r2.getPrice(), delta=0.01) self.assertAlmostEqual(7.87208, r3.getPrice(), delta=0.01) self.assertAlmostEqual(7.87208, r4.getPrice(), delta=0.01)
def testCalcPriceSuccess(self): r0 = Rider("R0", 0, 8, 24, 7.75, 20, -87.6333, 41.8996, -87.6764, 41.9012) r0.calcDetourTime(5) r0.calcPrice(1) self.assertAlmostEqual(6.0914, r0.getPrice(), delta=0.01) r0 = Rider("R0", 0, 8, 24, 7.75, 20, -87.6333, 41.8996, -87.6764, 41.9012) r0.calcDetourTime(5) r0.calcPrice(2) self.assertAlmostEqual(5.901, r0.getPrice(), delta=0.01) r0 = Rider("R0", 0, 8, 24, 7.75, 20, -87.6333, 41.8996, -87.6764, 41.9012) r0.calcDetourTime(5) r0.calcPrice(3) self.assertAlmostEqual(5.7107, r0.getPrice(), delta=0.01) r0 = Rider("R0", 0, 8, 24, 7.75, 20, -87.6333, 41.8996, -87.6764, 41.9012) r0.calcDetourTime(5) r0.calcPrice(4) self.assertAlmostEqual(5.52, r0.getPrice(), delta=0.01)
def testConstructor(self): r1 = Rider("R1", 0, 7, 6, 10, 20, 1, 1, 2, 1) self.assertEqual("R1", r1.getID()) self.assertEqual(0, r1.getRequestTimeStamp()) self.assertEqual(7, r1.getSrcZone()) self.assertEqual(6, r1.getDestZone()) self.assertEqual(10, r1.getDefaultPrice()) self.assertEqual(math.inf, r1.getPrice()) self.assertEqual(20, r1.getPatience()) self.assertEqual(1, r1.getShortestTime()) self.assertEqual(None, r1.getArrivalTimestamp()) self.assertEqual(None, r1.getGroupID()) self.assertEqual("waiting", r1.getStatus()) self.assertEqual(0, r1.getWaitTime()) self.assertEqual(-1, r1.getDetourTime()) self.assertEqual(0, r1.getSat()) self.assertEqual( "{R1, 0, 7, 6, 10, inf, 20, 6, 1, None, None, waiting, 0, -1, 0}", str(r1))