class Tryouts::ExpectationEvaluators::False
-
Uses #=/=> syntax to visually distinguish from true expectations
- Part of unified #= prefix convention for all expectation types
- Expression evaluation provides flexible boolean logic testing
- Clear expected display explains the exact requirement
- Strict false matching prevents accidental falsy value acceptance
DESIGN DECISIONS:
- Distinguishes from regular expectations through strict false matching
- Actual display shows the evaluated expression result
- Expected display shows ‘false (exactly)’ for clarity
- Expression has access to ‘result` and `_` variables (actual_result)
IMPLEMENTATION DETAILS:
- Encourages explicit boolean expressions in documentation
- Uses Ruby’s === comparison for exact boolean matching
- Fails for true, nil, 0, “”, [], {}, or any non-false value
- Only passes when expression evaluates to exactly false (not falsy)
BOOLEAN STRICTNESS:
[] #=/=> result.first # Fail: expression is nil (falsy but not false)
[1, 2, 3] #=/=> result.first # Fail: expression is 1 (truthy but not false)
[] #=/=> result.empty? # Fail: expression is true
[] #=/=> result.include?(1) # Pass: expression is false
[1, 2, 3] #=/=> result.include?(5) # Pass: expression is false
[1, 2, 3] #=/=> result.empty? # Pass: expression is false
Examples:
SYNTAX: #=/=> boolean_expression
- Distinguishes between true/false and truthy/falsy values
- Provides explicit boolean validation for documentation-style tests
- Validates that an expression evaluates to exactly false (not falsy)
PURPOSE:
Evaluator for boolean false expectations using syntax: #=/=> expression
def self.handles?(expectation_type)
def self.handles?(expectation_type) expectation_type == :false # rubocop:disable Lint/BooleanSymbol end
def evaluate(actual_result = nil)
def evaluate(actual_result = nil) expectation_result = ExpectationResult.from_result(actual_result) expression_result = eval_expectation_content(@expectation.content, expectation_result) build_result( passed: expression_result == false, actual: expression_result, expected: false, ) rescue StandardError => ex handle_evaluation_error(ex, actual_result) end