Refactor (#8)

Co-authored-by: Donovan <donovan.a.kelly@pm.me>
Reviewed-on: https://git.infra.nkode.tech/dkelly/evilnkode/pulls/8
This commit is contained in:
dkelly
2025-09-09 18:22:22 +00:00
parent 6c07d62cbe
commit e24fe3b512
121 changed files with 1259 additions and 8398 deletions

View File

@@ -1,6 +1,14 @@
from src.utils import passcode_generator
from src.keypad.keypad import (
RandomShuffleKeypad,
RandomSplitShuffleKeypad,
SlidingTowerShuffleKeypad,
SlidingSplitShuffleKeypad
)
from src.benchmark import benchmark
import pytest
@pytest.mark.parametrize(
"k, p, n, c, d, runs",
[
@@ -10,6 +18,29 @@ import pytest
def test_passcode_generator(k, p, n, c, d, runs):
for _ in range(runs):
passcode = passcode_generator(k=k, p=p, n=n, c=c, d=d)
passcode_sets = [el//p for el in passcode]
assert c <= len(set(passcode))
passcode_sets = [el // p for el in passcode]
assert c <= len(set(passcode))
assert d <= len(set(passcode_sets))
@pytest.mark.parametrize(
"number_of_keys,properties_per_key,passcode_len,max_tries_before_lockout,complexity,disparity,run_count,keypad",
[
(6, 8, 4, 5, 4, 4, 100, RandomShuffleKeypad),
(6, 8, 4, 5, 4, 4, 100, RandomSplitShuffleKeypad),
(6, 8, 4, 5, 4, 4, 100, SlidingSplitShuffleKeypad),
(6, 8, 4, 5, 4, 4, 100, SlidingTowerShuffleKeypad),
]
)
def test_benchmark(number_of_keys, properties_per_key, passcode_len, max_tries_before_lockout, complexity, disparity,
run_count, keypad):
benchmark(
number_of_keys=number_of_keys,
properties_per_key=properties_per_key,
passcode_len=passcode_len,
max_tries_before_lockout=max_tries_before_lockout,
run_count=run_count,
complexity=complexity,
disparity=disparity,
keypad=keypad.new_keypad(number_of_keys, properties_per_key)
)