require File.dirname(__FILE__) + "/../test_helper" class FreqTest < Test::Unit::TestCase context "a frequency" do context "when parsed as a string" do should "construct the correct frequency" do expectations.each do |s, expect| assert_equal expect, Freq.parse(s).to_seconds end end end context "next" do should "return the correct Time value" do expectations.each do |s, expect| t = Time.now assert_equal t + expect, Freq.parse(s).next(t) end end end end def expectations { 'every second' => Freq::SECOND, 'once a second' => Freq::SECOND, 'every minute' => Freq::MINUTE, 'once a minute' => Freq::MINUTE, 'every hour' => Freq::HOUR, 'once an hour' => Freq::HOUR, 'every day' => Freq::DAY, 'once a day' => Freq::DAY, 'every week' => Freq::WEEK, 'once a week' => Freq::WEEK, 'every month' => Freq::MONTH, 'once a month' => Freq::MONTH, 'every year' => Freq::YEAR, 'once a year' => Freq::YEAR, 'every other second' => Freq::SECOND * 2, 'every other minute' => Freq::MINUTE * 2, 'every other hour' => Freq::HOUR * 2, 'every other day' => Freq::DAY * 2, 'every other week' => Freq::WEEK * 2, 'every 2 seconds' => Freq::SECOND * 2, 'every 10 seconds' => Freq::SECOND * 10, 'every 2 minutes' => Freq::MINUTE * 2, 'every 10 minutes' => Freq::MINUTE * 10, 'every 2 hours' => Freq::HOUR * 2, 'every 10 hours' => Freq::HOUR * 10, 'every 2 days' => Freq::DAY * 2, 'every 10 days' => Freq::DAY * 10, 'every 2 weeks' => Freq::WEEK * 2, 'every 10 weeks' => Freq::WEEK * 10, 'once every 2 seconds' => Freq::SECOND * 2, 'twice every 2 seconds' => Freq::SECOND * 1, '1 time every 2 seconds' => Freq::SECOND * 2, '1 time every second' => Freq::SECOND * 1, '10 times every minute' => Freq::SECOND * 6, '5 times every other day' => Freq::DAY / 5 * 2, 'twice a minute' => Freq::MINUTE / 2, '4 times a minute' => Freq::MINUTE / 4, 'four times a minute' => Freq::MINUTE / 4, 'ten times per minute' => Freq::MINUTE / 10, 'twice an hour' => Freq::HOUR / 2, '4 times an hour' => Freq::HOUR / 4, 'four times an hour' => Freq::HOUR / 4, 'ten times per hour' => Freq::HOUR / 10, 'twice a day' => Freq::DAY / 2, '4 times a day' => Freq::DAY / 4, 'four times a day' => Freq::DAY / 4, 'ten times per day' => Freq::DAY / 10, 'twice a week' => Freq::WEEK / 2, '4 times a week' => Freq::WEEK / 4, 'four times a week' => Freq::WEEK / 4, 'ten times per week' => Freq::WEEK / 10, } end end