71 lines
1.8 KiB
Python
71 lines
1.8 KiB
Python
import unittest
|
|
|
|
|
|
class FileWidgetWalk(unittest.TestCase):
|
|
|
|
def test_walk_large_tree(self):
|
|
from kivy.uix.boxlayout import BoxLayout
|
|
from kivy.uix.label import Label
|
|
''' the tree
|
|
BoxLayout
|
|
BoxLayout
|
|
Label
|
|
10 labels
|
|
BoxLayout
|
|
10 labels
|
|
BoxLayout
|
|
Label
|
|
Label
|
|
'''
|
|
|
|
root = BoxLayout()
|
|
tree = [root]
|
|
|
|
box = BoxLayout()
|
|
tree.append(box)
|
|
root.add_widget(box)
|
|
|
|
label = Label()
|
|
tree.append(label)
|
|
root.add_widget(label)
|
|
for i in range(10):
|
|
tree.append(Label())
|
|
label.add_widget(tree[-1])
|
|
|
|
box = BoxLayout()
|
|
tree.append(box)
|
|
root.add_widget(box)
|
|
for i in range(10):
|
|
tree.append(Label())
|
|
box.add_widget(tree[-1])
|
|
|
|
box = BoxLayout()
|
|
tree.append(box)
|
|
root.add_widget(box)
|
|
tree.append(Label())
|
|
box.add_widget(tree[-1])
|
|
|
|
label = Label()
|
|
tree.append(label)
|
|
root.add_widget(label)
|
|
|
|
def rotate(l, n):
|
|
return l[n:] + l[:n]
|
|
|
|
for i in range(len(tree)):
|
|
rotated = rotate(tree, i) # shift list to start at i
|
|
# walk starting with i
|
|
walked = [n for n in tree[i].walk(loopback=True)]
|
|
walked_reversed = [n for n in tree[i].walk_reverse(loopback=True)]
|
|
|
|
self.assertListEqual(rotated, walked)
|
|
self.assertListEqual(walked, list(reversed(walked_reversed)))
|
|
|
|
def test_walk_single(self):
|
|
from kivy.uix.label import Label
|
|
|
|
label = Label()
|
|
self.assertListEqual([n for n in label.walk(loopback=True)], [label])
|
|
self.assertListEqual([n for n in label.walk_reverse(loopback=True)],
|
|
[label])
|