Files
evilnkode/tests/test_evilkode.py
2025-09-08 12:11:29 -05:00

35 lines
994 B
Python

import random
import pytest
from src.evilnkode import EvilNKode
from src.keypad.keypad import (
RandomShuffleKeypad,
)
from src.utils import observations
@pytest.fixture
def passcode(number_of_keys, properties_per_key, passcode_len):
return [random.randint(0, number_of_keys * properties_per_key - 1) for _ in range(passcode_len)]
@pytest.mark.parametrize(
"number_of_keys, properties_per_key, passcode_len",
[
(5, 4, 4), # Test case 1
(10, 5, 6), # Test case 2
(8, 4, 5), # Test case 3
]
)
def test_evilkode(number_of_keys, properties_per_key, passcode_len, passcode):
keypad = RandomShuffleKeypad.new_keypad(number_of_keys, properties_per_key)
obs = observations(passcode, keypad)
evilkode = EvilNKode(
observations=obs,
number_of_keys=number_of_keys,
properties_per_key=properties_per_key,
passcode_len=passcode_len,
)
evilout = evilkode.run()
assert evilout.iterations_to_break > 1