Sha256: 2b84b0817681176f4abc3032571e82a056dd3eb9a9529a39996e40f5d4b2d9a0

Contents?: true

Size: 1.84 KB

Versions: 22

Compression:

Stored size: 1.84 KB

Contents

require "test_helper"

class Host
  include Juicer::Chainable

  def initialize(msg = nil)
    @msg = msg || ""
  end

  def dummy(ios)
    ios.print @msg
  end

  chain_method :dummy

  def unchained(ios)
    ios.print @msg
  end

  def abortable(ios, abort = false)
    ios.print @msg
    abort_chain if abort
  end

  chain_method :abortable
end

class Dummy
end

class TestChainable < Test::Unit::TestCase
  def test_next_initial_state
    host = Host.new
    assert host.respond_to?(:next_in_chain), "Host should respond to next_in_chain()"
    assert_nil host.next_in_chain, "Next command should be nil for newly created object"
  end

  def test_set_next
    host = Host.new
    host2 = Host.new
    host.next_in_chain = host2
    assert_equal host2, host.next_in_chain

    host3 = host.next_in_chain = Host.new
    assert_not_equal host3, host
    assert_not_equal host3, host2
    assert_equal host3, host.next_in_chain
  end

  def test_set_next_return_value
    host = Host.new
    host2 = host.set_next(Host.new)

    assert_not_equal host2, host
    assert_equal host2, host.next_in_chain
  end

  def test_set_next_return_self_if_next_nil
    host = Host.new

    assert_not_nil host.set_next(nil)
    assert_equal host, host.set_next(nil)
  end

  def test_simple_chain
    host = Host.new("a")
    host2 = host.next_in_chain = Host.new("b")
    ios = StringIO.new
    host.dummy(ios)

    assert_equal "ab", ios.string
  end

  def test_unchained_method
    host = Host.new("a")
    host2 = host.next_in_chain = Host.new("b")
    ios = StringIO.new
    host.unchained(ios)

    assert_equal "a", ios.string
  end

  def test_abort_chain
    host = Host.new("a")
    host2 = host.next_in_chain = Host.new("b")
    ios = StringIO.new

    host.abortable(ios)
    assert_equal "ab", ios.string

    host.abortable(ios, true)
    assert_equal "aba", ios.string
  end
end

Version data entries

22 entries across 22 versions & 3 rubygems

Version Path
juicer-1.0.16 test/unit/juicer/chainable_test.rb
juicer-1.0.15 test/unit/juicer/chainable_test.rb
juicer-1.0.14 test/unit/juicer/chainable_test.rb
juicer-1.0.13 test/unit/juicer/chainable_test.rb
psyho_juicer-1.0.11 test/unit/juicer/chainable_test.rb
juicer-1.0.12 test/unit/juicer/chainable_test.rb
juicer-1.0.11 test/unit/juicer/chainable_test.rb
juicer-1.0.10 test/unit/juicer/chainable_test.rb
psyho_juicer-1.0.9 test/unit/juicer/chainable_test.rb
juicer-1.0.9 test/unit/juicer/chainable_test.rb
juicer-1.0.8 test/unit/juicer/chainable_test.rb
juicer-1.0.7 test/unit/juicer/chainable_test.rb
psyho_juicer-1.0.7 test/unit/juicer/chainable_test.rb
juicer-1.0.6 test/unit/juicer/chainable_test.rb
juicer-1.0.5 test/unit/juicer/chainable_test.rb
juicer-1.0.4 test/unit/juicer/chainable_test.rb
juicer-1.0.3 test/unit/juicer/chainable_test.rb
juicer-1.0.2 test/unit/juicer/chainable_test.rb
juicer-1.0.1 test/unit/juicer/chainable_test.rb
psyho_juicer-1.0.0 test/unit/juicer/chainable_test.rb