Sha256: 085c0686663dd1d3a451d4d6d08886fcb3eda0766b166a52eb3fe51407357ed8

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

$:.unshift File.expand_path('..', __FILE__)

require 'samples'
require 'ipfs-api/io'

include IPFS::IO

class StreamProducerTest < Minitest::Test

  def setup
    @parts = Samples.some_byte_sequences
    enum = @parts.each
    producer = StreamProducer.new do |writer|
      enum.each do |part|
        writer << part
      end
    end
    @reader = producer.stream
  end

  def test_read_byte_wise
    result = ''
    while (byte = @reader.read(1))
      result << byte
      assert_equal result.size, @reader.pos
    end
    assert_eof @reader
    assert_equal @parts.join, result
  end

  def test_read_larger_chunks
    result = ''
    while (chunk = @reader.read(199))
      result << chunk
      assert_equal result.size, @reader.pos
      if chunk.size < 199
        assert_eof @reader
      else
        assert_not_eof @reader
      end
    end
    assert_eof @reader
    assert_equal @parts.join, result
  end

  def test_different_variants_of_read
    chunk = @reader.read(199)
    assert_equal 199, chunk.size
    assert_not_eof @reader
    chunk = @reader.read(0)
    assert_equal 0, chunk.size
    assert_not_eof @reader
    chunk = @reader.read
    assert_equal 243, chunk.size
    assert_eof @reader
    chunk = @reader.read
    assert_equal 0, chunk.size
    assert_eof @reader
  end

  private
  def assert_eof stream
    assert stream.eof?, "Stream should have reached end-of-file"
  end

  def assert_not_eof stream
    assert !stream.eof?, "Stream should not yet have reached end-of-file"
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ipfs-api-0.4.0 test/test_io.rb
ipfs-api-0.3.0 test/test_io.rb