Class: Tryouts::ExpectationEvaluators::ExpectationResult
- Inherits:
-
Data
- Object
- Data
- Tryouts::ExpectationEvaluators::ExpectationResult
- 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
-
#actual_result ⇒ Object
readonly
Returns the value of attribute actual_result.
-
#end_time_ns ⇒ Object
readonly
Returns the value of attribute end_time_ns.
-
#execution_time_ns ⇒ Object
readonly
Returns the value of attribute execution_time_ns.
-
#start_time_ns ⇒ Object
readonly
Returns the value of attribute start_time_ns.
-
#stderr_content ⇒ Object
readonly
Returns the value of attribute stderr_content.
-
#stdout_content ⇒ Object
readonly
Returns the value of attribute stdout_content.
Class Method Summary collapse
-
.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.
-
.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.
-
.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.
Instance Method Summary collapse
-
#execution_time_ms ⇒ Object
Convert nanoseconds to milliseconds for human-readable timing Used for display and as the value of
result/_variables in performance expectations.
Instance Attribute Details
#actual_result ⇒ Object (readonly)
Returns the value of attribute actual_result
21 22 23 |
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 21 def actual_result @actual_result end |
#end_time_ns ⇒ Object (readonly)
Returns the value of attribute 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_ns ⇒ Object (readonly)
Returns the value of attribute 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_ns ⇒ Object (readonly)
Returns the value of attribute 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_content ⇒ Object (readonly)
Returns the value of attribute stderr_content
21 22 23 |
# File 'lib/tryouts/expectation_evaluators/expectation_result.rb', line 21 def stderr_content @stderr_content end |
#stdout_content ⇒ Object (readonly)
Returns the value of attribute 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_ms ⇒ Object
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 |