fred-dev/comfy_ui_ali
0
1import pytest2from comfy_execution.validation import validate_node_input3 4 5def test_exact_match():6 """Test cases where types match exactly"""7 assert validate_node_input("STRING", "STRING")8 assert validate_node_input("STRING,INT", "STRING,INT")9 assert validate_node_input("INT,STRING", "STRING,INT") # Order shouldn't matter10 11 12def test_strict_mode():13 """Test strict mode validation"""14 # Should pass - received type is subset of input type15 assert validate_node_input("STRING", "STRING,INT", strict=True)16 assert validate_node_input("INT", "STRING,INT", strict=True)17 assert validate_node_input("STRING,INT", "STRING,INT,BOOLEAN", strict=True)18 19 # Should fail - received type is not subset of input type20 assert not validate_node_input("STRING,INT", "STRING", strict=True)21 assert not validate_node_input("STRING,BOOLEAN", "STRING", strict=True)22 assert not validate_node_input("INT,BOOLEAN", "STRING,INT", strict=True)23 24 25def test_non_strict_mode():26 """Test non-strict mode validation (default behavior)"""27 # Should pass - types have overlap28 assert validate_node_input("STRING,BOOLEAN", "STRING,INT")29 assert validate_node_input("STRING,INT", "INT,BOOLEAN")30 assert validate_node_input("STRING", "STRING,INT")31 32 # Should fail - no overlap in types33 assert not validate_node_input("BOOLEAN", "STRING,INT")34 assert not validate_node_input("FLOAT", "STRING,INT")35 assert not validate_node_input("FLOAT,BOOLEAN", "STRING,INT")36 37 38def test_whitespace_handling():39 """Test that whitespace is handled correctly"""40 assert validate_node_input("STRING, INT", "STRING,INT")41 assert validate_node_input("STRING,INT", "STRING, INT")42 assert validate_node_input(" STRING , INT ", "STRING,INT")43 assert validate_node_input("STRING,INT", " STRING , INT ")44 45 46def test_empty_strings():47 """Test behavior with empty strings"""48 assert validate_node_input("", "")49 assert not validate_node_input("STRING", "")50 assert not validate_node_input("", "STRING")51 52 53def test_single_vs_multiple():54 """Test single type against multiple types"""55 assert validate_node_input("STRING", "STRING,INT,BOOLEAN")56 assert validate_node_input("STRING,INT,BOOLEAN", "STRING", strict=False)57 assert not validate_node_input("STRING,INT,BOOLEAN", "STRING", strict=True)58 59 60def test_non_string():61 """Test non-string types"""62 obj1 = object()63 obj2 = object()64 assert validate_node_input(obj1, obj1)65 assert not validate_node_input(obj1, obj2)66 67 68class NotEqualsOverrideTest(str):69 """Test class for ``__ne__`` override."""70 71 def __ne__(self, value: object) -> bool:72 if self == "*" or value == "*":73 return False74 if self == "LONGER_THAN_2":75 return not len(value) > 276 raise TypeError("This is a class for unit tests only.")77 78 79def test_ne_override():80 """Test ``__ne__`` any override"""81 any = NotEqualsOverrideTest("*")82 invalid_type = "INVALID_TYPE"83 obj = object()84 assert validate_node_input(any, any)85 assert validate_node_input(any, invalid_type)86 assert validate_node_input(any, obj)87 assert validate_node_input(any, {})88 assert validate_node_input(any, [])89 assert validate_node_input(any, [1, 2, 3])90 91 92def test_ne_custom_override():93 """Test ``__ne__`` custom override"""94 special = NotEqualsOverrideTest("LONGER_THAN_2")95 96 assert validate_node_input(special, special)97 assert validate_node_input(special, "*")98 assert validate_node_input(special, "INVALID_TYPE")99 assert validate_node_input(special, [1, 2, 3])100 101 # Should fail102 assert not validate_node_input(special, [1, 2])103 assert not validate_node_input(special, "TY")104 105 106@pytest.mark.parametrize(107 "received,input_type,strict,expected",108 [109 ("STRING", "STRING", False, True),110 ("STRING,INT", "STRING,INT", False, True),111 ("STRING", "STRING,INT", True, True),112 ("STRING,INT", "STRING", True, False),113 ("BOOLEAN", "STRING,INT", False, False),114 ("STRING,BOOLEAN", "STRING,INT", False, True),115 ],116)117def test_parametrized_cases(received, input_type, strict, expected):118 """Parametrized test cases for various scenarios"""119 assert validate_node_input(received, input_type, strict) == expected120 