def test_depth_first_search(): section = ExperimentSection(make_tree(['session', 'block', 'trial'], {}), ChainMap()) section[1][2].data['foo'] = True key = lambda node: node.data.get('foo', False) search_result = section.depth_first_search(key) assert search_result == [section, section[1], section[1][2]] assert section.depth_first_search(lambda node: False) == []
def test_depth_first_path_search(): section = ExperimentSection(make_tree(['session', 'block', 'trial'], {}), ChainMap()) section[2][1].data['foo'] = True # Target. section[1][2].data['foo'] = True # Red herring. section.data['bar'] = True section[1].data['bar'] = False key = lambda node: node.data.get('foo', False) path_key = lambda node: node.data.get('bar', False) search_result = section.depth_first_search(key, path_key=path_key) assert search_result == [section, section[2], section[2][1]] assert section.depth_first_search(lambda node: True, path_key=lambda node: False) == [] assert section.depth_first_search(lambda node: False, path_key=lambda node: True) == []