File: test_node_sep.py

package info (click to toggle)
anytree 2.12.1-3.1
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 872 kB
  • sloc: python: 4,044; makefile: 12
file content (75 lines) | stat: -rw-r--r-- 2,387 bytes parent folder | download
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
70
71
72
73
74
75
# -*- coding: utf-8 -*-
"""Test custom node separator."""

import six

import anytree as at

from .helper import assert_raises, eq_


class MyNode(at.Node):

    separator = "|"


def test_render():
    """Render string cast."""
    root = MyNode("root")
    s0 = MyNode("sub0", parent=root)
    MyNode("sub0B", parent=s0)
    MyNode("sub0A", parent=s0)
    MyNode("sub1", parent=root)
    r = at.RenderTree(root)

    assert str(r).splitlines() == [
        "MyNode('|root')",
        "├── MyNode('|root|sub0')",
        "│   ├── MyNode('|root|sub0|sub0B')",
        "│   └── MyNode('|root|sub0|sub0A')",
        "└── MyNode('|root|sub1')",
    ]


def test_get():
    """Get."""
    top = MyNode("top", parent=None)
    sub0 = MyNode("sub0", parent=top)
    sub0sub0 = MyNode("sub0sub0", parent=sub0)
    sub0sub1 = MyNode("sub0sub1", parent=sub0)
    sub1 = MyNode("sub1", parent=top)
    r = at.Resolver("name")
    eq_(r.get(top, "sub0|sub0sub0"), sub0sub0)
    eq_(r.get(sub1, ".."), top)
    eq_(r.get(sub1, "..|sub0|sub0sub1"), sub0sub1)
    eq_(r.get(sub1, "."), sub1)
    eq_(r.get(sub1, ""), sub1)
    with assert_raises(at.ChildResolverError, "MyNode('|top') has no child sub2. Children are: 'sub0', 'sub1'."):
        r.get(top, "sub2")
    eq_(r.get(sub0sub0, "|top"), top)
    eq_(r.get(sub0sub0, "|top|sub0"), sub0)
    with assert_raises(at.ResolverError, "root node missing. root is '|top'."):
        r.get(sub0sub0, "|")
    with assert_raises(at.ResolverError, "unknown root node '|bar'. root is '|top'."):
        r.get(sub0sub0, "|bar")


def test_glob():
    """Wildcard."""
    top = MyNode("top", parent=None)
    sub0 = MyNode("sub0", parent=top)
    sub0sub0 = MyNode("sub0", parent=sub0)
    sub0sub1 = MyNode("sub1", parent=sub0)
    sub0sub1sub0 = MyNode("sub0", parent=sub0sub1)
    MyNode("sub1", parent=sub0sub1)
    sub1 = MyNode("sub1", parent=top)
    sub1sub0 = MyNode("sub0", parent=sub1)
    r = at.Resolver()
    eq_(r.glob(top, "*|*|sub0"), [sub0sub1sub0])

    eq_(r.glob(top, "sub0|sub?"), [sub0sub0, sub0sub1])
    eq_(r.glob(sub1, "..|.|*"), [sub0, sub1])
    eq_(r.glob(top, "*|*"), [sub0sub0, sub0sub1, sub1sub0])
    eq_(r.glob(top, "*|sub0"), [sub0sub0, sub1sub0])
    with assert_raises(at.ChildResolverError, "MyNode('|top|sub1') has no child sub1. Children are: 'sub0'."):
        r.glob(top, "sub1|sub1")