Sha256: 422d70711dc12a343247ca36568e822f8bd975e58f7756129b82a467afb1754a

Contents?: true

Size: 914 Bytes

Versions: 1

Compression:

Stored size: 914 Bytes

Contents

require 'test/unit'

require 'mega/coroutine'


class TC_Coroutine < Test::Unit::TestCase

  def test_run
    assert_nothing_raised {

      count = 100
      input = (1..count).map { (rand * 10000).round.to_f / 100 }

      @producer = Coroutine.new do |me|
        loop do
          1.upto(6) do
            me[:last_input] = input.shift
            me.resume(@printer)
          end
          input.shift  # discard every seventh input number
        end
      end

      @printer = Coroutine.new do |me|
        loop do
          1.upto(8) do
            me.resume(@producer)
            if @producer[:last_input]
              @producer[:last_input] = nil
            end
            me.resume(@controller)
          end
        end
      end

      @controller = Coroutine.new do |me|
        until input.empty? do
          me.resume(@printer)
        end
      end
      @controller.run

    }
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mega-0.3.1 test/tc_coroutine.rb