abstract class Spectator::AbstractExpression

Overview

Represents an expression from a test. This is typically captured by an expect macro. It consists of a label and the value of the expression. The label should be a string recognizable by the user, or nil if one isn't available.

This base class is provided so that all generic sub-classes can be stored as this one type. The value of the expression can be retrieved by down-casting to the expected type with #cast.

NOTE This is intentionally a class and not a struct. If it were a struct, changes made to the value held by an instance may not be kept when passing it around. See commit ca564619ad2ae45f832a058d514298c868fdf699.

Direct Known Subclasses

Defined in:

spectator/abstract_expression.cr

Constructors

Instance Method Summary

Instance methods inherited from class Object

should(matcher : Spectator::Matchers::TypeMatcher(U), message = nil, *, _file = __FILE__, _line = __LINE__) forall U
should(matcher, message = nil, *, _file = __FILE__, _line = __LINE__)
should
, should_eventually(matcher, message = nil, *, _file = __FILE__, _line = __LINE__) should_eventually, should_never(matcher, message = nil, *, _file = __FILE__, _line = __LINE__) should_never, should_not(matcher : Spectator::Matchers::TypeMatcher(U), message = nil, *, _file = __FILE__, _line = __LINE__) forall U
should_not(matcher : Spectator::Matchers::NilMatcher, message = nil, *, _file = __FILE__, _line = __LINE__)
should_not(matcher, message = nil, *, _file = __FILE__, _line = __LINE__)
should_not

Constructor Detail

def self.new(label : Label) #

Creates the expression. The label is usually the Crystal code evaluating to the #raw_value. It can be nil if it isn't available.


[View source]

Instance Method Detail

def cast(type : T.class) : T forall T #

Attempts to cast #raw_value to the type T and return it.


[View source]
def inspect(io : IO) : Nil #

Produces a detailed string representation of the expression. This consists of the label (if one is available) and the value.


[View source]
def label : Label #

User recognizable string for the expression. This can be something like a variable name or a snippet of Crystal code.


[View source]
abstract def raw_value #

Retrieves the evaluated value of the expression.


[View source]
def to_s(io : IO) : Nil #

Produces a string representation of the expression. This consists of the label (if one is available) and the value.


[View source]