File size: 1,690 Bytes
60eb8f0 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 6cd55ac b4d68d5 60eb8f0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
from sparky.utils.decompose import select, selecta, sliceable
def test_sliceable():
from collections import namedtuple
Foo = sliceable(namedtuple("Foo", "a,b,c,d"))
foo = Foo(1, 2, 3, 4)
assert (2,) == foo["b"]
assert (1, 3) == foo["a c"]
assert (1, 3) == foo[["a", "c"]]
assert (1, 3) == foo[[0, 2]]
assert (2, 3, 4) == foo["b:d"]
assert foo == (1, 2, 3, 4)
def test_select():
data = {"a": 1, "b": 2, "c": 3, "d": 4}
# Single key access
assert (2,) == select(data, "b")
# Multiple keys with spaces
assert (1, 3) == select(data, "a c")
# Multiple keys as list
assert (1, 3) == select(data, ["a", "c"])
# Handles various string formats
assert (1, 3) == select(data, "a,c")
assert (1, 3) == select(data, "a, c")
# Missing keys return None
assert (1, None, 3) == select(data, "a x c")
# Works with custom objects
class Config:
def get(self, key, default=None):
return getattr(self, key, default)
cfg = Config()
cfg.host = "localhost"
cfg.port = 5432
assert ("localhost", 5432) == select(cfg, "host,port")
def test_selecta():
from collections import namedtuple
Foo = namedtuple("Foo", "a,b,c,d")
data = Foo(1, 2, 3, 4)
# Single key access
assert (2,) == selecta(data, "b")
# Multiple keys with spaces
assert (1, 3) == selecta(data, "a c")
# Multiple keys as list
assert (1, 3) == selecta(data, ["a", "c"])
# Handles various string formats
assert (1, 3) == selecta(data, "a,c")
assert (1, 3) == selecta(data, "a, c")
# Missing keys return None
assert (1, None, 3) == selecta(data, "a x c")
|