added s examples.

This commit is contained in:
didier amyot committed 2023-12-01 08:13:14 -05:00
1 parent 9de891b92c
commit eace153f2d
7 files changed
+102

No files matched your search

View File
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1,22 @@
# file_manager_srp.py
import zlib
from pathlib import Path
class FileManager:
def __init__(self, filename: str | Path):
self.path = Path(filename)
def read(self) -> str:
return self.path.read_text("utf-8")
def write(self, data: str) -> None:
self.path.write_text(data, "utf-8")
def compress(self) -> None:
compressed_data = zlib.compress(self.path.read_bytes())
self.path.write_bytes(compressed_data)
def decompress(self) -> None:
decompressed_data = zlib.decompress(self.path.read_bytes())
self.path.write_bytes(decompressed_data)
@@ -0,0 +1,24 @@
from pathlib import Path
from _pytest._py.path import LocalPath
from solid.single_responsability.file_manager import FileManager
class TestFileManagerTest:
def test_happy_path(self, tmpdir: LocalPath):
file_ = Path(tmpdir) / "something"
service = FileManager(file_)
service.write("le petit canard")
assert file_.is_file()
assert service.read() == "le petit canard"
def test_compressed_happy_path(self, tmpdir: LocalPath):
file_ = Path(tmpdir) / "something"
service = FileManager(file_)
service.write("le petit canard")
service.compress()
assert file_.read_bytes() != "le petit canard".encode('utf-8')
service.decompress()
assert service.read() == "le petit canard"
@@ -0,0 +1,37 @@
class User:
def __init__(self, name):
self.name = name
self.isAdmin = False
class User2:
def __init__(self, name):
self.name = name
self.is_admin = False
class Admin(User2):
def __init__(self, name):
super().__init__(name)
self.is_admin = True
users = [
User2('walid'),
User2('haikel'),
User2('manel'),
Admin('tristan'),
Admin('didier'),
User('jonathan'),
User('samuel'),
]
def get_user(user_name: str, is_admin: bool = False, consider_old_users: bool=False) -> User | User2 | Admin | None:
for user in users:
if user_name == user.name:
if isinstance(user, User) and not consider_old_users:
continue
if isinstance(user, User2) and user.is_admin and not is_admin:
continue
return user
@@ -0,0 +1,18 @@
from solid.single_responsability.simple_function import get_user
class TestGetUser:
def test_happy_path(self):
assert get_user("marie-eve") is None
assert get_user("walid").name == 'walid'
def test_admin(self):
assert get_user("tristan") is None
assert get_user("tristan", is_admin=True) is not None
assert get_user("tristan", is_admin=True).name == "tristan"
def test_old_users(self):
assert get_user("jonathan") is None
assert get_user("jonathan", is_admin=True) is None
assert get_user("jonathan", consider_old_users=True) is not None
assert get_user("jonathan", consider_old_users=True).name == "jonathan"