fake_io

CI Gem Version

Description

FakeIO is a mixin module for creating fake IO-like classes.

Features

  • Supports all of the Ruby 2.x and 3.x IO instance methods.
  • Emulates buffered I/O.
  • UTF-8 aware.
  • Can be included into any Class.
  • Zero dependencies.

Requirements

Install

$ gem install fake_io

gemspec

gem.add_dependency 'fake_io', '~> 1.0'

Gemfile

gem 'fake_io', '~> 1.0'

Examples

require 'fake_io'

class FakeFile

  include FakeIO

  def initialize(chunks=[])
    @index = 0
    @chunks = chunks

    io_initialize
  end

  protected

  def io_read
    unless (block = @chunks[@index])
      raise(EOFError,"end of stream")
    end

    @index += 1
    return block
  end

  def io_write(data)
    @chunks[@index] = data
    @index += 1

    return data.length
  end

end

file = FakeFile.new(["one\ntwo\n", "three\nfour", "\n"])
file.readlines
# => ["one\n", "two\n", "three\n", "four\n"]

Copyright (c) 2021 Hal Brodigan

See LICENSE for details.