diff --git a/README.md b/README.md index a1a1ffc..5b995aa 100644 --- a/README.md +++ b/README.md @@ -73,5 +73,5 @@ By the end of this project, you should be able to: All tests are written using **unittest**. To run them: -```bash +``bash python -m unittest tests/test_blah.py \ No newline at end of file diff --git a/__pycache__/driver.cpython-312.pyc b/__pycache__/driver.cpython-312.pyc new file mode 100644 index 0000000..499f241 Binary files /dev/null and b/__pycache__/driver.cpython-312.pyc differ diff --git a/__pycache__/ride.cpython-312.pyc b/__pycache__/ride.cpython-312.pyc new file mode 100644 index 0000000..f0c7f22 Binary files /dev/null and b/__pycache__/ride.cpython-312.pyc differ diff --git a/__pycache__/rider.cpython-312.pyc b/__pycache__/rider.cpython-312.pyc new file mode 100644 index 0000000..988978d Binary files /dev/null and b/__pycache__/rider.cpython-312.pyc differ diff --git a/__pycache__/uber.cpython-312.pyc b/__pycache__/uber.cpython-312.pyc new file mode 100644 index 0000000..026573a Binary files /dev/null and b/__pycache__/uber.cpython-312.pyc differ diff --git a/bonus.py b/bonus.py new file mode 100644 index 0000000..b257564 --- /dev/null +++ b/bonus.py @@ -0,0 +1,8 @@ +from driver import Driver +from rider import Rider +from ride import Ride +from uber import Uber + +class UberBonus: + def __init__(self): + \ No newline at end of file diff --git a/driver.py b/driver.py new file mode 100644 index 0000000..e509582 --- /dev/null +++ b/driver.py @@ -0,0 +1,17 @@ +class Driver: + def __init__(self, name, car_model): + self.name = name + self.car_model = car_model + self.available = True + self.completed_rides = [] + self.ratings = [] + + @property + def average_rating(self): + length = len(self.ratings) + sumofrates = sum(self.ratings) + return sumofrates/length + + + def __str__(self): + return f"{self.name}, {self.car_model}, {self.available},{self.completed_rides}, {self.average_rating}" diff --git a/ride.py b/ride.py new file mode 100644 index 0000000..83275ee --- /dev/null +++ b/ride.py @@ -0,0 +1,29 @@ +import driver +import rider + +class Ride: + + def __init__(self, driver, rider, distance): + self.driver = driver + self.rider = rider + self.distance = distance + self.status = "requested" + self.RATE_PER_KM = 10 + self.cost = distance * self.RATE_PER_KM + + + def start_ride(self): + self.status = "in_progress" + return self.status + + def complete_ride(self): + self.status = "completed" + return self.status + + def __str__(self): + return f"{self.driver},{self.rider},{self.distance},{self.status}" + + + + + diff --git a/rider.py b/rider.py new file mode 100644 index 0000000..bbc285c --- /dev/null +++ b/rider.py @@ -0,0 +1,12 @@ +class Rider: + def __init__(self, name): + self.name = name + self.ride_history = [] + + def rate_driver(self,driver, rate): + driver.ratings.append(rate) + + def __str__(self): + return f"{self.name}" + +# rider1 = Rider("Nothando") diff --git a/tests/__pycache__/test_driver.cpython-312.pyc b/tests/__pycache__/test_driver.cpython-312.pyc new file mode 100644 index 0000000..0ca47e7 Binary files /dev/null and b/tests/__pycache__/test_driver.cpython-312.pyc differ diff --git a/tests/__pycache__/test_ride.cpython-312.pyc b/tests/__pycache__/test_ride.cpython-312.pyc new file mode 100644 index 0000000..f722520 Binary files /dev/null and b/tests/__pycache__/test_ride.cpython-312.pyc differ diff --git a/tests/__pycache__/test_rider.cpython-312.pyc b/tests/__pycache__/test_rider.cpython-312.pyc new file mode 100644 index 0000000..21b5877 Binary files /dev/null and b/tests/__pycache__/test_rider.cpython-312.pyc differ diff --git a/tests/__pycache__/test_uber.cpython-312.pyc b/tests/__pycache__/test_uber.cpython-312.pyc new file mode 100644 index 0000000..fb1e51b Binary files /dev/null and b/tests/__pycache__/test_uber.cpython-312.pyc differ diff --git a/tests/test_rider.py b/tests/test_rider.py index e954c36..f9fdc9a 100644 --- a/tests/test_rider.py +++ b/tests/test_rider.py @@ -7,6 +7,6 @@ def test_rider_initialization(self): self.assertEqual(r.name, "Alice") self.assertEqual(r.ride_history, []) - def test_rider_str(self): + def test_rider_str(self): r = Rider("Alice") self.assertIn("Alice", str(r)) diff --git a/tests/test_uber.py b/tests/test_uber.py index c9813cd..6547a73 100644 --- a/tests/test_uber.py +++ b/tests/test_uber.py @@ -42,3 +42,4 @@ def test_rider_can_rate_driver(self): # multiple ratings self.rider.rate_driver(ride.driver, 4) self.assertAlmostEqual(ride.driver.average_rating, 4.5) + diff --git a/uber.py b/uber.py new file mode 100644 index 0000000..8ff0866 --- /dev/null +++ b/uber.py @@ -0,0 +1,76 @@ +from driver import Driver +from rider import Rider +from ride import Ride +import random + + +class Uber: + def __init__(self): + self.available_drivers = [] + self.active_rides = [] + self.completed_rides = [] + + + def add_driver(self, driver): + self.available_drivers.append(driver) + + + def request_ride(self, rider, distance): + random_driver = self.available_drivers.pop() + ride1 = Ride(random_driver,rider, distance) + self.active_rides.append(ride1) + random_driver.available = False + return ride1 + + def mark_ride_completed(self, ride): + ride.driver.available = True + self.completed_rides.append(ride) + self.active_rides.remove(ride) + return ride + + + def __str__(self): + result = "" + for i in self.available_drivers: + result += str(i) + "\n" + for k in self.active_rides: + result+= str(k) + "\n" + for j in self.completed_rides: + result += str(j) + "\n" + return result + + + + + + +# d1 = Driver("Drake","Bajaj") +# d2 = Driver("Beyonce", "Fiat") +# d3 = Driver("Nelly", "Bus") +# r1 = Rider("Father Elvis") +# r2 = Rider("Gerald") + +# # ride1 = Ride("Pharsa", "Hanabi", 8 ) +# # ride2 = Ride("No", "jay", 9) +# app = Uber() +# app.add_driver(d1) +# app.add_driver(d2) +# app.add_driver(d3) + + + +# ride1 = app.request_ride(r1,6) + +# ride1.start_ride() + + +# ride1.complete_ride() + +# app.mark_ride_completed(ride1) + +# print(ride1.driver.available == True) + +# print(ride1 in app.completed_rides) +# print(ride1 not in app.active_rides) + +