Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

test_boolean_conditions.py 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #!/usr/bin/env python3
  2. """
  3. Simple test script to verify boolean condition support in IfElseNode
  4. """
  5. import sys
  6. import os
  7. # Add the api directory to the Python path
  8. sys.path.insert(0, os.path.join(os.path.dirname(__file__), "api"))
  9. from core.workflow.utils.condition.processor import (
  10. ConditionProcessor,
  11. _evaluate_condition,
  12. )
  13. def test_boolean_conditions():
  14. """Test boolean condition evaluation"""
  15. print("Testing boolean condition support...")
  16. # Test boolean "is" operator
  17. result = _evaluate_condition(value=True, operator="is", expected="true")
  18. assert result == True, f"Expected True, got {result}"
  19. print("✓ Boolean 'is' with True value passed")
  20. result = _evaluate_condition(value=False, operator="is", expected="false")
  21. assert result == True, f"Expected True, got {result}"
  22. print("✓ Boolean 'is' with False value passed")
  23. # Test boolean "is not" operator
  24. result = _evaluate_condition(value=True, operator="is not", expected="false")
  25. assert result == True, f"Expected True, got {result}"
  26. print("✓ Boolean 'is not' with True value passed")
  27. result = _evaluate_condition(value=False, operator="is not", expected="true")
  28. assert result == True, f"Expected True, got {result}"
  29. print("✓ Boolean 'is not' with False value passed")
  30. # Test boolean "=" operator
  31. result = _evaluate_condition(value=True, operator="=", expected="1")
  32. assert result == True, f"Expected True, got {result}"
  33. print("✓ Boolean '=' with True=1 passed")
  34. result = _evaluate_condition(value=False, operator="=", expected="0")
  35. assert result == True, f"Expected True, got {result}"
  36. print("✓ Boolean '=' with False=0 passed")
  37. # Test boolean "≠" operator
  38. result = _evaluate_condition(value=True, operator="≠", expected="0")
  39. assert result == True, f"Expected True, got {result}"
  40. print("✓ Boolean '≠' with True≠0 passed")
  41. result = _evaluate_condition(value=False, operator="≠", expected="1")
  42. assert result == True, f"Expected True, got {result}"
  43. print("✓ Boolean '≠' with False≠1 passed")
  44. # Test boolean "in" operator
  45. result = _evaluate_condition(value=True, operator="in", expected=["true", "false"])
  46. assert result == True, f"Expected True, got {result}"
  47. print("✓ Boolean 'in' with True in array passed")
  48. result = _evaluate_condition(value=False, operator="in", expected=["true", "false"])
  49. assert result == True, f"Expected True, got {result}"
  50. print("✓ Boolean 'in' with False in array passed")
  51. # Test boolean "not in" operator
  52. result = _evaluate_condition(value=True, operator="not in", expected=["false", "0"])
  53. assert result == True, f"Expected True, got {result}"
  54. print("✓ Boolean 'not in' with True not in [false, 0] passed")
  55. # Test boolean "null" and "not null" operators
  56. result = _evaluate_condition(value=True, operator="not null", expected=None)
  57. assert result == True, f"Expected True, got {result}"
  58. print("✓ Boolean 'not null' with True passed")
  59. result = _evaluate_condition(value=False, operator="not null", expected=None)
  60. assert result == True, f"Expected True, got {result}"
  61. print("✓ Boolean 'not null' with False passed")
  62. print("\n🎉 All boolean condition tests passed!")
  63. def test_backward_compatibility():
  64. """Test that existing string and number conditions still work"""
  65. print("\nTesting backward compatibility...")
  66. # Test string conditions
  67. result = _evaluate_condition(value="hello", operator="is", expected="hello")
  68. assert result == True, f"Expected True, got {result}"
  69. print("✓ String 'is' condition still works")
  70. result = _evaluate_condition(value="hello", operator="contains", expected="ell")
  71. assert result == True, f"Expected True, got {result}"
  72. print("✓ String 'contains' condition still works")
  73. # Test number conditions
  74. result = _evaluate_condition(value=42, operator="=", expected="42")
  75. assert result == True, f"Expected True, got {result}"
  76. print("✓ Number '=' condition still works")
  77. result = _evaluate_condition(value=42, operator=">", expected="40")
  78. assert result == True, f"Expected True, got {result}"
  79. print("✓ Number '>' condition still works")
  80. print("✓ Backward compatibility maintained!")
  81. if __name__ == "__main__":
  82. try:
  83. test_boolean_conditions()
  84. test_backward_compatibility()
  85. print(
  86. "\n✅ All tests passed! Boolean support has been successfully added to IfElseNode."
  87. )
  88. except Exception as e:
  89. print(f"\n❌ Test failed: {e}")
  90. sys.exit(1)