summaryrefslogtreecommitdiffhomepage
path: root/test/t/ensure.rb
blob: bdb5bffc41ce420f978e6ac2846c9c18d5077be3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
##
# ensure Test

class EnsureYieldBreak
  attr_reader :ensure_context
  def try
    yield
  ensure
    @ensure_context = self
  end
end

assert('ensure - context - yield') do
  yielder = EnsureYieldBreak.new
  yielder.try do
  end
  assert_equal yielder, yielder.ensure_context
end

assert('ensure - context - yield and break') do
  yielder = EnsureYieldBreak.new
  yielder.try do
    break
  end
  assert_equal yielder, yielder.ensure_context
end

assert('ensure - context - yield and return') do
  yielder = EnsureYieldBreak.new
  lambda do
    yielder.try do
      return
    end
  end.call
  assert_equal yielder, yielder.ensure_context
end