TimeWithZone: date part getter methods (#year #mon #day etc) are defined on class; no longer relying on method_missing

This commit is contained in:
gbuesing
2008-05-08 22:07:21 -05:00
parent 618d695f11
commit 4f03190f26
3 changed files with 19 additions and 1 deletions

View File

@@ -1,5 +1,7 @@
*SVN*
* TimeWithZone: date part getter methods (#year #mon #day etc) are defined on class; no longer relying on method_missing [Geoff Buesing]
* Time.zone.parse return nil for strings with no date information [Geoff Buesing]
* Time.zone.parse respects offset information in string. Resolves #105. [Scott Fleckenstein, Geoff Buesing]

View File

@@ -163,6 +163,14 @@ module ActiveSupport
utc.advance(options).in_time_zone(time_zone)
end
%w(year mon month day mday hour min sec).each do |method_name|
class_eval <<-EOV
def #{method_name}
time.#{method_name}
end
EOV
end
def usec
time.respond_to?(:usec) ? time.usec : 0
end

View File

@@ -328,10 +328,18 @@ class TimeWithZoneTest < Test::Unit::TestCase
assert_equal Time.utc(1999, 12, 31, 19), mtime.time
end
end
def test_method_missing_with_non_time_return_value
silence_warnings do # silence warnings raised by tzinfo gem
@twz.time.expects(:foo).returns('bar')
assert_equal 'bar', @twz.foo
end
end
def test_date_part_value_methods
silence_warnings do # silence warnings raised by tzinfo gem
twz = ActiveSupport::TimeWithZone.new(Time.utc(1999,12,31,19,18,17,500), @time_zone)
twz.stubs(:method_missing).returns(nil) #ensure these methods are defined directly on class
assert_equal 1999, twz.year
assert_equal 12, twz.month
assert_equal 31, twz.day