Sha256: 4c48001570d6cef016c09460a17cdcfb3db7ff7fc2296a1ff788985bb5ffd82a

Contents?: true

Size: 1.75 KB

Versions: 13

Compression:

Stored size: 1.75 KB

Contents

require 'helper'
include Stages

class TestPipeline < MiniTest::Unit::TestCase
  
  test 'simple basic pipeline' do
    evens = Evens.new
    mx3 = Select.new{ |x| x % 3 == 0}
    mx7 = Select.new{ |x| x % 7 == 0}
    mx3.source = evens 
    mx7.source = mx3
    
    result = (0..2).map{ mx7.run }
    assert_equal([0, 42, 84], result)
  end
  
  test 'pipeline pipe syntax works' do
    pipeline = Evens.new | Select.new{ |x| x % 3 == 0} | Select.new{ |x| x % 7 == 0}
    result = (0..2).map{ 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{ 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 = Each.new([1, 2, nil, 3])
    result = []
    while v = pipeline.run
      result << v
    end
    assert_equal([1, 2], result)    
  end    
  
  test 'complex substage hash example' do
    sub = Each.new{ |x| x.chars } | Map.new{ |x| x.to_sym} | Count.new
    pipeline = Each.new(%w(foo bar)) | Wrap.new(sub) | Map.new{ |x| { x.keys.first => x.values.first.first}}
    result = pipeline.run
    assert_equal({'foo' => { :f => 1, :o => 2}}, result)
    result = pipeline.run
    assert_equal({ 'bar' => { :b => 1, :a => 1, :r => 1}}, result)
  end
  
  test 'reset! resets everything' do
    pipeline = Each.new([1, 2, 3])
    assert_equal(1, pipeline.run)
    pipeline.reset!
    assert_equal(1, pipeline.run)
    assert_equal(2, pipeline.run)
  end

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
stages-0.3.2 test/test_pipeline.rb
stages-0.3.1 test/test_pipeline.rb
stages-0.3.0 test/test_pipeline.rb
stages-0.2.10 test/test_pipeline.rb
stages-0.2.9 test/test_pipeline.rb
stages-0.2.8 test/test_pipeline.rb
stages-0.2.7 test/test_pipeline.rb
stages-0.2.6 test/test_pipeline.rb
stages-0.2.5 test/test_pipeline.rb
stages-0.2.4 test/test_pipeline.rb
stages-0.2.3 test/test_pipeline.rb
stages-0.2.2 test/test_pipeline.rb
stages-0.2.1 test/test_pipeline.rb