aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/core/time/shared/gmtime.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/time/shared/gmtime.rb')
-rw-r--r--spec/ruby/core/time/shared/gmtime.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/spec/ruby/core/time/shared/gmtime.rb b/spec/ruby/core/time/shared/gmtime.rb
new file mode 100644
index 0000000000..e684a1fd95
--- /dev/null
+++ b/spec/ruby/core/time/shared/gmtime.rb
@@ -0,0 +1,33 @@
+describe :time_gmtime, shared: true do
+ it "converts self to UTC, modifying the receiver" do
+ # Testing with America/Regina here because it doesn't have DST.
+ with_timezone("CST", -6) do
+ t = Time.local(2007, 1, 9, 6, 0, 0)
+ t.send(@method)
+ t.should == Time.gm(2007, 1, 9, 12, 0, 0)
+ end
+ end
+
+ it "returns self" do
+ with_timezone("CST", -6) do
+ t = Time.local(2007, 1, 9, 12, 0, 0)
+ t.send(@method).should equal(t)
+ end
+ end
+
+ describe "on a frozen time" do
+ it "does not raise an error if already in UTC" do
+ time = Time.gm(2007, 1, 9, 12, 0, 0)
+ time.freeze
+ time.send(@method).should equal(time)
+ end
+
+ it "raises a RuntimeError if the time is not UTC" do
+ with_timezone("CST", -6) do
+ time = Time.now
+ time.freeze
+ lambda { time.send(@method) }.should raise_error(RuntimeError)
+ end
+ end
+ end
+end