Class: Riot::AssertionMacro
Overview
The base class for all assertion macros.
Using macros
Macros are applied to the return value of assertions. For example, the empty macro asserts that the value is empty or denies that it is empty e.g.
asserts(:comments).empty?
denies(:comments).empty?
Writing your own macros
Macros are added by subclassing AssertionMacro. For example, here's the implementation of empty:
class EmptyMacro < AssertionMacro
register :empty
def evaluate(actual)
actual.length == 0 ? pass : fail((actual).to_be_empty)
end
def devaluate(actual)
actual.empty? ? fail((actual).to_not_be_empty) : pass(.is_empty)
end
end
Direct Known Subclasses
AnyMacro, AssignsMacro, EmptyMacro, EqualsMacro, EquivalentToMacro, ExistsMacro, IncludesMacro, KindOfMacro, MatchesMacro, NilMacro, RaisesKindOfMacro, RaisesMacro, RespondToMacro, SameElementsMacro, SizeMacro
Class Attribute Summary (collapse)
-
+ (Boolean) expects_exception
readonly
Whether the macro expects an exception to be thrown.
Instance Attribute Summary (collapse)
-
- (String) file
During failure reporting, what file did the failure occur in.
-
- (Number) line
During failure reporting, what line number did the failure occur at.
Class Method Summary (collapse)
-
+ (Object) expects_exception!
Specify that the macro expects an exception to be thrown by the assertion.
-
+ (Object) register(name)
Register the macro under the given name.
Instance Method Summary (collapse)
-
- (Array) devaluate(actual)
Supports negative/converse assertion testing.
-
- (Array[Symbol, Exception]) error(ex)
Returns a status tuple indicating the assertion had an unexpected error.
-
- (Array) evaluate(actual)
Supports positive assertion testing.
-
- (Riot::Message) expected_message(*phrases)
Creates a new message for use in any macro response that will start as "expected ".
-
- (boolean) expects_exception?
Returns true if this macro expects to handle Exceptions during evaluation.
-
- (Array[Symbol, String, Number, String]) fail(message)
Returns a status tuple indicating the assertion failed and where it failed it if that can be determined.
-
- (Riot::Message) new_message(*phrases)
Creates a new message for use in any macro response that is initially empty.
-
- (Array[Symbol, String]) pass(message = nil)
Returns a status tuple indicating the assertion passed.
-
- (Riot::Message) should_have_message(*phrases)
Creates a new message for use in any macro response that will start as "should have ".
Class Attribute Details
+ (Boolean) expects_exception (readonly)
Whether the macro expects an exception to be thrown.
36 37 38 |
# File 'lib/riot/assertion_macro.rb', line 36 def expects_exception @expects_exception end |
Instance Attribute Details
- (String) file
During failure reporting, what file did the failure occur in
65 66 67 |
# File 'lib/riot/assertion_macro.rb', line 65 def file @file end |
- (Number) line
During failure reporting, what line number did the failure occur at
61 62 63 |
# File 'lib/riot/assertion_macro.rb', line 61 def line @line end |
Class Method Details
+ (Object) expects_exception!
Specify that the macro expects an exception to be thrown by the assertion.
47 48 49 |
# File 'lib/riot/assertion_macro.rb', line 47 def expects_exception! @expects_exception = true end |
+ (Object) register(name)
Register the macro under the given name.
54 55 56 |
# File 'lib/riot/assertion_macro.rb', line 54 def register(name) Assertion.register_macro name, self end |
Instance Method Details
- (Array) devaluate(actual)
Supports negative/converse assertion testing. This is also where magic happens.
103 104 105 |
# File 'lib/riot/assertion_macro.rb', line 103 def devaluate(actual) !actual ? pass : fail("Expected non-true but got #{actual.inspect} instead") end |
- (Array[Symbol, Exception]) error(ex)
Returns a status tuple indicating the assertion had an unexpected error.
84 |
# File 'lib/riot/assertion_macro.rb', line 84 def error(ex) [:error, ex]; end |
- (Array) evaluate(actual)
Supports positive assertion testing. This is where magic happens.
95 96 97 |
# File 'lib/riot/assertion_macro.rb', line 95 def evaluate(actual) actual ? pass : fail("Expected non-false but got #{actual.inspect} instead") end |
- (Riot::Message) expected_message(*phrases)
Creates a new message for use in any macro response that will start as "expected ".
123 |
# File 'lib/riot/assertion_macro.rb', line 123 def (*phrases) .expected(*phrases); end |
- (boolean) expects_exception?
Returns true if this macro expects to handle Exceptions during evaluation.
89 |
# File 'lib/riot/assertion_macro.rb', line 89 def expects_exception?; self.class.expects_exception; end |
- (Array[Symbol, String, Number, String]) fail(message)
Returns a status tuple indicating the assertion failed and where it failed it if that can be determined.
78 |
# File 'lib/riot/assertion_macro.rb', line 78 def fail() [:fail, .to_s, line, file]; end |
- (Riot::Message) new_message(*phrases)
Creates a new message for use in any macro response that is initially empty.
111 |
# File 'lib/riot/assertion_macro.rb', line 111 def (*phrases) Message.new(*phrases); end |
- (Array[Symbol, String]) pass(message = nil)
Returns a status tuple indicating the assertion passed.
71 |
# File 'lib/riot/assertion_macro.rb', line 71 def pass(=nil) [:pass, .to_s]; end |
- (Riot::Message) should_have_message(*phrases)
Creates a new message for use in any macro response that will start as "should have ".
117 |
# File 'lib/riot/assertion_macro.rb', line 117 def (*phrases) .should_have(*phrases); end |