b0VIM 7.4dTSamuellocalhost~Samuel/Workspace/ruby/rpromise/spec/lib/rpromise/promise_spec.rbutf-8 3210#"! Utpvyw ad!vtlfe}cF:0# l P D : -   J r j i 2 X P O % $   f N W:U*bAwR0wi]r0jA& end) lock = false lambda_value = hello_world end).then(lambda do |hello_world| end end resolve.call('Hello world!') sleep(0) thread2 = Thread.new do return ::Rpromise::Promise.new do |resolve, reject| @promise.then(lambda do |v| lock = true lambda_value = nil thread2 = nil it 'uses the next then as handler' do context 'when then resolve callback returns a promise' do end end expect(lambda_value_3).to eq value3 expect(lambda_value_2).to eq value2 expect(lambda_value_1).to eq value @thread.join end) lambda_value_3 = v3 end).then(lambda do |v3| return value3 lambda_value_2 = v2 end).then(lambda do |v2| return value2 lambda_value_1 = v1 @promise.then(lambda do |v1| lambda_value_3 = nil lambda_value_2 = nil lambda_value_1 = nil it 'passes its returned value to the next then' do context 'when multiple then are chained together' do end expect(lambda_value).to eq value expect(@promise).to be_resolved @thread.join expect(@promise).to be_pending expect(lambda_value).to be_nil end) lambda_value = v @promise.then(lambda do |v| lambda_value = nil it 'returns the resolved value' do end end end resolve.call(value) sleep(0.5) @thread = Thread.new do @promise = ::Rpromise::Promise.new do |resolve, reject| @thread = nil before(:each) do context 'with async task' do let(:value3) { Random.rand + value + value2 } let(:value2) { Random.rand + value } let(:value) { Random.rand } context 'when promise is resolved' do end expect { promise.then("test", nil) }.to raise_error ArgumentError expect { promise.then(promise.method(:resolve!), nil) }.not_to raise_error expect { promise.then(lambda {}, nil) }.not_to raise_error it 'takes an optional block as second argument' do end expect { promise.then(nil, "test") }.to raise_error ArgumentError expect { promise.then(nil, promise.method(:reject!)) }.not_to raise_error expect { promise.then(nil,lambda {}) }.not_to raise_error it 'takes an optional block as first argument' do end expect(promise.then).to be_kind_of ::Rpromise::Promise it 'returns a new promise' do describe '#then' do end end expect(p).to be_rejected t.join end end reject.call('hi') t = Thread.new do p = ::Rpromise::Promise.new do |resolve, reject| t = nil it 'uses the reject! method as callback' do end expect(p).to be_resolved t.join end end resolve.call('hi') t = Thread.new do p = ::Rpromise::Promise.new do |resolve, reject| t = nil it 'uses the resolve! method as callback' do describe '#initialize' do it { is_expected.to have_attributes( :state => described_class::State::PENDING ) } end end described_class.new do |resolve, reject| subject(:promise) do let(:n) { 0 }describe ::Rpromise::Promise dorequire 'spec_helper'ad #  jN# mQ' g @ 6 . ( ' # " end end end end expect(promise).to be_resolved it 'returns true' do describe '#resolved?' do end end expect(promise).not_to be_rejected it 'returns false' do describe '#rejected?' do end end expect(promise).not_to be_pending it 'returns false' do describe '#pending?' do before(:each) { promise.instance_variable_set(:@state, described_class::State::RESOLVED) } context 'when it is resolved' do end end end expect(promise).not_to be_resolved it 'returns false' do describe '#resolved?' do end end expect(promise).to be_rejected it 'returns true' do describe '#rejected?' do end