summary refs log tree commit diff stats
path: root/testing/test_examples.py
blob: 02532cc7085ebe370ff482d2c56d1d19a3eb5421 (plain) (blame)
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
import abdl

def test_basic_example():
    m = next(abdl.match("->X:?$dict->Y", {"foo": 1, "bar": {"baz": 2}}, {'dict': dict}))
    assert m['X'][0] == 'bar'
    assert m['Y'][0] == 'baz'
    assert m['Y'][1] == 2

def test_basic_2():
    m = next(abdl.match("->'projects':?$d->P/[0-9a-fA-F]{40}|[0-9a-fA-F]{64}/?:?$d->U:?$d->B", {"projects": {"385e734a52e13949a7a5c71827f6de920dbfea43": {"https://soniex2.autistic.space/git-repos/ganarchy.git": {"HEAD": {"active": True}}}}}, {'d': dict}))
    assert m['P'][0] == "385e734a52e13949a7a5c71827f6de920dbfea43"
    assert m['U'][0] == "https://soniex2.autistic.space/git-repos/ganarchy.git"
    assert m['B'][0] == "HEAD"
    assert m['B'][1] == {"active": True}

def test_spaces():
    pat = abdl.compile("""-> 'projects'?
                             -> commit /[0-9a-fA-F]{40}|[0-9a-fA-F]{64}/? :?$dict
                                -> url :?$dict
                                   -> branch :?$dict""", {'dict': dict})
    data = {"projects": {"385e734a52e13949a7a5c71827f6de920dbfea43": {"https://soniex2.autistic.space/git-repos/ganarchy.git": {"HEAD": {"active": True}}}}}
    m = next(pat.match(data))
    assert m['commit'][0] == "385e734a52e13949a7a5c71827f6de920dbfea43"
    assert m['url'][0] == "https://soniex2.autistic.space/git-repos/ganarchy.git"
    assert m['branch'][0] == "HEAD"
    assert m['branch'][1] == {"active": True}