42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
import pytest
|
|
|
|
from src.basic_data_handling._dynamic_input import ContainsDynamicDict
|
|
|
|
|
|
def test_contains_dynamic_dict_basic_lookup():
|
|
d = ContainsDynamicDict({
|
|
'value': ('x', {'_dynamic': 'number'}),
|
|
'fixed': 'y',
|
|
})
|
|
|
|
# direct behavior
|
|
assert 'value' in d
|
|
assert d['value'] == ('x', {'_dynamic': 'number'})
|
|
|
|
# dynamic numeric key lookup
|
|
assert 'value1' in d
|
|
assert d['value1'] == ('x', {'_dynamic': 'number'})
|
|
assert 'value999' in d
|
|
assert d['value999'] == ('x', {'_dynamic': 'number'})
|
|
|
|
# non-dynamic key and fallback
|
|
assert 'fixed' in d
|
|
assert d['fixed'] == 'y'
|
|
|
|
# non-matching key should not be present
|
|
assert 'novalue' not in d
|
|
with pytest.raises(KeyError):
|
|
_ = d['novalue']
|
|
|
|
|
|
def test_contains_dynamic_dict_partial_prefix_not_numeric():
|
|
d = ContainsDynamicDict({'val': ('z', {'_dynamic': 'number'})})
|
|
|
|
assert 'val' in d
|
|
assert d['val'] == ('z', {'_dynamic': 'number'})
|
|
assert 'val1' in d
|
|
assert d['val1'] == ('z', {'_dynamic': 'number'})
|
|
assert 'valx' not in d
|
|
with pytest.raises(KeyError):
|
|
_ = d['valx']
|