aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/core/time/dup_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/time/dup_spec.rb')
-rw-r--r--spec/ruby/core/time/dup_spec.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/spec/ruby/core/time/dup_spec.rb b/spec/ruby/core/time/dup_spec.rb
new file mode 100644
index 0000000000..b32ce96d44
--- /dev/null
+++ b/spec/ruby/core/time/dup_spec.rb
@@ -0,0 +1,46 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+
+describe "Time#dup" do
+ it "returns a Time object that represents the same time" do
+ t = Time.at(100)
+ t.dup.tv_sec.should == t.tv_sec
+ end
+
+ it "copies the gmt state flag" do
+ Time.now.gmtime.dup.gmt?.should == true
+ end
+
+ it "returns an independent Time object" do
+ t = Time.now
+ t2 = t.dup
+ t.gmtime
+
+ t2.gmt?.should == false
+ end
+
+ it "returns a subclass instance" do
+ c = Class.new(Time)
+ t = c.now
+
+ t.should be_an_instance_of(c)
+ t.dup.should be_an_instance_of(c)
+ end
+
+ it "returns a clone of Time instance" do
+ c = Time.dup
+ t = c.now
+
+ t.should be_an_instance_of(c)
+ t.should_not be_an_instance_of(Time)
+
+ t.dup.should be_an_instance_of(c)
+ t.dup.should_not be_an_instance_of(Time)
+ end
+
+ it "does not copy frozen status from the original" do
+ t = Time.now
+ t.freeze
+ t2 = t.dup
+ t2.frozen?.should be_false
+ end
+end