Sha256: ec076e5ce672c7605e96d83f3c837f99b751bf81a220081f77c2685751e6dc33

Contents?: true

Size: 664 Bytes

Versions: 1

Compression:

Stored size: 664 Bytes

Contents

require 'quantum_leap/version'

module QuantumLeap
  extend self

  def time_travel_offsets
    @time_travel_offsets ||= []
  end

  def reset
    @time_travel_offsets = []
  end

  def mock_current_time(new_time)
    time_travel_offsets.push(Time.now - new_time)
  end

  def now
    Time.really_now - time_travel_offsets.inject(0, :+)
  end
end

class << Time
  alias_method :really_now, :now
  def now; QuantumLeap.now; end
end

class Quantum
  def self.leap(time)
    QuantumLeap.mock_current_time(time)
    return unless block_given?
    begin
      yield
    ensure
      QuantumLeap.reset
    end
  end

  def self.leap_back
    QuantumLeap.reset
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
quantum_leap-0.2.0 lib/quantum_leap.rb