Refactor to unified caesar() function with encode/decode support

- Replace separate encrypt/decrypt with shared caesar() function
- Add direction constants (DIRECTION_ENCODE, DIRECTION_DECODE) and
  prompts
- Update main.py to support interactive encode/decode loop
- Keep encrypt/decrypt as wrappers for backward compatibility
- Add tests for caesar() with both directions and error handling
- Update tests for main.py with interactive scenario tests
This commit is contained in:
2026-10-04 13:23:47 +08:00
parent d4b3e6ab19
commit 9d8beb3aef
8 changed files with 139 additions and 33 deletions
+13 -1
View File
@@ -1,4 +1,6 @@
from caesar_cipher import decrypt, encrypt
import pytest
from caesar_cipher import caesar, decrypt, encrypt
from caesar_cipher.env import load_env
@@ -37,3 +39,13 @@ def test_decrypt_roundtrip():
def test_decrypt_wraps_around_alphabet():
assert decrypt("abc", 3) == "xyz"
assert decrypt("def", 29) == "abc"
def test_caesar_encode_and_decode():
assert caesar("hello", 5, "encode") == "mjqqt"
assert caesar("mjqqt", 5, "decode") == "hello"
def test_caesar_unknown_direction():
with pytest.raises(ValueError):
caesar("hello", 5, "sideways")