Sha256: 733bfa312ff9bbb1e19edea98c79df948272176c2cb629c55cdb62f2fb8f862d
Contents?: true
Size: 1.99 KB
Versions: 1
Compression:
Stored size: 1.99 KB
Contents
RSpec.describe Mutant::Actor::Receiver do let(:mailbox) { double('Mailbox') } let(:mutex) { double('Mutex') } let(:message) { double('Message') } let(:object) { described_class.new(mutex, mailbox) } describe '#call' do subject { object.call } context 'when mailbox contains a message' do before do expect(mutex).to receive(:lock).ordered expect(mailbox).to receive(:empty?).and_return(false).ordered expect(mailbox).to receive(:shift).and_return(message).ordered expect(mutex).to receive(:unlock).ordered end it { should be(message) } end context 'when mailbox initially contains no message' do before do # 1rst failing try expect(mutex).to receive(:lock).ordered expect(mailbox).to receive(:empty?).and_return(true).ordered expect(mutex).to receive(:unlock).ordered expect(Thread).to receive(:stop).ordered # 2nd successful try expect(mutex).to receive(:lock).ordered expect(mailbox).to receive(:empty?).and_return(false).ordered expect(mailbox).to receive(:shift).and_return(message).ordered expect(mutex).to receive(:unlock).ordered end it 'waits for message' do should be(message) end end context 'when mailbox contains no message but thread gets waken without message arrived' do before do # 1rst failing try expect(mutex).to receive(:lock).ordered expect(mailbox).to receive(:empty?).and_return(true).ordered expect(mutex).to receive(:unlock).ordered expect(Thread).to receive(:stop).ordered # 2nd failing try expect(mutex).to receive(:lock).ordered expect(mailbox).to receive(:empty?).and_return(true).ordered expect(mutex).to receive(:unlock).ordered expect(Thread).to receive(:stop).ordered end it 'waits for message' do expect { subject }.to raise_error(Mutant::Actor::ProtocolError) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mutant-0.7.1 | spec/unit/mutant/actor/receiver_spec.rb |