mirror of
https://github.com/Textualize/textual.git
synced 2025-10-17 02:38:12 +03:00
Testing two-way mapping
This commit is contained in:
@@ -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)
|
||||
|
||||
56
tests/test_two_way_mapping.py
Normal file
56
tests/test_two_way_mapping.py
Normal 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
|
||||
Reference in New Issue
Block a user