Sha256: 41c3b93481fca439887af8191ed7236474f9f13d9cbf0c24f0f9b74498373f16

Contents?: true

Size: 862 Bytes

Versions: 19

Compression:

Stored size: 862 Bytes

Contents

module Dynflow
  module Testing
    class ManagedClock

      attr_reader :pending_pings

      include Algebrick::Types

      def initialize
        @pending_pings = []
      end

      def ping(who, time, with_what = nil, where = :<<)
        time  = current_time + time if time.is_a? Numeric
        with = with_what.nil? ? None : Some[Object][with_what]
        @pending_pings << Clock::Timer[who, time, with, where]
        @pending_pings.sort!
      end

      def progress
        if next_ping = @pending_pings.shift
          # we are testing an isolated system = we can move in time
          # without actually waiting
          @current_time = next_ping.when
          next_ping.apply
        end
      end

      def current_time
        @current_time ||= Time.now
      end

      def clear
        @pending_pings.clear
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
dynflow-0.8.16 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.15 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.14 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.13 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.12 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.11 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.10 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.9 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.8 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.7 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.6 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.5 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.4 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.3 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.2 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.1 lib/dynflow/testing/managed_clock.rb
dynflow-0.8.0 lib/dynflow/testing/managed_clock.rb
dynflow-0.7.9 lib/dynflow/testing/managed_clock.rb
dynflow-0.7.8 lib/dynflow/testing/managed_clock.rb