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
|
import pickle
from .. import loadi
def generate_org_lines(num_top_nodes, depth=3, nodes_per_level=1, _level=1):
if depth == 0:
return
for i in range(num_top_nodes):
yield ("*" * _level) + ' {0}-th heading of level {1}'.format(i, _level)
for child in generate_org_lines(
nodes_per_level, depth - 1, nodes_per_level, _level + 1):
yield child
def num_generate_org_lines(num_top_nodes, depth=3, nodes_per_level=1):
if depth == 0:
return 0
return num_top_nodes * (
1 + num_generate_org_lines(
nodes_per_level, depth - 1, nodes_per_level))
def test_picklable() -> None:
num = 1000
depth = 3
nodes_per_level = 1
root = loadi(generate_org_lines(num, depth, nodes_per_level))
assert sum(1 for _ in root) == num_generate_org_lines(num, depth, nodes_per_level) + 1
pickle.dumps(root) # should not fail
|