Skip to content

Commit 138c62f

Browse files
authored
Merge pull request #3 from StableLlama/even_more_tests
Add many more tests
2 parents 69b2736 + d90f122 commit 138c62f

File tree

11 files changed

+1035
-28
lines changed

11 files changed

+1035
-28
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Icon = ""
4444

4545
[tool.pytest.ini_options]
4646
minversion = "8.0"
47+
pythonpath = "src"
4748
testpaths = [
4849
"tests",
4950
]

src/basic_data_handling/dict_nodes.py

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def INPUT_TYPES(cls):
6767
"key": ("STRING", {"default": ""}),
6868
},
6969
"optional": {
70-
"default_value": ("*", {}),
70+
"default": ("*", {}),
7171
}
7272
}
7373

@@ -77,8 +77,8 @@ def INPUT_TYPES(cls):
7777
DESCRIPTION = cleandoc(__doc__ or "")
7878
FUNCTION = "get"
7979

80-
def get(self, input_dict: dict, key: str, default_value=None) -> tuple[Any]:
81-
return (input_dict.get(key, default_value),)
80+
def get(self, input_dict: dict, key: str, default=None) -> tuple[Any]:
81+
return (input_dict.get(key, default),)
8282

8383

8484
class DictSet:
@@ -297,28 +297,24 @@ def INPUT_TYPES(cls):
297297
},
298298
"optional": {
299299
"default_value": ("*", {}),
300-
"has_default": (["False", "True"], {"default": "False"}),
301300
}
302301
}
303302

304-
RETURN_TYPES = ("DICT", "*", "BOOLEAN")
305-
RETURN_NAMES = ("dict", "value", "key_found")
303+
RETURN_TYPES = ("DICT", "*")
304+
RETURN_NAMES = ("dict", "value")
306305
CATEGORY = "Basic/DICT"
307306
DESCRIPTION = cleandoc(__doc__ or "")
308307
FUNCTION = "pop"
309308

310-
def pop(self, input_dict: dict, key: str, default_value=None, has_default: str = "False") -> tuple[dict, Any, bool]:
309+
def pop(self, input_dict: dict, key: str, default_value=None) -> tuple[dict, Any]:
311310
result = input_dict.copy()
312-
has_default_bool = (has_default == "True")
313311

314312
try:
315313
if key in result:
316314
value = result.pop(key)
317-
return result, value, True
318-
elif has_default_bool:
319-
return result, default_value, False
315+
return result, value
320316
else:
321-
raise KeyError(f"Key '{key}' not found in dictionary")
317+
return result, default_value
322318
except Exception as e:
323319
raise ValueError(f"Error popping key from dictionary: {str(e)}")
324320

@@ -376,7 +372,7 @@ def INPUT_TYPES(cls):
376372
}
377373

378374
RETURN_TYPES = ("DICT", "*")
379-
RETURN_NAMES = ("dict", "value")
375+
RETURN_NAMES = ("DICT", "value")
380376
CATEGORY = "Basic/DICT"
381377
DESCRIPTION = cleandoc(__doc__ or "")
382378
FUNCTION = "setdefault"
@@ -605,7 +601,7 @@ def INPUT_TYPES(cls):
605601
"keys": ("LIST", {}),
606602
},
607603
"optional": {
608-
"default_value": ("*", {}),
604+
"default": ("*", {}),
609605
}
610606
}
611607

@@ -615,8 +611,8 @@ def INPUT_TYPES(cls):
615611
DESCRIPTION = cleandoc(__doc__ or "")
616612
FUNCTION = "get_multiple"
617613

618-
def get_multiple(self, input_dict: dict, keys: list, default_value=None) -> tuple[list]:
619-
values = [input_dict.get(key, default_value) for key in keys]
614+
def get_multiple(self, input_dict: dict, keys: list, default=None) -> tuple[list]:
615+
values = [input_dict.get(key, default) for key in keys]
620616
return (values,)
621617

622618

@@ -736,40 +732,39 @@ def INPUT_TYPES(cls):
736732
}
737733

738734
RETURN_TYPES = ("DICT", "BOOLEAN")
739-
RETURN_NAMES = ("dict", "success")
740735
CATEGORY = "Basic/DICT"
741736
DESCRIPTION = cleandoc(__doc__ or "")
742737
FUNCTION = "convert"
743738

744-
def convert(self, input: Any) -> tuple[dict, bool]:
739+
def convert(self, input: Any) -> tuple[dict]:
745740
try:
746741
if isinstance(input, dict):
747-
return input.copy(), True
742+
return (input.copy(),)
748743

749744
# Try converting from items
750745
if hasattr(input, "items"):
751-
return dict(input.items()), True
746+
return (dict(input.items()),)
752747

753748
# Try converting from sequence of pairs
754749
if hasattr(input, "__iter__") and not isinstance(input, str):
755750
try:
756751
result = dict(input)
757-
return result, True
752+
return (result,)
758753
except (TypeError, ValueError):
759754
pass
760755

761756
# Check for to_dict or as_dict methods
762757
if hasattr(input, "to_dict") and callable(getattr(input, "to_dict")):
763-
return input.to_dict(), True
758+
return (input.to_dict(),)
764759

765760
if hasattr(input, "as_dict") and callable(getattr(input, "as_dict")):
766-
return input.as_dict(), True
761+
return (input.as_dict(),)
767762

768763
# Failed to convert
769-
return {}, False
764+
return ({},)
770765

771766
except Exception:
772-
return {}, False
767+
return ({},)
773768

774769

775770
NODE_CLASS_MAPPINGS = {

src/basic_data_handling/list_nodes.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -347,9 +347,6 @@ def INPUT_TYPES(cls):
347347
FUNCTION = "slice"
348348

349349
def slice(self, list: list[Any], start: int = 0, stop: int = -1, step: int = 1) -> tuple[list[Any]]:
350-
if stop == -1:
351-
stop = len(list)
352-
353350
return (list[start:stop:step],)
354351

355352

tests/test_dict_nodes.py

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
#import pytest
2+
from src.basic_data_handling.dict_nodes import (
3+
DictCreate,
4+
DictCreateFromItems,
5+
DictGet,
6+
DictSet,
7+
DictKeys,
8+
DictValues,
9+
DictItems,
10+
DictContainsKey,
11+
DictClear,
12+
DictCopy,
13+
DictFromKeys,
14+
DictPop,
15+
DictPopItem,
16+
DictSetDefault,
17+
DictUpdate,
18+
DictLength,
19+
DictMerge,
20+
DictGetKeysValues,
21+
DictRemove,
22+
DictFilterByKeys,
23+
DictExcludeKeys,
24+
DictGetMultiple,
25+
DictInvert,
26+
DictCreateFromLists,
27+
DictCompare,
28+
AnyToDict,
29+
)
30+
31+
def test_dict_create():
32+
node = DictCreate()
33+
assert node.create() == ({},) # Creates an empty dictionary
34+
35+
36+
def test_dict_create_from_items():
37+
node = DictCreateFromItems()
38+
items = [("key1", "value1"), ("key2", "value2")]
39+
assert node.create_from_items(items) == ({"key1": "value1", "key2": "value2"},)
40+
41+
42+
def test_dict_get():
43+
node = DictGet()
44+
my_dict = {"key1": "value1", "key2": "value2"}
45+
assert node.get(my_dict, "key1") == ("value1",)
46+
assert node.get(my_dict, "key3", default="default_value") == ("default_value",)
47+
48+
49+
def test_dict_set():
50+
node = DictSet()
51+
my_dict = {"key1": "value1"}
52+
assert node.set(my_dict, "key2", "value2") == ({"key1": "value1", "key2": "value2"},)
53+
54+
55+
def test_dict_keys():
56+
node = DictKeys()
57+
my_dict = {"key1": "value1", "key2": "value2"}
58+
assert node.keys(my_dict) == (["key1", "key2"],)
59+
60+
61+
def test_dict_values():
62+
node = DictValues()
63+
my_dict = {"key1": "value1", "key2": "value2"}
64+
assert node.values(my_dict) == (["value1", "value2"],)
65+
66+
67+
def test_dict_items():
68+
node = DictItems()
69+
my_dict = {"key1": "value1", "key2": "value2"}
70+
assert node.items(my_dict) == ([("key1", "value1"), ("key2", "value2")],)
71+
72+
73+
def test_dict_contains_key():
74+
node = DictContainsKey()
75+
my_dict = {"key1": "value1"}
76+
assert node.contains_key(my_dict, "key1") == (True,)
77+
assert node.contains_key(my_dict, "key2") == (False,)
78+
79+
80+
def test_dict_clear():
81+
node = DictClear()
82+
my_dict = {"key1": "value1"}
83+
assert node.clear(my_dict) == ({},)
84+
85+
86+
def test_dict_copy():
87+
node = DictCopy()
88+
my_dict = {"key1": "value1"}
89+
assert node.copy(my_dict) == ({"key1": "value1"},)
90+
91+
92+
def test_dict_from_keys():
93+
node = DictFromKeys()
94+
keys = ["key1", "key2"]
95+
assert node.from_keys(keys, value="value") == ({"key1": "value", "key2": "value"},)
96+
97+
98+
def test_dict_pop():
99+
node = DictPop()
100+
my_dict = {"key1": "value1", "key2": "value2"}
101+
assert node.pop(my_dict, "key1") == ({"key2": "value2"}, "value1")
102+
103+
104+
def test_dict_pop_item():
105+
node = DictPopItem()
106+
my_dict = {"key1": "value1"}
107+
assert node.popitem(my_dict) == ({}, "key1", "value1", True)
108+
assert node.popitem({}) == ({}, "", None, False)
109+
110+
111+
def test_dict_set_default():
112+
node = DictSetDefault()
113+
my_dict = {"key1": "value1"}
114+
assert node.setdefault(my_dict, "key2", "default") == ({"key1": "value1", "key2": "default"}, "default")
115+
116+
117+
def test_dict_update():
118+
node = DictUpdate()
119+
my_dict = {"key1": "value1"}
120+
update_dict = {"key2": "value2"}
121+
assert node.update(my_dict, update_dict) == ({"key1": "value1", "key2": "value2"},)
122+
123+
124+
def test_dict_length():
125+
node = DictLength()
126+
my_dict = {"key1": "value1"}
127+
assert node.length(my_dict) == (1,)
128+
129+
130+
def test_dict_merge():
131+
node = DictMerge()
132+
dict1 = {"key1": "value1"}
133+
dict2 = {"key2": "value2"}
134+
assert node.merge(dict1, dict2) == ({"key1": "value1", "key2": "value2"},)
135+
136+
137+
def test_dict_get_keys_values():
138+
node = DictGetKeysValues()
139+
my_dict = {"key1": "value1", "key2": "value2"}
140+
assert node.get_keys_values(my_dict) == (["key1", "key2"], ["value1", "value2"])
141+
142+
143+
def test_dict_remove():
144+
node = DictRemove()
145+
my_dict = {"key1": "value1"}
146+
assert node.remove(my_dict, "key1") == ({}, True)
147+
148+
149+
def test_dict_filter_by_keys():
150+
node = DictFilterByKeys()
151+
my_dict = {"key1": "value1", "key2": "value2"}
152+
keys = ["key1"]
153+
assert node.filter_by_keys(my_dict, keys) == ({"key1": "value1"},)
154+
155+
156+
def test_dict_exclude_keys():
157+
node = DictExcludeKeys()
158+
my_dict = {"key1": "value1", "key2": "value2"}
159+
keys = ["key1"]
160+
assert node.exclude_keys(my_dict, keys) == ({"key2": "value2"},)
161+
162+
163+
def test_dict_get_multiple():
164+
node = DictGetMultiple()
165+
my_dict = {"key1": "value1", "key2": "value2"}
166+
keys = ["key1", "key3"]
167+
assert node.get_multiple(my_dict, keys, default="default") == (["value1", "default"],)
168+
169+
170+
def test_dict_invert():
171+
node = DictInvert()
172+
my_dict = {"key1": "value1", "key2": "value2"}
173+
assert node.invert(my_dict) == ({"value1": "key1", "value2": "key2"}, True)
174+
175+
176+
def test_dict_create_from_lists():
177+
node = DictCreateFromLists()
178+
keys = ["key1", "key2"]
179+
values = ["value1", "value2"]
180+
assert node.create_from_lists(keys, values) == ({"key1": "value1", "key2": "value2"},)
181+
182+
183+
def test_dict_compare():
184+
node = DictCompare()
185+
dict1 = {"key1": "value1"}
186+
dict2 = {"key1": "value1"}
187+
assert node.compare(dict1, dict2) == (True, [], [], [])
188+
189+
190+
def test_any_to_dict():
191+
node = AnyToDict()
192+
my_dict = {"key1": "value1"}
193+
assert node.convert(my_dict) == ({"key1": "value1"},)

0 commit comments

Comments
 (0)