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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
# -*- coding: utf-8 -*-
require_relative 'helper'
describe(Delayer::Deferred::Promise) do
include TestUtils
before do
Delayer.default = Delayer.generate_class
@delayer = Delayer.generate_class
end
describe 'get instance' do
it 'default delayer' do
assert_instance_of Delayer::Deferred::Promise, Delayer::Deferred::Promise.new
end
it 'another delayer' do
promise = @delayer.Promise.new
assert_instance_of @delayer.Promise, promise
end
describe "with block" do
before do
@promise = @delayer.Promise.new{ ; }
end
it 'was generated' do
assert_kind_of Delayer::Deferred::Chain::Next, @promise
end
it "doesn't have child" do
refute @promise.has_child?
end
end
end
describe 'chain' do
before do
@promise = @delayer.Promise.new(true)
end
describe 'next' do
before do
@record = nil
@chain = @promise.next{|x| @record = x + 1 }
end
it 'should execute next block if called promise#call' do
val = rand(1000)
eval_all_events(@delayer) do
@promise.call(val)
end
assert_equal val + 1, @record, ->{ "next block did not executed.\n[[#{@chain.graph_draw}]]" }
end
it "shouldn't execute next block if called promise#fail" do
val = rand(1000)
eval_all_events(@delayer) do
@promise.fail(val)
end
refute_equal val + 1, @record, ->{ "next block did executed.\n[[#{@chain.graph_draw}]]" }
end
end
describe 'trap' do
before do
@record = nil
@chain = @promise.trap{|x| @record = x + 1 }
end
it 'should execute trap block if called promise#fail' do
val = rand(1000)
eval_all_events(@delayer) do
@promise.fail(val)
end
assert_equal val + 1, @record, ->{ "trap block did not executed.\n[[#{@chain.graph_draw}]]" }
end
it "shouldn't execute trap block if called promise#call" do
val = rand(1000)
eval_all_events(@delayer) do
@promise.call(val)
end
refute_equal val + 1, @record, ->{ "trap block did executed.\n[[#{@chain.graph_draw}]]" }
end
end
end
end
|