Testing two-way mapping

This commit is contained in:
Darren Burns
2023-01-23 10:06:17 +00:00
parent 38179451ef
commit 2b7c569811
2 changed files with 57 additions and 1 deletions

View File

@@ -14,7 +14,7 @@ class TwoWayMapping(Generic[Key, Value]):
def __init__(self, initial: dict[Key, Value]) -> None:
self._forward: dict[Key, Value] = initial
self._reverse: dict[Value, Key] = {value: key for key, value in initial}
self._reverse: dict[Value, Key] = {value: key for key, value in initial.items()}
def __setitem__(self, key: Key, value: Value) -> None:
self._forward.__setitem__(key, value)

View File

@@ -0,0 +1,56 @@
import pytest
from textual._two_way_mapping import TwoWayMapping
@pytest.fixture
def map():
return TwoWayMapping(
{
1: 10,
2: 20,
3: 30,
}
)
def test_get(map):
assert map.get(1) == 10
def test_get_default_none(map):
assert map.get(9999) is None
def test_get_default_supplied(map):
assert map.get(9999, -123) == -123
def test_get_key(map):
assert map.get_key(30) == 3
def test_get_key_default_none(map):
assert map.get_key(9999) is None
def test_get_key_default_supplied(map):
assert map.get_key(9999, -123) == -123
def test_set_item(map):
map[40] = 400
assert map.get(40) == 400
assert map.get_key(400) == 40
def test_len(map):
assert len(map) == 3
def test_delitem(map):
assert map.get(3) == 30
assert map.get_key(30) == 3
del map[3]
assert map.get(3) is None
assert map.get_key(30) is None