Class: Tryouts::ExpectationEvaluators::ExpectationResult

Inherits:
Data
  • Object
show all
Defined in:
lib/tryouts/expectation_evaluators/expectation_result.rb

Overview

Extensible container for evaluation context data

Provides immutable data structure for passing test results and timing data to evaluators. Uses Data.define for lightweight implementation. Stores timing in nanoseconds internally, converts to milliseconds for display. Enables adding future metrics (memory, CPU) without breaking evaluator method signatures.

Usage:

ExpectationResult.from_result(actual_result)                           # Regular expectations
ExpectationResult.from_timing(actual_result, execution_time_ns)        # Performance expectations
ExpectationResult.from_execution_with_output(actual_result, stdout, stderr) # Output expectations

Variables available in eval_expectation_content:

result, _ : actual_result (regular) or execution_time_ms (performance)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#actual_resultObject (readonly)

Returns the value of attribute actual_result

Returns:

  • (Object)

    the current value of actual_result



21
22
23
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 21

def actual_result
  @actual_result
end

#end_time_nsObject (readonly)

Returns the value of attribute end_time_ns

Returns:

  • (Object)

    the current value of end_time_ns



21
22
23
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 21

def end_time_ns
  @end_time_ns
end

#execution_time_nsObject (readonly)

Returns the value of attribute execution_time_ns

Returns:

  • (Object)

    the current value of execution_time_ns



21
22
23
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 21

def execution_time_ns
  @execution_time_ns
end

#start_time_nsObject (readonly)

Returns the value of attribute start_time_ns

Returns:

  • (Object)

    the current value of start_time_ns



21
22
23
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 21

def start_time_ns
  @start_time_ns
end

#stderr_contentObject (readonly)

Returns the value of attribute stderr_content

Returns:

  • (Object)

    the current value of stderr_content



21
22
23
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 21

def stderr_content
  @stderr_content
end

#stdout_contentObject (readonly)

Returns the value of attribute stdout_content

Returns:

  • (Object)

    the current value of stdout_content



21
22
23
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 21

def stdout_content
  @stdout_content
end

Class Method Details

.from_execution_with_output(actual_result, stdout_content, stderr_content, execution_time_ns = nil) ⇒ Object

Helper to create a packet with captured output data Used by: output evaluator for stdout/stderr expectations



57
58
59
60
61
62
63
64
65
66
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 57

def self.from_execution_with_output(actual_result, stdout_content, stderr_content, execution_time_ns = nil)
  new(
    actual_result: actual_result,
    execution_time_ns: execution_time_ns,
    start_time_ns: nil,
    end_time_ns: nil,
    stdout_content: stdout_content,
    stderr_content: stderr_content,
  )
end

.from_result(actual_result) ⇒ Object

Helper to create a basic packet with just actual result Used by: regular, true, false, boolean, result_type, regex_match, exception evaluators



30
31
32
33
34
35
36
37
38
39
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 30

def self.from_result(actual_result)
  new(
    actual_result: actual_result,
    execution_time_ns: nil,
    start_time_ns: nil,
    end_time_ns: nil,
    stdout_content: nil,
    stderr_content: nil,
  )
end

.from_timing(actual_result, execution_time_ns, start_time_ns = nil, end_time_ns = nil) ⇒ Object

Helper to create a timing packet with execution data Used by: performance_time evaluator Future: Could accept additional timing or resource metrics



44
45
46
47
48
49
50
51
52
53
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 44

def self.from_timing(actual_result, execution_time_ns, start_time_ns = nil, end_time_ns = nil)
  new(
    actual_result: actual_result,
    execution_time_ns: execution_time_ns,
    start_time_ns: start_time_ns,
    end_time_ns: end_time_ns,
    stdout_content: nil,
    stderr_content: nil,
  )
end

Instance Method Details

#execution_time_msObject

Convert nanoseconds to milliseconds for human-readable timing Used for display and as the value of result/_ variables in performance expectations



24
25
26
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 24

def execution_time_ms
  execution_time_ns ? (execution_time_ns / 1_000_000.0).round(2) : nil
end