Class: Holdify::Hold
- Inherits:
-
Object
- Object
- Holdify::Hold
- Defined in:
- lib/holdify/hold.rb
Overview
The *_hold Assertion/Expectation
Instance Attribute Summary collapse
-
#forced ⇒ Object
readonly
Returns the value of attribute forced.
-
#session ⇒ Object
readonly
Returns the value of attribute session.
-
#store ⇒ Object
readonly
Returns the value of attribute store.
-
#test_loc ⇒ Object
readonly
Returns the value of attribute test_loc.
Instance Method Summary collapse
- #call(actual, force: false) ⇒ Object
- #feedback ⇒ Object
-
#initialize(test) ⇒ Hold
constructor
A new instance of Hold.
- #save ⇒ Object
Constructor Details
#initialize(test) ⇒ Hold
Returns a new instance of Hold.
8 9 10 11 12 13 14 |
# File 'lib/holdify/hold.rb', line 8 def initialize(test) @test = test @path, = test.method(test.name).source_location @store = Holdify.stores(@path) @session = Hash.new { |h, k| h[k] = [] } # { lineno => [values] } @forced = [] # [ lines ] end |
Instance Attribute Details
#forced ⇒ Object (readonly)
Returns the value of attribute forced.
6 7 8 |
# File 'lib/holdify/hold.rb', line 6 def forced @forced end |
#session ⇒ Object (readonly)
Returns the value of attribute session.
6 7 8 |
# File 'lib/holdify/hold.rb', line 6 def session @session end |
#store ⇒ Object (readonly)
Returns the value of attribute store.
6 7 8 |
# File 'lib/holdify/hold.rb', line 6 def store @store end |
#test_loc ⇒ Object (readonly)
Returns the value of attribute test_loc.
6 7 8 |
# File 'lib/holdify/hold.rb', line 6 def test_loc @test_loc end |
Instance Method Details
#call(actual, force: false) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/holdify/hold.rb', line 16 def call(actual, force: false) @test_loc = find_test_loc lineno = @test_loc.lineno raise "Could not find holdify statement at lineno #{lineno}" unless @store.xxh(lineno) @forced << lineno if force values = @store.get_values(lineno) index = @session[lineno].size value = if force || Holdify.reconcile actual elsif values && index < values.size values[index] else Holdify.push_fresh("#{Holdify.relativize(@test_loc.path)}:#{lineno}") actual end @session[lineno] << value value end |
#feedback ⇒ Object
42 |
# File 'lib/holdify/hold.rb', line 42 def feedback(*) = Feedback.new(self, *).render |
#save ⇒ Object
38 39 40 |
# File 'lib/holdify/hold.rb', line 38 def save @session.each { |lineno, values| @store.set_values(lineno, values) } end |