Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

timecop.cr

Build Status

A timecop inspire library allow "time travel", "freezing time" and "time acceleration" capabilities, making it simple to test time-dependent code.

Installation

Add this to your application's shard.yml:

dependencies:
timecop:
github: TobiasGSmollett/timecop.cr

Usage

require"timecop"

Timecop.freeze

date =Time.new(2008, 10, 10, 10, 10, 10)
Timecop.freeze(date) do |frozen_time|
puts"#{frozen_time ==Time.now}"# => trueend

Timecop.travel

Timecop.travel(Time.new(2014, 1, 1, 0, 0, 0)) doputsTime.now # => 2014-01-01 00:00:00 +0900
sleep(5)
putsTime.now # => 2014-01-01 00:00:05 +0900end

Timecop.scale

# seconds will now seem like hoursTimecop.scale(Time.now, 3600)
putsTime.now # => 2017-08-28 23:50:06 +0900
sleep(2.0)
# seconds later, hours have passed and it's gone from 23pm at night to 1am in the morningputsTime.now # => 2017-08-29 01:50:21 +0900

Timecop.safe_mode

# turn on safe modeTimecop.safe_mode =trueTimecop.safe_mode? # => true# using method without blockTimecop.freeze Time.new(2008, 10, 10, 10, 10, 10)
# => Timecop::SafeModeException: Safe mode is enabled, only calls passing a block are allowed.

Development

Pull Request Welcome

Contributing

  1. Fork it ( https://github.com/TobiasGSmollett/timecop.cr/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

Thanks

Thanks to Travis Jeffery for his awesome work on timecop.

About

A timecop inspire library allowing "time travel", "freezing time" and "time acceleration".

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages