implement keypad ABC
This commit is contained in:
@@ -1,41 +1,34 @@
|
||||
import pytest
|
||||
import numpy as np
|
||||
|
||||
from src.keypad import Keypad
|
||||
from src.tower_shuffle import TowerShuffle
|
||||
from src.keypad.keypad import (
|
||||
RandomSplitShuffleKeypad,
|
||||
RandomShuffleKeypad,
|
||||
SlidingSplitShuffleKeypad,
|
||||
SlidingTowerShuffleKeypad,
|
||||
)
|
||||
|
||||
|
||||
def test_keypad():
|
||||
keypad = Keypad(
|
||||
def test_key_entry():
|
||||
keypad = RandomShuffleKeypad(
|
||||
keypad=np.array([
|
||||
[8, 9, 10, 11],
|
||||
[0, 5, 2, 3],
|
||||
[4, 1, 6,7]
|
||||
]), k= 3, p=4, keypad_cache=[], tower_shuffler=TowerShuffle.new(3*4))
|
||||
[4, 1, 6, 7]
|
||||
]), k=3, p=4)
|
||||
assert keypad.key_entry([8, 5, 6, 11]) == [0, 1, 2, 0]
|
||||
|
||||
assert keypad.key_entry([8, 5, 6, 11]) == [0,1,2,0]
|
||||
|
||||
def test_split_shuffle():
|
||||
p = 4 # properties_per_key
|
||||
k = 3 # number_of_keys
|
||||
keypad = Keypad.new_keypad(k, p)
|
||||
@pytest.mark.parametrize(
|
||||
"keypad_type, number_of_keys, properties_per_key",
|
||||
[
|
||||
(RandomShuffleKeypad, 3, 4),
|
||||
(RandomSplitShuffleKeypad, 3, 4),
|
||||
(SlidingTowerShuffleKeypad, 3, 4),
|
||||
(SlidingSplitShuffleKeypad, 3, 4),
|
||||
]
|
||||
)
|
||||
def test_keypad_shuffle(keypad_type, number_of_keys, properties_per_key):
|
||||
keypad = keypad_type.new_keypad(number_of_keys, properties_per_key)
|
||||
print(keypad.keypad)
|
||||
keypad.split_shuffle()
|
||||
keypad.shuffle()
|
||||
print(keypad.keypad)
|
||||
|
||||
|
||||
def test_full_shuffle():
|
||||
p = 4 # properties_per_key
|
||||
k = 3 # number_of_keys
|
||||
keypad = Keypad.new_keypad(k, p)
|
||||
print(keypad.keypad)
|
||||
keypad.full_shuffle()
|
||||
print(keypad.keypad)
|
||||
|
||||
def test_tower_shuffle():
|
||||
p = 4 # properties_per_key
|
||||
k = 3 # number_of_keys
|
||||
keypad = Keypad.new_keypad(k, p)
|
||||
print()
|
||||
for _ in range(10):
|
||||
print(keypad.keypad)
|
||||
keypad.tower_shuffle()
|
||||
|
||||
Reference in New Issue
Block a user