xref: /aosp_15_r20/external/fonttools/Tests/misc/treeTools_test.py (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
1*e1fe3e4aSElliott Hughesfrom fontTools.misc.treeTools import build_n_ary_tree
2*e1fe3e4aSElliott Hughesimport pytest
3*e1fe3e4aSElliott Hughes
4*e1fe3e4aSElliott Hughes
5*e1fe3e4aSElliott Hughes@pytest.mark.parametrize(
6*e1fe3e4aSElliott Hughes    "lst, n, expected",
7*e1fe3e4aSElliott Hughes    [
8*e1fe3e4aSElliott Hughes        ([0], 2, [0]),
9*e1fe3e4aSElliott Hughes        ([0, 1], 2, [0, 1]),
10*e1fe3e4aSElliott Hughes        ([0, 1, 2], 2, [[0, 1], 2]),
11*e1fe3e4aSElliott Hughes        ([0, 1, 2], 3, [0, 1, 2]),
12*e1fe3e4aSElliott Hughes        ([0, 1, 2, 3], 2, [[0, 1], [2, 3]]),
13*e1fe3e4aSElliott Hughes        ([0, 1, 2, 3], 3, [[0, 1, 2], 3]),
14*e1fe3e4aSElliott Hughes        ([0, 1, 2, 3, 4], 3, [[0, 1, 2], 3, 4]),
15*e1fe3e4aSElliott Hughes        ([0, 1, 2, 3, 4, 5], 3, [[0, 1, 2], [3, 4, 5]]),
16*e1fe3e4aSElliott Hughes        (list(range(7)), 3, [[0, 1, 2], [3, 4, 5], 6]),
17*e1fe3e4aSElliott Hughes        (list(range(8)), 3, [[0, 1, 2], [3, 4, 5], [6, 7]]),
18*e1fe3e4aSElliott Hughes        (list(range(9)), 3, [[0, 1, 2], [3, 4, 5], [6, 7, 8]]),
19*e1fe3e4aSElliott Hughes        (list(range(10)), 3, [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], 9]),
20*e1fe3e4aSElliott Hughes        (list(range(11)), 3, [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], 9, 10]),
21*e1fe3e4aSElliott Hughes        (list(range(12)), 3, [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [9, 10, 11]]),
22*e1fe3e4aSElliott Hughes        (list(range(13)), 3, [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [9, 10, 11], 12]),
23*e1fe3e4aSElliott Hughes        (
24*e1fe3e4aSElliott Hughes            list(range(14)),
25*e1fe3e4aSElliott Hughes            3,
26*e1fe3e4aSElliott Hughes            [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[9, 10, 11], 12, 13]],
27*e1fe3e4aSElliott Hughes        ),
28*e1fe3e4aSElliott Hughes        (
29*e1fe3e4aSElliott Hughes            list(range(15)),
30*e1fe3e4aSElliott Hughes            3,
31*e1fe3e4aSElliott Hughes            [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [9, 10, 11], [12, 13, 14]],
32*e1fe3e4aSElliott Hughes        ),
33*e1fe3e4aSElliott Hughes        (
34*e1fe3e4aSElliott Hughes            list(range(16)),
35*e1fe3e4aSElliott Hughes            3,
36*e1fe3e4aSElliott Hughes            [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[9, 10, 11], [12, 13, 14], 15]],
37*e1fe3e4aSElliott Hughes        ),
38*e1fe3e4aSElliott Hughes        (
39*e1fe3e4aSElliott Hughes            list(range(23)),
40*e1fe3e4aSElliott Hughes            3,
41*e1fe3e4aSElliott Hughes            [
42*e1fe3e4aSElliott Hughes                [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
43*e1fe3e4aSElliott Hughes                [[9, 10, 11], [12, 13, 14], [15, 16, 17]],
44*e1fe3e4aSElliott Hughes                [[18, 19, 20], 21, 22],
45*e1fe3e4aSElliott Hughes            ],
46*e1fe3e4aSElliott Hughes        ),
47*e1fe3e4aSElliott Hughes        (
48*e1fe3e4aSElliott Hughes            list(range(27)),
49*e1fe3e4aSElliott Hughes            3,
50*e1fe3e4aSElliott Hughes            [
51*e1fe3e4aSElliott Hughes                [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
52*e1fe3e4aSElliott Hughes                [[9, 10, 11], [12, 13, 14], [15, 16, 17]],
53*e1fe3e4aSElliott Hughes                [[18, 19, 20], [21, 22, 23], [24, 25, 26]],
54*e1fe3e4aSElliott Hughes            ],
55*e1fe3e4aSElliott Hughes        ),
56*e1fe3e4aSElliott Hughes        (
57*e1fe3e4aSElliott Hughes            list(range(28)),
58*e1fe3e4aSElliott Hughes            3,
59*e1fe3e4aSElliott Hughes            [
60*e1fe3e4aSElliott Hughes                [
61*e1fe3e4aSElliott Hughes                    [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
62*e1fe3e4aSElliott Hughes                    [[9, 10, 11], [12, 13, 14], [15, 16, 17]],
63*e1fe3e4aSElliott Hughes                    [[18, 19, 20], [21, 22, 23], [24, 25, 26]],
64*e1fe3e4aSElliott Hughes                ],
65*e1fe3e4aSElliott Hughes                27,
66*e1fe3e4aSElliott Hughes            ],
67*e1fe3e4aSElliott Hughes        ),
68*e1fe3e4aSElliott Hughes        (list(range(257)), 256, [list(range(256)), 256]),
69*e1fe3e4aSElliott Hughes        (list(range(258)), 256, [list(range(256)), 256, 257]),
70*e1fe3e4aSElliott Hughes        (list(range(512)), 256, [list(range(256)), list(range(256, 512))]),
71*e1fe3e4aSElliott Hughes        (list(range(512 + 1)), 256, [list(range(256)), list(range(256, 512)), 512]),
72*e1fe3e4aSElliott Hughes        (
73*e1fe3e4aSElliott Hughes            list(range(256**2)),
74*e1fe3e4aSElliott Hughes            256,
75*e1fe3e4aSElliott Hughes            [list(range(k * 256, k * 256 + 256)) for k in range(256)],
76*e1fe3e4aSElliott Hughes        ),
77*e1fe3e4aSElliott Hughes    ],
78*e1fe3e4aSElliott Hughes)
79*e1fe3e4aSElliott Hughesdef test_build_n_ary_tree(lst, n, expected):
80*e1fe3e4aSElliott Hughes    assert build_n_ary_tree(lst, n) == expected
81