Sha256: e047800f80a0a9527fd864ed2ead4e890adb2e293ba976a658051eefe4fdb77c

Contents?: true

Size: 1.63 KB

Versions: 16

Compression:

Stored size: 1.63 KB

Contents

RSpec.shared_context "an NIO selectable" do
  let(:selector) { NIO::Selector.new }

  it "selects readable objects" do
    monitor = selector.register(readable_subject, :r)
    ready = selector.select(0)
    expect(ready).to be_an Enumerable
    expect(ready).to include monitor
  end

  it "does not select unreadable objects" do
    monitor = selector.register(unreadable_subject, :r)
    expect(selector.select(0)).to be_nil
  end

  it "selects writable objects" do
    monitor = selector.register(writable_subject, :w)
    ready = selector.select(0)
    expect(ready).to be_an Enumerable
    expect(ready).to include monitor
  end

  it "does not select unwritable objects" do
    monitor = selector.register(unwritable_subject, :w)
    expect(selector.select(0)).to be_nil
  end
end

RSpec.shared_context "an NIO selectable stream" do
  let(:selector) { NIO::Selector.new }
  let(:stream)   { pair.first }
  let(:peer)     { pair.last }

  it "selects readable when the other end closes" do
    # hax: this test is broken for OpenSSL sockets
    skip "broken for SSL ;_;" if peer.is_a? OpenSSL::SSL::SSLSocket

    monitor = selector.register(stream, :r)
    expect(selector.select(0)).to be_nil

    peer.close
    # Wait and give the TCP session time to close
    expect(selector.select(0.1)).to include monitor
  end
end

RSpec.shared_context "an NIO bidirectional stream" do
  let(:selector) { NIO::Selector.new }
  let(:stream)   { pair.first }
  let(:peer)     { pair.last }

  it "selects readable and writable" do
    monitor = selector.register(readable_subject, :rw)
    selector.select(0) do |m|
      expect(m.readiness).to eq(:rw)
    end
  end
end

Version data entries

16 entries across 16 versions & 3 rubygems

Version Path
autocompl-0.2.2 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/spec/support/selectable_examples.rb
autocompl-0.2.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/spec/support/selectable_examples.rb
autocompl-0.2.0 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/spec/support/selectable_examples.rb
autocompl-0.1.2 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/spec/support/selectable_examples.rb
autocompl-0.1.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/spec/support/selectable_examples.rb
autocompl-0.1.0 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/spec/support/selectable_examples.rb
autocompl-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/nio4r-1.2.1/spec/support/selectable_examples.rb
abaci-0.3.0 vendor/bundle/gems/nio4r-1.2.1/spec/support/selectable_examples.rb
nio4r-2.0.0.pre-java spec/support/selectable_examples.rb
nio4r-2.0.0.pre spec/support/selectable_examples.rb
nio4r-1.2.1-java spec/support/selectable_examples.rb
nio4r-1.2.1 spec/support/selectable_examples.rb
nio4r-1.2.0-java spec/support/selectable_examples.rb
nio4r-1.2.0 spec/support/selectable_examples.rb
nio4r-1.1.1-java spec/support/selectable_examples.rb
nio4r-1.1.1 spec/support/selectable_examples.rb