diff options
Diffstat (limited to 'spec/ruby/core/class/allocate_spec.rb')
-rw-r--r-- | spec/ruby/core/class/allocate_spec.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/ruby/core/class/allocate_spec.rb b/spec/ruby/core/class/allocate_spec.rb new file mode 100644 index 0000000000..015db292eb --- /dev/null +++ b/spec/ruby/core/class/allocate_spec.rb @@ -0,0 +1,41 @@ +require File.expand_path('../../../spec_helper', __FILE__) + +describe "Class#allocate" do + it "returns an instance of self" do + klass = Class.new + klass.allocate.should be_an_instance_of(klass) + end + + it "returns a fully-formed instance of Module" do + klass = Class.allocate + klass.constants.should_not == nil + klass.methods.should_not == nil + end + + it "throws an exception when calling a method on a new instance" do + klass = Class.allocate + lambda do + klass.new + end.should raise_error(Exception) + end + + it "does not call initialize on the new instance" do + klass = Class.new do + def initialize(*args) + @initialized = true + end + + def initialized? + @initialized || false + end + end + + klass.allocate.initialized?.should == false + end + + it "raises TypeError for #superclass" do + lambda do + Class.allocate.superclass + end.should raise_error(TypeError) + end +end |