From 985684fd0444230c18b2a41733a501b304773180 Mon Sep 17 00:00:00 2001 From: synkarius Date: Sat, 26 Oct 2019 14:32:25 -0400 Subject: [PATCH] refs #385, #44: add unit tests for TreeNode --- .../lib/merge/selfmod/tree_rule/tree_node.py | 2 - tests/lib/merge/selfmod/__init__.py | 0 tests/lib/merge/selfmod/tree_rule/__init__.py | 0 .../merge/selfmod/tree_rule/test_treeNode.py | 62 +++++++++++++++++++ 4 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 tests/lib/merge/selfmod/__init__.py create mode 100644 tests/lib/merge/selfmod/tree_rule/__init__.py create mode 100644 tests/lib/merge/selfmod/tree_rule/test_treeNode.py diff --git a/castervoice/lib/merge/selfmod/tree_rule/tree_node.py b/castervoice/lib/merge/selfmod/tree_rule/tree_node.py index 399581063..02bba142f 100644 --- a/castervoice/lib/merge/selfmod/tree_rule/tree_node.py +++ b/castervoice/lib/merge/selfmod/tree_rule/tree_node.py @@ -1,5 +1,3 @@ -from dragonfly import ActionBase - from castervoice.lib.merge.selfmod.tree_rule.invalid_tree_node_path_error import InvalidTreeNodePathError diff --git a/tests/lib/merge/selfmod/__init__.py b/tests/lib/merge/selfmod/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/lib/merge/selfmod/tree_rule/__init__.py b/tests/lib/merge/selfmod/tree_rule/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/lib/merge/selfmod/tree_rule/test_treeNode.py b/tests/lib/merge/selfmod/tree_rule/test_treeNode.py new file mode 100644 index 000000000..208b3c7a4 --- /dev/null +++ b/tests/lib/merge/selfmod/tree_rule/test_treeNode.py @@ -0,0 +1,62 @@ +from unittest import TestCase + +from castervoice.lib.actions import Text +from castervoice.lib.merge.selfmod.tree_rule.invalid_tree_node_path_error import InvalidTreeNodePathError +from castervoice.lib.merge.selfmod.tree_rule.tree_node import TreeNode + +_TN = TreeNode +_TEST_NODES = _TN("zero", Text("L-0"), [ + _TN("one alpha", Text("L-1A"), [ + _TN("two alpha", Text("L-2A"), [ + _TN("three alpha", Text("L-3A")), + _TN("three bravo", Text("L-3B")), + _TN("three charlie", Text("L-3C")) + ]), + _TN("two bravo", Text("L-2B")) + ]), + _TN("one bravo", Text("L-1B")), + _TN("one charlie", Text("L-1C")) + ]) + + +class TestTreeNode(TestCase): + + def test_get_nodes_along_path_success_depth_0(self): + nodes = TreeNode.get_nodes_along_path([_TEST_NODES], []) + + self.assertEqual(1, len(nodes)) + self.assertSetEqual(set(["zero"]), + set([tn.get_spec() for tn in nodes])) + + def test_get_nodes_along_path_success_depth_1(self): + nodes = TreeNode.get_nodes_along_path([_TEST_NODES], ["zero"]) + + self.assertEqual(3, len(nodes)) + self.assertSetEqual(set(["one alpha", "one bravo", "one charlie"]), + set([tn.get_spec() for tn in nodes])) + + def test_get_nodes_along_path_success_depth_2(self): + nodes = TreeNode.get_nodes_along_path([_TEST_NODES], ["zero", "one alpha"]) + + self.assertEqual(2, len(nodes)) + self.assertSetEqual(set(["two alpha", "two bravo"]), + set([tn.get_spec() for tn in nodes])) + + def test_get_nodes_along_path_success_depth_3(self): + nodes = TreeNode.get_nodes_along_path([_TEST_NODES], ["zero", "one alpha", "two alpha"]) + + self.assertEqual(3, len(nodes)) + self.assertSetEqual(set(["three alpha", "three bravo", "three charlie"]), + set([tn.get_spec() for tn in nodes])) + + def test_get_nodes_along_path_success_depth_4(self): + nodes = TreeNode.get_nodes_along_path([_TEST_NODES], ["zero", "one alpha", "two alpha", "three alpha"]) + + self.assertEqual(0, len(nodes)) + self.assertSetEqual(frozenset(), + set([tn.get_spec() for tn in nodes])) + + def test_get_nodes_along_path_error(self): + with self.assertRaises(InvalidTreeNodePathError) as context: + TreeNode.get_nodes_along_path([_TEST_NODES], ["zero", "one alpha", "two alpha", "three delta"]) + self.assertTrue("Broken TreeNode path:" in context.exception.message)