Advertisement
ksieradzinski

Untitled

Mar 18th, 2025
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. import pytest
  2. class Battery:
  3. def __init__(self):
  4. self._charge_level = 100
  5.  
  6. def charge(self, amount:int):
  7. if amount < 0:
  8. raise ValueError("Nie można naładować ujemnej ilości energii.")
  9.  
  10. self._charge_level = min(100, self._charge_level + amount)
  11.  
  12. def discharge(self, amount):
  13. if amount < 0:
  14. raise ValueError("Nie można zużyć ujemnej ilości energii.")
  15. if amount > self._charge_level:
  16. raise ValueError("Nie można rozładować baterii poniżej 0%.")
  17.  
  18. self._charge_level -= amount
  19.  
  20. def get_charge_level(self):
  21. return self._charge_level
  22.  
  23.  
  24. class ElectricCar:
  25. def __init__(self, brand: str, model:str):
  26. self.brand = brand
  27. self.model = model
  28. self.battery = Battery()
  29.  
  30. def drive(self, distance):
  31. if distance < 0:
  32. raise ValueError("Nie można przejechać ujemnej odległości.")
  33.  
  34. self.battery.discharge(distance)
  35. print(f"Przejechano {distance} km. Pozostały poziom baterii: {self.battery.get_charge_level()}%")
  36.  
  37. def charge_battery(self, amount):
  38. self.battery.charge(amount)
  39. print(f"Bateria naładowana o {amount}%. Aktualny poziom: {self.battery.get_charge_level()}%")
  40.  
  41. def get_battery_status(self):
  42. return f"Poziom naładowania baterii: {self.battery.get_charge_level()}%"
  43.  
  44.  
  45. def test_battery_initial_charge():
  46. battery = Battery()
  47. assert battery.get_charge_level() == 100
  48.  
  49. def test_battery_charge():
  50. battery = Battery()
  51. battery.charge(10)
  52. assert battery.get_charge_level() == 100 # Nie może przekroczyć 100%
  53. battery.discharge(30)
  54. battery.charge(20)
  55. assert battery.get_charge_level() == 90
  56.  
  57. def test_battery_discharge():
  58. battery = Battery()
  59. battery.discharge(30)
  60. assert battery.get_charge_level() == 70
  61. with pytest.raises(ValueError, match="Nie można rozładować baterii poniżej 0%."):
  62. battery.discharge(100)
  63.  
  64. def test_battery_negative_charge():
  65. battery = Battery()
  66. with pytest.raises(ValueError, match="Nie można naładować ujemnej ilości energii."):
  67. battery.charge(-10)
  68.  
  69. def test_battery_negative_discharge():
  70. battery = Battery()
  71. with pytest.raises(ValueError, match="Nie można zużyć ujemnej ilości energii."):
  72. battery.discharge(-10)
  73.  
  74. def test_electric_car_initial_status():
  75. car = ElectricCar("Tesla", "Model S")
  76. assert car.get_battery_status() == "Poziom naładowania baterii: 100%"
  77.  
  78. def test_electric_car_drive():
  79. car = ElectricCar("Tesla", "Model S")
  80. car.drive(20)
  81. assert car.get_battery_status() == "Poziom naładowania baterii: 80%"
  82. with pytest.raises(ValueError, match="Nie można przejechać ujemnej odległości."):
  83. car.drive(-10)
  84.  
  85. def test_electric_car_charge_battery():
  86. car = ElectricCar("Tesla", "Model S")
  87. car.drive(50)
  88. car.charge_battery(30)
  89. assert car.get_battery_status() == "Poziom naładowania baterii: 80%"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement