Files

70 lines
2.2 KiB
Python

import unittest
from src.ProductedString import ProductedString
class TestProductedString(unittest.TestCase):
def setUp(self):
self.node = ProductedString()
def test_combine_input_lists_two_lists(self):
result = self.node.combine_input_lists(
", ", 0, "\n", list_a=["a", "b"], list_b=["1", "2"]
)
self.assertEqual(
result,
(
"a, 1\na, 2\nb, 1\nb, 2",
["a, 1", "a, 2", "b, 1", "b, 2"],
),
)
def test_combine_input_lists_only_connected_lists_are_used(self):
result = self.node.combine_input_lists(
" | ",
0,
"\n",
list_a=["a"],
list_c=["1", "2"],
list_f=["x"],
ignored="not-a-list",
)
self.assertEqual(
result,
("a | 1 | x\na | 2 | x", ["a | 1 | x", "a | 2 | x"]),
)
def test_combine_input_lists_empty_when_no_lists_are_connected(self):
result = self.node.combine_input_lists(", ", 0, "\n")
self.assertEqual(result, ("", []))
def test_combine_input_lists_filters_empty_strings(self):
result = self.node.combine_input_lists(
", ", 0, "\n", list_a=["a", ""], list_b=["1", ""]
)
self.assertEqual(result, ("a, 1\na\n1", ["a, 1", "a", "1"]))
def test_combine_input_lists_uses_custom_newline_character(self):
result = self.node.combine_input_lists(
", ", 0, " / ", list_a=["a"], list_b=["1", "2"]
)
self.assertEqual(result, ("a, 1 / a, 2", ["a, 1", "a, 2"]))
def test_combine_input_lists_respects_max_results(self):
result = self.node.combine_input_lists(
", ", 3, "\n", list_a=["a", "b"], list_b=["1", "2", "3"]
)
self.assertEqual(
result,
("a, 1\na, 2\na, 3", ["a, 1", "a, 2", "a, 3"]),
)
def test_node_definition_exposes_regular_string_and_custom_list(self):
self.assertEqual(self.node.RETURN_NAMES, ("STRING", "list"))
self.assertEqual(self.node.RETURN_TYPES, ("STRING", "LIST"))
self.assertFalse(hasattr(self.node, "OUTPUT_IS_LIST"))
if __name__ == "__main__":
unittest.main()