From 294166cfec245c195443a33803c855575c54a5b1 Mon Sep 17 00:00:00 2001 From: Dave Pearson Date: Tue, 1 Nov 2022 09:58:32 +0000 Subject: [PATCH] Add unit tests for the NodeList class --- tests/test_node_list.py | 72 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 tests/test_node_list.py diff --git a/tests/test_node_list.py b/tests/test_node_list.py new file mode 100644 index 000000000..93093bb89 --- /dev/null +++ b/tests/test_node_list.py @@ -0,0 +1,72 @@ +from textual.widget import Widget +from textual._node_list import NodeList + +def test_empty_list(): + """Does an empty node list report as being empty?""" + assert len(NodeList())==0 + +def test_add_one(): + """Does adding a node to the node list report as having one item?""" + nodes = NodeList() + nodes._append(Widget()) + assert len(nodes)==1 + +def test_repeat_add_one(): + """Does adding the same item to the node list ignore the additional adds?""" + nodes = NodeList() + widget = Widget() + for _ in range(1000): + nodes._append(widget) + assert len(nodes)==1 + +def test_truthy(): + """Does a node list act as a truthy object?""" + nodes = NodeList() + assert not bool(nodes) + nodes._append(Widget()) + assert bool(nodes) + +def test_contains(): + """Can we check if a widget is (not) within the list?""" + widget = Widget() + nodes = NodeList() + assert widget not in nodes + nodes._append(widget) + assert widget in nodes + assert Widget() not in nodes + +def test_remove(): + """Can we remove a widget we've added?""" + widget = Widget() + nodes = NodeList() + nodes._append(widget) + assert widget in nodes + nodes._remove(widget) + assert widget not in nodes + +def test_clear(): + """Can we clear the list?""" + nodes = NodeList() + assert len(nodes)==0 + widgets = [Widget() for _ in range(1000)] + for widget in widgets: + nodes._append(widget) + assert len(nodes)==1000 + for widget in widgets: + assert widget in nodes + nodes._clear() + assert len(nodes)==0 + for widget in widgets: + assert widget not in nodes + +def test_listy(): + nodes = NodeList() + widget1 = Widget() + widget2 = Widget() + nodes._append(widget1) + nodes._append(widget2) + assert list(nodes)==[widget1, widget2] + assert list(reversed(nodes))==[widget2, widget1] + assert nodes[0]==widget1 + assert nodes[1]==widget2 + assert nodes[0:2]==[widget1, widget2]