Skip to content

Commit 4f08f90

Browse files
committed
split examples
1 parent 8f7dfa1 commit 4f08f90

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

spec/concurrent/edge/future_spec.rb

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@
194194
describe 'Future' do
195195
it 'has sync and async callbacks' do
196196
callbacks_tester = ->(future) do
197-
queue = Queue.new
197+
queue = Queue.new
198198
future.on_completion(:io) { |result| queue.push("async on_completion #{ result.inspect }") }
199199
future.on_completion! { |result| queue.push("sync on_completion #{ result.inspect }") }
200200
future.on_success(:io) { |value| queue.push("async on_success #{ value.inspect }") }
@@ -309,19 +309,30 @@
309309
expect(Concurrent.zip(branch1, branch2).value!).to eq [2, 3]
310310
end
311311

312-
it 'has flat map' do
313-
f = Concurrent.future { Concurrent.future { 1 } }.flat.then(&:succ)
314-
expect(f.value!).to eq 2
312+
describe '#flat' do
313+
it 'returns value of inner future' do
314+
f = Concurrent.future { Concurrent.future { 1 } }.flat.then(&:succ)
315+
expect(f.value!).to eq 2
316+
end
315317

316-
err = StandardError.new('boo')
317-
f = Concurrent.future { Concurrent.failed_future(err) }.flat
318-
expect(f.reason).to eq err
318+
it 'propagates failure of inner future' do
319+
err = StandardError.new('boo')
320+
f = Concurrent.future { Concurrent.failed_future(err) }.flat
321+
expect(f.reason).to eq err
322+
end
319323

320-
f = Concurrent.future { raise 'boo' }.flat
321-
expect(f.reason.message).to eq 'boo'
324+
it 'it propagates failure of the future which was suppose to provide inner future' do
325+
f = Concurrent.future { raise 'boo' }.flat
326+
expect(f.reason.message).to eq 'boo'
327+
end
322328

323-
f = Concurrent.future { 'boo' }.flat
324-
expect(f.reason).to be_an_instance_of TypeError
329+
it 'fails if inner value is not a future' do
330+
f = Concurrent.future { 'boo' }.flat
331+
expect(f.reason).to be_an_instance_of TypeError
332+
333+
f = Concurrent.future { Concurrent.completed_event }.flat
334+
expect(f.reason).to be_an_instance_of TypeError
335+
end
325336
end
326337
end
327338

0 commit comments

Comments
 (0)