Source code for wbia.guitool.tests.test_treenode
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function
try:
from wbia.guitool import api_tree_node_cython
if 'api_tree_node_cython' not in globals():
raise ImportError('')
print('[test_treenode] cython ON')
except ImportError:
print('[test_treenode] cython OFF')
from wbia.guitool import api_tree_node
[docs]def test_build_internal_structure():
"""
CommandLine:
python -m wbia.guitool.tests.test_treenode --test-test_build_internal_structure
Example:
>>> # DISABLE_DOCTEST
>>> from wbia.guitool.tests.test_treenode import * # NOQA
>>> test_build_internal_structure()
"""
if 'api_tree_node_cython' in globals():
print('test cython ON')
_test_build_internal_structure(api_tree_node_cython, 'cython')
else:
print('test cython OFF')
_test_build_internal_structure(api_tree_node, 'python')
print('finished all tests')
def _test_build_internal_structure(_module, lang):
import utool as ut
# Test data
N = 6
# N = 2000
def ider_level0():
return range(N)
def ider_level1(input_):
_single = lambda x: [
y for y in range(x ** 2, x ** 2 + max(0, ((N // 1) - x - 1)))
]
if isinstance(input_, list):
return [_single(x) for x in input_]
else:
x = input_
return _single(x)
# Build Structure
ider_list = [ider_level0, ider_level1]
num_levels = len(ider_list)
# TEST RECURSIVE
print('================')
with ut.Timer(lang + ' recursive:'):
if num_levels == 0:
root_id_list = []
else:
root_id_list = ider_list[0]()
root_node1 = _module.TreeNode(-1, None, -1)
level = 0
_module._populate_tree_recursive(
root_node1, root_id_list, num_levels, ider_list, level
)
if N < 10:
print('')
print(api_tree_node.tree_node_string(root_node1, indent=' * '))
print('================')
# with ut.Timer(lang + ' iterative:'):
# # TEST ITERATIVE
# # TODO: Vet this code a bit more.
# root_node2 = _module.TreeNode(-1, None, -1)
# _module._populate_tree_iterative(
# root_node2, num_levels, ider_list)
# if N < 10:
# print('')
# print(api_tree_node.tree_node_string(root_node2, indent=' * '))
print('================')
print('finished %s test' % lang)
if __name__ == '__main__':
"""
CommandLine:
python -m wbia.guitool.tests.test_treenode
python -m wbia.guitool.tests.test_treenode --allexamples
python -m wbia.guitool.tests.test_treenode --allexamples --noface --nosrc
"""
import multiprocessing
multiprocessing.freeze_support() # for win32
import utool as ut # NOQA
ut.doctest_funcs()