File: test_dim_coffee_maker.rb

Project: Ruby Mark IV Coffee Maker

#!/usr/bin/env ruby

require 'test/test_manual_coffee_maker'
require 'dim'

class TestDimCoffeeMaker < TestManualCoffeeMaker
  def create_coffee_maker
    dim = register_components
    @cm = dim.coffee_maker
    @inputs = dim
    @outputs = dim
  end

  def register_components
    dim = DIM::Container.new

    dim.register(:pot_sensor) { MockPotSensor.new }
    dim.register(:start_button) { MockButtonSensor.new }
    dim.register(:tank) { MockWaterSensor.new }

    dim.register(:warmer_heater) { MockOnOffDevice.new }
    dim.register(:boiler_heater) { MockOnOffDevice.new }
    dim.register(:indicator_light) { MockOnOffDevice.new }
    dim.register(:relief_valve) { MockOpenCloseDevice.new }

    dim.register(:valve_adapter) { |c|
      Adapter.new(c.relief_valve,
	:on => :close,
	:off => :open)
    }

    dim.register(:boiler) { |c|
      boiler = OnOffComposite.new
      boiler.add(c.boiler_heater)
      boiler.add(c.valve_adapter)
      boiler
    }

    dim.register(:warmer) { |c|
      Warmer.new(c.pot_sensor, c.warmer_heater)
    }

    dim.register(:brewer) { |c|
      brewer = Brewer.new
      brewer.start = c.start_button
      brewer.pot = c.pot_sensor
      brewer.tank = c.tank
      brewer.indicator = c.indicator_light
      brewer.boiler = c.boiler
      brewer
    }

    dim.register(:coffee_maker) { |c|
      cm = CoffeeMaker.new
      cm.warmer = c.warmer
      cm.brewer = c.brewer
      cm.trigger
      cm
    }

    dim
  end

end


[ Index ][ Presentation ]
Generated by [ source2html ]