require 'helper'
require 'dr/parse/time_parse'

describe DR::TimeParse do
	before do
		@tz=ENV['TZ']
		ENV['TZ']='GMT'
		class << Time
			alias _original_now now
			def now
				Time.new(2000)
			end
		end
	end
	after do
		ENV['TZ']=@tz
		class << Time
			alias now _original_now
		end
	end

	it "Can parse a range" do
		DR::TimeParse.parse("+100..tomorrow").must_equal(
			Time.parse("2000-01-01 00:01:40")..Time.parse("2000-01-02 12:00:00")
		)
		DR::TimeParse.parse("now..in seven days").must_equal(
			Time.parse("2000-01-01 00:00:00")..Time.parse("2000-01-08 00:00:00")
		)
	end

	it "Can parse a date" do
		DR::TimeParse.parse("today").must_equal(Time.parse("2000-01-01-12:00:00"))
	end

	it "Can put a date in a range" do
		DR::TimeParse.parse("today", range: true).must_equal(
			Time.parse("2000-01-01-00:00:00")..Time.parse("2000-01-02-00:00:00")
		)
	end
end

#with active_support: DR::TimeParse.parse("-3 years 2 minutes")
#=> 2011-08-22 20:01:34 +0200