Sha256: b2407157cf3b362cd545e42fc93d97950030da71e1843888bb3f4794dc3a84b9

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

require 'helper'
include Stages

class TestPipeline < MiniTest::Unit::TestCase
  
  test 'simple basic pipeline' do
    evens = Evens.new
    mx3 = MultiplesOf.new(3)
    mx7 = MultiplesOf.new(7) 
    mx3.source = evens 
    mx7.source = mx3
    
    result = (0..2).map{ |x| mx7.run }
    assert_equal([0, 42, 84], result)
  end
  
  test 'pipeline pipe syntax works' do
    pipeline = Evens.new | MultiplesOf.new(3) | MultiplesOf.new(7)
    result = (0..2).map{ |x| pipeline.run }
    assert_equal([0, 42, 84], result)
  end
  
  test 'block stages work' do
    pipeline = Evens.new | Map.new{ |x| x * 3} | Select.new{ |x| x % 7 == 0}
    result = (0..2).map{ |x| pipeline.run }
    assert_equal([0, 42, 84], result)
  end
  
  test 'exceptions do what you expect' do
    begin
      pipeline = Evens.new | Map.new{ |val| throw Exception.new "exception!" } | Select.new{ |v| v > 2}
      pipeline.run
      assert false
    rescue Exception => e
    end
  end   
       
  test 'nil kills it' do
    pipeline = EachElement.new([1, 2, nil, 3])
    result = []
    while v = pipeline.run
      result << v
    end
    assert_equal([1, 2], result)    
  end  
  
  def sing
    { :do => 'doe a deer a female deer',
      :re => 'ray a drop of golden sun',
      :mi => 'me a name I call myself',
      :fa => 'far a long long way to run',
      :so => 'A needle pulling thread',
      :la => 'a note to follow so',
      :ti => 'a drink with jam and bread'}
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stages-0.0.1 test/test_pipeline.rb