feat: Add new nodes for text list processing and update documentation
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import unittest
|
||||
|
||||
from src.MultilineStringToList import MultilineStringToList
|
||||
|
||||
|
||||
class TestMultilineStringToList(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.node = MultilineStringToList()
|
||||
|
||||
def test_converts_multiline_text_with_default_cleanup(self):
|
||||
result = self.node.convert_to_list(" alpha \n\n beta\n \ngamma ")
|
||||
self.assertEqual(result, (["alpha", "beta", "gamma"],))
|
||||
|
||||
def test_supports_crlf_and_cr_line_endings(self):
|
||||
result = self.node.convert_to_list("alpha\r\nbeta\rgamma")
|
||||
self.assertEqual(result, (["alpha", "beta", "gamma"],))
|
||||
|
||||
def test_trailing_line_ending_does_not_add_empty_item(self):
|
||||
result = self.node.convert_to_list("alpha\nbeta\n", keep_empty_lines=True)
|
||||
self.assertEqual(result, (["alpha", "beta"],))
|
||||
|
||||
def test_empty_text_returns_empty_list(self):
|
||||
result = self.node.convert_to_list("")
|
||||
self.assertEqual(result, ([],))
|
||||
|
||||
def test_comment_like_lines_are_preserved(self):
|
||||
result = self.node.convert_to_list("# comment\n// comment\nvalue")
|
||||
self.assertEqual(result, (["# comment", "// comment", "value"],))
|
||||
|
||||
def test_can_preserve_whitespace(self):
|
||||
result = self.node.convert_to_list(
|
||||
" alpha \n beta ", trim_whitespace=False
|
||||
)
|
||||
self.assertEqual(result, ([" alpha ", " beta "],))
|
||||
|
||||
def test_can_preserve_empty_lines_after_trimming(self):
|
||||
result = self.node.convert_to_list(
|
||||
" alpha \n \nbeta", keep_empty_lines=True
|
||||
)
|
||||
self.assertEqual(result, (["alpha", "", "beta"],))
|
||||
|
||||
def test_can_preserve_whitespace_and_empty_lines(self):
|
||||
result = self.node.convert_to_list(
|
||||
" alpha \n\n \nbeta",
|
||||
trim_whitespace=False,
|
||||
keep_empty_lines=True,
|
||||
)
|
||||
self.assertEqual(result, ([" alpha ", "", " ", "beta"],))
|
||||
|
||||
def test_node_definition(self):
|
||||
input_types = self.node.INPUT_TYPES()
|
||||
self.assertEqual(input_types["required"]["text"][0], "STRING")
|
||||
self.assertTrue(input_types["required"]["text"][1]["multiline"])
|
||||
self.assertTrue(
|
||||
input_types["required"]["trim_whitespace"][1]["default"]
|
||||
)
|
||||
self.assertFalse(
|
||||
input_types["required"]["keep_empty_lines"][1]["default"]
|
||||
)
|
||||
self.assertEqual(self.node.RETURN_TYPES, ("LIST",))
|
||||
self.assertEqual(self.node.CATEGORY, "TextListProduct")
|
||||
self.assertFalse(hasattr(self.node, "OUTPUT_IS_LIST"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user