| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 | 
							- #!/usr/bin/env python3
 - """
 - Test script to verify boolean support in VariableAssigner node
 - """
 - 
 - import sys
 - import os
 - 
 - # Add the api directory to the Python path
 - sys.path.insert(0, os.path.join(os.path.dirname(__file__), "api"))
 - 
 - from core.variables import SegmentType
 - from core.workflow.nodes.variable_assigner.v2.helpers import (
 -     is_operation_supported,
 -     is_constant_input_supported,
 -     is_input_value_valid,
 - )
 - from core.workflow.nodes.variable_assigner.v2.enums import Operation
 - from core.workflow.nodes.variable_assigner.v2.constants import EMPTY_VALUE_MAPPING
 - 
 - 
 - def test_boolean_operation_support():
 -     """Test that boolean types support the correct operations"""
 -     print("Testing boolean operation support...")
 - 
 -     # Boolean should support SET, OVER_WRITE, and CLEAR
 -     assert is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.SET
 -     )
 -     assert is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.OVER_WRITE
 -     )
 -     assert is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.CLEAR
 -     )
 - 
 -     # Boolean should NOT support arithmetic operations
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.ADD
 -     )
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.SUBTRACT
 -     )
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.MULTIPLY
 -     )
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.DIVIDE
 -     )
 - 
 -     # Boolean should NOT support array operations
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.APPEND
 -     )
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.EXTEND
 -     )
 - 
 -     print("✓ Boolean operation support tests passed")
 - 
 - 
 - def test_array_boolean_operation_support():
 -     """Test that array boolean types support the correct operations"""
 -     print("Testing array boolean operation support...")
 - 
 -     # Array boolean should support APPEND, EXTEND, SET, OVER_WRITE, CLEAR
 -     assert is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.APPEND
 -     )
 -     assert is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.EXTEND
 -     )
 -     assert is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.OVER_WRITE
 -     )
 -     assert is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.CLEAR
 -     )
 -     assert is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.REMOVE_FIRST
 -     )
 -     assert is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.REMOVE_LAST
 -     )
 - 
 -     # Array boolean should NOT support arithmetic operations
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.ADD
 -     )
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.SUBTRACT
 -     )
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.MULTIPLY
 -     )
 -     assert not is_operation_supported(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.DIVIDE
 -     )
 - 
 -     print("✓ Array boolean operation support tests passed")
 - 
 - 
 - def test_boolean_constant_input_support():
 -     """Test that boolean types support constant input for correct operations"""
 -     print("Testing boolean constant input support...")
 - 
 -     # Boolean should support constant input for SET and OVER_WRITE
 -     assert is_constant_input_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.SET
 -     )
 -     assert is_constant_input_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.OVER_WRITE
 -     )
 - 
 -     # Boolean should NOT support constant input for arithmetic operations
 -     assert not is_constant_input_supported(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.ADD
 -     )
 - 
 -     print("✓ Boolean constant input support tests passed")
 - 
 - 
 - def test_boolean_input_validation():
 -     """Test that boolean input validation works correctly"""
 -     print("Testing boolean input validation...")
 - 
 -     # Boolean values should be valid for boolean type
 -     assert is_input_value_valid(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.SET, value=True
 -     )
 -     assert is_input_value_valid(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.SET, value=False
 -     )
 -     assert is_input_value_valid(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.OVER_WRITE, value=True
 -     )
 - 
 -     # Non-boolean values should be invalid for boolean type
 -     assert not is_input_value_valid(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.SET, value="true"
 -     )
 -     assert not is_input_value_valid(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.SET, value=1
 -     )
 -     assert not is_input_value_valid(
 -         variable_type=SegmentType.BOOLEAN, operation=Operation.SET, value=0
 -     )
 - 
 -     print("✓ Boolean input validation tests passed")
 - 
 - 
 - def test_array_boolean_input_validation():
 -     """Test that array boolean input validation works correctly"""
 -     print("Testing array boolean input validation...")
 - 
 -     # Boolean values should be valid for array boolean append
 -     assert is_input_value_valid(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.APPEND, value=True
 -     )
 -     assert is_input_value_valid(
 -         variable_type=SegmentType.ARRAY_BOOLEAN, operation=Operation.APPEND, value=False
 -     )
 - 
 -     # Boolean arrays should be valid for extend/overwrite
 -     assert is_input_value_valid(
 -         variable_type=SegmentType.ARRAY_BOOLEAN,
 -         operation=Operation.EXTEND,
 -         value=[True, False, True],
 -     )
 -     assert is_input_value_valid(
 -         variable_type=SegmentType.ARRAY_BOOLEAN,
 -         operation=Operation.OVER_WRITE,
 -         value=[False, False],
 -     )
 - 
 -     # Non-boolean values should be invalid
 -     assert not is_input_value_valid(
 -         variable_type=SegmentType.ARRAY_BOOLEAN,
 -         operation=Operation.APPEND,
 -         value="true",
 -     )
 -     assert not is_input_value_valid(
 -         variable_type=SegmentType.ARRAY_BOOLEAN,
 -         operation=Operation.EXTEND,
 -         value=[True, "false"],
 -     )
 - 
 -     print("✓ Array boolean input validation tests passed")
 - 
 - 
 - def test_empty_value_mapping():
 -     """Test that empty value mapping includes boolean types"""
 -     print("Testing empty value mapping...")
 - 
 -     # Check that boolean types have correct empty values
 -     assert SegmentType.BOOLEAN in EMPTY_VALUE_MAPPING
 -     assert EMPTY_VALUE_MAPPING[SegmentType.BOOLEAN] is False
 - 
 -     assert SegmentType.ARRAY_BOOLEAN in EMPTY_VALUE_MAPPING
 -     assert EMPTY_VALUE_MAPPING[SegmentType.ARRAY_BOOLEAN] == []
 - 
 -     print("✓ Empty value mapping tests passed")
 - 
 - 
 - def main():
 -     """Run all tests"""
 -     print("Running VariableAssigner boolean support tests...\n")
 - 
 -     try:
 -         test_boolean_operation_support()
 -         test_array_boolean_operation_support()
 -         test_boolean_constant_input_support()
 -         test_boolean_input_validation()
 -         test_array_boolean_input_validation()
 -         test_empty_value_mapping()
 - 
 -         print(
 -             "\n🎉 All tests passed! Boolean support has been successfully added to VariableAssigner."
 -         )
 - 
 -     except Exception as e:
 -         print(f"\n❌ Test failed: {e}")
 -         import traceback
 - 
 -         traceback.print_exc()
 -         sys.exit(1)
 - 
 - 
 - if __name__ == "__main__":
 -     main()
 
 
  |