From 8ec3f71ec309c9974705553518bfe408d8e3c1d9 Mon Sep 17 00:00:00 2001 From: Mrinal Pramanick Date: Mon, 13 Nov 2023 05:45:02 +0530 Subject: [PATCH 1/5] Car Factory and Battery Setup --- .vscode/settings.json | 3 +++ car.py | 10 ---------- car_factory.py | 0 car_module/__init__.py | 2 ++ car_module/car.py | 2 ++ car_module/components/battery/batter_Interface.py | 6 ++++++ car_module/components/battery/nubbin_Battery.py | 11 +++++++++++ car_module/components/battery/spindler_Battery.py | 11 +++++++++++ car_module/serviceable_Interface.py | 6 ++++++ 9 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 car.py create mode 100644 car_factory.py create mode 100644 car_module/__init__.py create mode 100644 car_module/car.py create mode 100644 car_module/components/battery/batter_Interface.py create mode 100644 car_module/components/battery/nubbin_Battery.py create mode 100644 car_module/components/battery/spindler_Battery.py create mode 100644 car_module/serviceable_Interface.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..13ee2b041 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "nuxt.isNuxtApp": false +} \ No newline at end of file diff --git a/car.py b/car.py deleted file mode 100644 index f7b980a1b..000000000 --- a/car.py +++ /dev/null @@ -1,10 +0,0 @@ -from abc import ABC, abstractmethod - - -class Car(ABC): - def __init__(self, last_service_date): - self.last_service_date = last_service_date - - @abstractmethod - def needs_service(self): - pass diff --git a/car_factory.py b/car_factory.py new file mode 100644 index 000000000..e69de29bb diff --git a/car_module/__init__.py b/car_module/__init__.py new file mode 100644 index 000000000..2faf661b2 --- /dev/null +++ b/car_module/__init__.py @@ -0,0 +1,2 @@ +from .serviceable_Interface import Serviceable +from .car import Car \ No newline at end of file diff --git a/car_module/car.py b/car_module/car.py new file mode 100644 index 000000000..380d8e4ca --- /dev/null +++ b/car_module/car.py @@ -0,0 +1,2 @@ +from .serviceable_Interface import Serviceable +from .components.battery.batter_Interface import Battery diff --git a/car_module/components/battery/batter_Interface.py b/car_module/components/battery/batter_Interface.py new file mode 100644 index 000000000..723c36d18 --- /dev/null +++ b/car_module/components/battery/batter_Interface.py @@ -0,0 +1,6 @@ +from abc import ABC, abstractmethod + +class Battery(ABC): + @abstractmethod + def needs_service() -> bool: + pass \ No newline at end of file diff --git a/car_module/components/battery/nubbin_Battery.py b/car_module/components/battery/nubbin_Battery.py new file mode 100644 index 000000000..6a1a67d29 --- /dev/null +++ b/car_module/components/battery/nubbin_Battery.py @@ -0,0 +1,11 @@ +from .batter_Interface import Battery +from datetime import date + +class NubbinBattery(Battery): + def __init__ (self, current_date : date, last_service_date : date): + self.current_date = current_date + self.last_service_date = last_service_date + + def needs_service(self) -> bool: + years = (self.current_date - self.last_service_date).days / 365.0 + return years > 4 \ No newline at end of file diff --git a/car_module/components/battery/spindler_Battery.py b/car_module/components/battery/spindler_Battery.py new file mode 100644 index 000000000..b022ecd73 --- /dev/null +++ b/car_module/components/battery/spindler_Battery.py @@ -0,0 +1,11 @@ +from .batter_Interface import Battery +from datetime import date + +class SpliderBattery(Battery): + def __init__ (self, current_date : date, last_service_date: date): + self.current_date = current_date + self.last_service_date = last_service_date + + def needs_service(self) -> bool: + years = (self.current_date - self.last_service_date).days / 365.0 + return years > 2 \ No newline at end of file diff --git a/car_module/serviceable_Interface.py b/car_module/serviceable_Interface.py new file mode 100644 index 000000000..bad06bedf --- /dev/null +++ b/car_module/serviceable_Interface.py @@ -0,0 +1,6 @@ +from abc import ABC, abstractmethod + +class Serviceable(ABC): + @abstractmethod + def needs_service() -> bool: + pass \ No newline at end of file From 953cdcccf24fc669b0a78ec728e9d39c8875aae2 Mon Sep 17 00:00:00 2001 From: Mrinal Pramanick Date: Mon, 13 Nov 2023 06:29:44 +0530 Subject: [PATCH 2/5] Final Commit --- car_module/car.py | 9 +++++++++ car_module/components/engine/__init__.py | 4 ++++ car_module/components/engine/capulet_Engine.py | 9 +++++++++ car_module/components/engine/engine_Interface.py | 6 ++++++ car_module/components/engine/sternman_Engine.py | 8 ++++++++ car_module/components/engine/willoughby_Engine.py | 9 +++++++++ engine/__init__.py | 0 engine/capulet_engine.py | 13 ------------- engine/model/__init__.py | 0 engine/model/calliope.py | 12 ------------ engine/model/glissade.py | 12 ------------ engine/model/palindrome.py | 12 ------------ engine/model/rorschach.py | 12 ------------ engine/model/thovex.py | 12 ------------ engine/sternman_engine.py | 15 --------------- engine/willoughby_engine.py | 13 ------------- 16 files changed, 45 insertions(+), 101 deletions(-) create mode 100644 car_module/components/engine/__init__.py create mode 100644 car_module/components/engine/capulet_Engine.py create mode 100644 car_module/components/engine/engine_Interface.py create mode 100644 car_module/components/engine/sternman_Engine.py create mode 100644 car_module/components/engine/willoughby_Engine.py delete mode 100644 engine/__init__.py delete mode 100644 engine/capulet_engine.py delete mode 100644 engine/model/__init__.py delete mode 100644 engine/model/calliope.py delete mode 100644 engine/model/glissade.py delete mode 100644 engine/model/palindrome.py delete mode 100644 engine/model/rorschach.py delete mode 100644 engine/model/thovex.py delete mode 100644 engine/sternman_engine.py delete mode 100644 engine/willoughby_engine.py diff --git a/car_module/car.py b/car_module/car.py index 380d8e4ca..b74a7942c 100644 --- a/car_module/car.py +++ b/car_module/car.py @@ -1,2 +1,11 @@ from .serviceable_Interface import Serviceable from .components.battery.batter_Interface import Battery +from .components.engine.engine_Interface import Engine + +class Car(Serviceable): + def __init__(self, engine : Engine, battery : Battery): + self.engine = engine + self.battery = battery + + def needs_service(self) -> bool: + return self.engine.needs_service() or self.battery.needs_service() \ No newline at end of file diff --git a/car_module/components/engine/__init__.py b/car_module/components/engine/__init__.py new file mode 100644 index 000000000..64ecdc158 --- /dev/null +++ b/car_module/components/engine/__init__.py @@ -0,0 +1,4 @@ +from .engine_Interface import Engine +from .capulet_Engine import CapuletEngine +from .sternman_Engine import SternmanEngine +from .willoughby_Engine import WillounghbyEngine \ No newline at end of file diff --git a/car_module/components/engine/capulet_Engine.py b/car_module/components/engine/capulet_Engine.py new file mode 100644 index 000000000..26df4278d --- /dev/null +++ b/car_module/components/engine/capulet_Engine.py @@ -0,0 +1,9 @@ +from .engine_Interface import Engine + +class CapuletEngine(Engine): + def __init__(self, current_mileage : int, last_service_mileage : int): + self.current_mileage = current_mileage + self.last_service_mileage = last_service_mileage + + def needs_service(self) -> bool: + return self.current_mileage - self.last_service_mileage > 30000 \ No newline at end of file diff --git a/car_module/components/engine/engine_Interface.py b/car_module/components/engine/engine_Interface.py new file mode 100644 index 000000000..85abd419b --- /dev/null +++ b/car_module/components/engine/engine_Interface.py @@ -0,0 +1,6 @@ +from abc import ABC, abstractmethod + +class Engine(ABC): + @abstractmethod + def needs_service() -> bool: + pass \ No newline at end of file diff --git a/car_module/components/engine/sternman_Engine.py b/car_module/components/engine/sternman_Engine.py new file mode 100644 index 000000000..f3617980d --- /dev/null +++ b/car_module/components/engine/sternman_Engine.py @@ -0,0 +1,8 @@ +from .engine_Interface import Engine + +class SternmanEngine(Engine): + def __init__(self, warning_light_is_on : bool): + self.warning_light_is_on = warning_light_is_on + + def needs_service(self) -> bool: + return self.warning_light_is_on \ No newline at end of file diff --git a/car_module/components/engine/willoughby_Engine.py b/car_module/components/engine/willoughby_Engine.py new file mode 100644 index 000000000..3c0dd43cb --- /dev/null +++ b/car_module/components/engine/willoughby_Engine.py @@ -0,0 +1,9 @@ +from .engine_Interface import Engine + +class WillounghbyEngine(Engine): + def __init__(self, current_mileage : int, last_service_mileage: int): + self.current_mileage = current_mileage + self.last_service_mileage = last_service_mileage + + def needs_service(self) -> bool: + return self.current_mileage - self.last_service_mileage > 60000 \ No newline at end of file diff --git a/engine/__init__.py b/engine/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/engine/capulet_engine.py b/engine/capulet_engine.py deleted file mode 100644 index 69a2f3319..000000000 --- a/engine/capulet_engine.py +++ /dev/null @@ -1,13 +0,0 @@ -from abc import ABC - -from car import Car - - -class CapuletEngine(Car, ABC): - def __init__(self, last_service_date, current_mileage, last_service_mileage): - super().__init__(last_service_date) - self.current_mileage = current_mileage - self.last_service_mileage = last_service_mileage - - def engine_should_be_serviced(self): - return self.current_mileage - self.last_service_mileage > 30000 diff --git a/engine/model/__init__.py b/engine/model/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/engine/model/calliope.py b/engine/model/calliope.py deleted file mode 100644 index 1dd3da56d..000000000 --- a/engine/model/calliope.py +++ /dev/null @@ -1,12 +0,0 @@ -from datetime import datetime - -from engine.capulet_engine import CapuletEngine - - -class Calliope(CapuletEngine): - def needs_service(self): - service_threshold_date = self.last_service_date.replace(year=self.last_service_date.year + 2) - if service_threshold_date < datetime.today().date() or self.engine_should_be_serviced(): - return True - else: - return False diff --git a/engine/model/glissade.py b/engine/model/glissade.py deleted file mode 100644 index e1b16ad27..000000000 --- a/engine/model/glissade.py +++ /dev/null @@ -1,12 +0,0 @@ -from datetime import datetime - -from engine.willoughby_engine import WilloughbyEngine - - -class Glissade(WilloughbyEngine): - def needs_service(self): - service_threshold_date = self.last_service_date.replace(year=self.last_service_date.year + 2) - if service_threshold_date < datetime.today().date() or self.engine_should_be_serviced(): - return True - else: - return False diff --git a/engine/model/palindrome.py b/engine/model/palindrome.py deleted file mode 100644 index 590864bc8..000000000 --- a/engine/model/palindrome.py +++ /dev/null @@ -1,12 +0,0 @@ -from datetime import datetime - -from engine.sternman_engine import SternmanEngine - - -class Palindrome(SternmanEngine): - def needs_service(self): - service_threshold_date = self.last_service_date.replace(year=self.last_service_date.year + 4) - if service_threshold_date < datetime.today().date() or self.engine_should_be_serviced(): - return True - else: - return False diff --git a/engine/model/rorschach.py b/engine/model/rorschach.py deleted file mode 100644 index b9eedc91d..000000000 --- a/engine/model/rorschach.py +++ /dev/null @@ -1,12 +0,0 @@ -from datetime import datetime - -from engine.willoughby_engine import WilloughbyEngine - - -class Rorschach(WilloughbyEngine): - def needs_service(self): - service_threshold_date = self.last_service_date.replace(year=self.last_service_date.year + 4) - if service_threshold_date < datetime.today().date() or self.engine_should_be_serviced(): - return True - else: - return False diff --git a/engine/model/thovex.py b/engine/model/thovex.py deleted file mode 100644 index eac5707f0..000000000 --- a/engine/model/thovex.py +++ /dev/null @@ -1,12 +0,0 @@ -from datetime import datetime - -from engine.capulet_engine import CapuletEngine - - -class Thovex(CapuletEngine): - def needs_service(self): - service_threshold_date = self.last_service_date.replace(year=self.last_service_date.year + 4) - if service_threshold_date < datetime.today().date() or self.engine_should_be_serviced(): - return True - else: - return False diff --git a/engine/sternman_engine.py b/engine/sternman_engine.py deleted file mode 100644 index 72d8b5ab3..000000000 --- a/engine/sternman_engine.py +++ /dev/null @@ -1,15 +0,0 @@ -from abc import ABC - -from car import Car - - -class SternmanEngine(Car, ABC): - def __init__(self, last_service_date, warning_light_is_on): - super().__init__(last_service_date) - self.warning_light_is_on = warning_light_is_on - - def engine_should_be_serviced(self): - if self.warning_light_is_on: - return True - else: - return False diff --git a/engine/willoughby_engine.py b/engine/willoughby_engine.py deleted file mode 100644 index e5e0dc581..000000000 --- a/engine/willoughby_engine.py +++ /dev/null @@ -1,13 +0,0 @@ -from abc import ABC - -from car import Car - - -class WilloughbyEngine(Car, ABC): - def __init__(self, last_service_date, current_mileage, last_service_mileage): - super().__init__(last_service_date) - self.current_mileage = current_mileage - self.last_service_mileage = last_service_mileage - - def engine_should_be_serviced(self): - return self.current_mileage - self.last_service_mileage > 60000 From f49a5b12a2421dceb5f3c35efd046249d1fb9ab2 Mon Sep 17 00:00:00 2001 From: Mrinal Pramanick Date: Mon, 13 Nov 2023 12:57:29 +0530 Subject: [PATCH 3/5] Added : Main Car factory --- car_factory.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/car_factory.py b/car_factory.py index e69de29bb..e738a06ba 100644 --- a/car_factory.py +++ b/car_factory.py @@ -0,0 +1,32 @@ +from car_module import Car +from car_module.components.battery import NubbinBattery, SpliderBattery +from car_module.components.engine import CapuletEngine, SternmanEngine, WillounghbyEngine +from datetime import date + +class CarFactory : + def create_calliope(current_date : date, last_sevice_date : date, current_mileage : int, last_service_mileage : int) -> Car: + calliope_engine = CapuletEngine(current_mileage=current_mileage, last_service_mileage=last_service_mileage) + calliope_battery = SpliderBattery(current_date=current_date, last_service_date=last_sevice_date) + return Car(engine=calliope_engine, battery=calliope_battery) + + + def create_glissade (current_date : date, last_service_date : date, current_mileage: int, last_service_mileage : int) -> Car : + glissad_engine = WillounghbyEngine(current_mileage=current_mileage, last_service_mileage=last_service_mileage) + glissad_battery = SpliderBattery(current_date=current_date, last_service_date=last_service_date) + return Car(engine=glissad_engine, battery=glissad_battery) + + def create_palindrome (current_date : date, last_service_date : date, warning_light_on : bool) -> Car: + palindrome_engine = SternmanEngine(warning_light_is_on=warning_light_on) + palindrome_battery = SpliderBattery(current_date=current_date, last_service_date=last_service_date) + return Car(engine=palindrome_engine, battery=palindrome_battery) + + def create_rorschach (current_date : date, last_service_date : date, current_mileage : int, last_service_mileage : int) -> Car: + rorschach_engine = WillounghbyEngine(current_mileage=current_mileage, last_service_mileage=last_service_mileage) + rorschach_battery = NubbinBattery(current_date=current_date, last_service_date=last_service_date) + return Car(engine=rorschach_engine, battery=rorschach_battery) + + def create_thovex (current_date : date, last_service_date : date, current_mileage : int, last_service_mileage : int) -> Car : + thovex_engine = CapuletEngine(current_mileage=current_mileage, last_service_mileage=last_service_mileage) + thovex_battery = NubbinBattery(current_date=current_date, last_service_date=last_service_date) + + return Car(engine=thovex_engine, battery=thovex_battery) \ No newline at end of file From 807c13514d7b2f7caeb1a2e621c7334628a2664c Mon Sep 17 00:00:00 2001 From: Mrinal Pramanick Date: Mon, 13 Nov 2023 12:58:34 +0530 Subject: [PATCH 4/5] Fixed : Bug --- car_module/components/battery/__init__.py | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 car_module/components/battery/__init__.py diff --git a/car_module/components/battery/__init__.py b/car_module/components/battery/__init__.py new file mode 100644 index 000000000..03f60e800 --- /dev/null +++ b/car_module/components/battery/__init__.py @@ -0,0 +1,3 @@ +from .nubbin_Battery import NubbinBattery +from .spindler_Battery import SpliderBattery +from .batter_Interface import Battery \ No newline at end of file From 34d0eeb81ddc80feab9cb2c7158cdbc5abbd3972 Mon Sep 17 00:00:00 2001 From: Mrinal Pramanick Date: Mon, 13 Nov 2023 13:42:36 +0530 Subject: [PATCH 5/5] Added New Data --- test/{ => test_Battery}/__init__.py | 0 test/test_Battery/test_NubbinBattery.py | 16 ++ test/test_Battery/test_SpindlerBattery.py | 16 ++ test/test_car.py | 188 ---------------------- 4 files changed, 32 insertions(+), 188 deletions(-) rename test/{ => test_Battery}/__init__.py (100%) create mode 100644 test/test_Battery/test_NubbinBattery.py create mode 100644 test/test_Battery/test_SpindlerBattery.py delete mode 100644 test/test_car.py diff --git a/test/__init__.py b/test/test_Battery/__init__.py similarity index 100% rename from test/__init__.py rename to test/test_Battery/__init__.py diff --git a/test/test_Battery/test_NubbinBattery.py b/test/test_Battery/test_NubbinBattery.py new file mode 100644 index 000000000..0c3978f84 --- /dev/null +++ b/test/test_Battery/test_NubbinBattery.py @@ -0,0 +1,16 @@ +import unittest +from car_module.components.battery import NubbinBattery +from datetime import date + +class TestNubbinBattery(unittest.TestCase): + def test_needs_service_true_case(self): + current_date = date.today() + last_service_date = current_date.replace(year=current_date.year - 5) + nubbin = NubbinBattery(current_date, last_service_date) + self.assertTrue(nubbin.needs_service()) + + def test_need_service_false_case(self): + current_date = date.today() + last_service_date = current_date.replace(year=current_date.year - 1) + nubbin = NubbinBattery(current_date, last_service_date) + self.assertFalse(nubbin.needs_service()) \ No newline at end of file diff --git a/test/test_Battery/test_SpindlerBattery.py b/test/test_Battery/test_SpindlerBattery.py new file mode 100644 index 000000000..952dcb735 --- /dev/null +++ b/test/test_Battery/test_SpindlerBattery.py @@ -0,0 +1,16 @@ +import unittest +from car_module.components.battery import SpliderBattery +from datetime import date + +class TestSplinderBattery (unittest.TestCase): + def test_check_needs_service_true_case(self): + current_date = date.today() + last_service_date = current_date.replace(year=current_date.year - 3) + nubbin = SpliderBattery(current_date,last_service_date) + self.assertTrue(nubbin.needs_service()) + + def test_check_needs_service_false_case(self): + current_date = date.today() + last_service_date = current_date.replace(year=current_date.year-1) + nubbin = SpliderBattery(current_date,last_service_date) + self.assertFalse(nubbin.needs_service()) \ No newline at end of file diff --git a/test/test_car.py b/test/test_car.py deleted file mode 100644 index f5994670d..000000000 --- a/test/test_car.py +++ /dev/null @@ -1,188 +0,0 @@ -import unittest -from datetime import datetime - -from engine.model.calliope import Calliope -from engine.model.glissade import Glissade -from engine.model.palindrome import Palindrome -from engine.model.rorschach import Rorschach -from engine.model.thovex import Thovex - - -class TestCalliope(unittest.TestCase): - def test_battery_should_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 3) - current_mileage = 0 - last_service_mileage = 0 - - car = Calliope(last_service_date, current_mileage, last_service_mileage) - self.assertTrue(car.needs_service()) - - def test_battery_should_not_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 1) - current_mileage = 0 - last_service_mileage = 0 - - car = Calliope(last_service_date, current_mileage, last_service_mileage) - self.assertFalse(car.needs_service()) - - def test_engine_should_be_serviced(self): - last_service_date = datetime.today().date() - current_mileage = 30001 - last_service_mileage = 0 - - car = Calliope(last_service_date, current_mileage, last_service_mileage) - self.assertTrue(car.needs_service()) - - def test_engine_should_not_be_serviced(self): - last_service_date = datetime.today().date() - current_mileage = 30000 - last_service_mileage = 0 - - car = Calliope(last_service_date, current_mileage, last_service_mileage) - self.assertFalse(car.needs_service()) - - -class TestGlissade(unittest.TestCase): - def test_battery_should_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 3) - current_mileage = 0 - last_service_mileage = 0 - - car = Glissade(last_service_date, current_mileage, last_service_mileage) - self.assertTrue(car.needs_service()) - - def test_battery_should_not_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 1) - current_mileage = 0 - last_service_mileage = 0 - - car = Glissade(last_service_date, current_mileage, last_service_mileage) - self.assertFalse(car.needs_service()) - - def test_engine_should_be_serviced(self): - last_service_date = datetime.today().date() - current_mileage = 60001 - last_service_mileage = 0 - - car = Glissade(last_service_date, current_mileage, last_service_mileage) - self.assertTrue(car.needs_service()) - - def test_engine_should_not_be_serviced(self): - last_service_date = datetime.today().date() - current_mileage = 60000 - last_service_mileage = 0 - - car = Glissade(last_service_date, current_mileage, last_service_mileage) - self.assertFalse(car.needs_service()) - - -class TestPalindrome(unittest.TestCase): - def test_battery_should_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 5) - warning_light_is_on = False - - car = Palindrome(last_service_date, warning_light_is_on) - self.assertTrue(car.needs_service()) - - def test_battery_should_not_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 3) - warning_light_is_on = False - - car = Palindrome(last_service_date, warning_light_is_on) - self.assertFalse(car.needs_service()) - - def test_engine_should_be_serviced(self): - last_service_date = datetime.today().date() - warning_light_is_on = True - - car = Palindrome(last_service_date, warning_light_is_on) - self.assertTrue(car.needs_service()) - - def test_engine_should_not_be_serviced(self): - last_service_date = datetime.today().date() - warning_light_is_on = False - - car = Palindrome(last_service_date, warning_light_is_on) - self.assertFalse(car.needs_service()) - - -class TestRorschach(unittest.TestCase): - def test_battery_should_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 5) - current_mileage = 0 - last_service_mileage = 0 - - car = Rorschach(last_service_date, current_mileage, last_service_mileage) - self.assertTrue(car.needs_service()) - - def test_battery_should_not_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 3) - current_mileage = 0 - last_service_mileage = 0 - - car = Rorschach(last_service_date, current_mileage, last_service_mileage) - self.assertFalse(car.needs_service()) - - def test_engine_should_be_serviced(self): - last_service_date = datetime.today().date() - current_mileage = 60001 - last_service_mileage = 0 - - car = Rorschach(last_service_date, current_mileage, last_service_mileage) - self.assertTrue(car.needs_service()) - - def test_engine_should_not_be_serviced(self): - last_service_date = datetime.today().date() - current_mileage = 60000 - last_service_mileage = 0 - - car = Rorschach(last_service_date, current_mileage, last_service_mileage) - self.assertFalse(car.needs_service()) - - -class TestThovex(unittest.TestCase): - def test_battery_should_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 5) - current_mileage = 0 - last_service_mileage = 0 - - car = Thovex(last_service_date, current_mileage, last_service_mileage) - self.assertTrue(car.needs_service()) - - def test_battery_should_not_be_serviced(self): - today = datetime.today().date() - last_service_date = today.replace(year=today.year - 3) - current_mileage = 0 - last_service_mileage = 0 - - car = Thovex(last_service_date, current_mileage, last_service_mileage) - self.assertFalse(car.needs_service()) - - def test_engine_should_be_serviced(self): - last_service_date = datetime.today().date() - current_mileage = 30001 - last_service_mileage = 0 - - car = Thovex(last_service_date, current_mileage, last_service_mileage) - self.assertTrue(car.needs_service()) - - def test_engine_should_not_be_serviced(self): - last_service_date = datetime.today().date() - current_mileage = 30000 - last_service_mileage = 0 - - car = Thovex(last_service_date, current_mileage, last_service_mileage) - self.assertFalse(car.needs_service()) - - -if __name__ == '__main__': - unittest.main()