summaryrefslogtreecommitdiff
path: root/spec/rubyspec/core/class/new_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/core/class/new_spec.rb')
-rw-r--r--spec/rubyspec/core/class/new_spec.rb154
1 files changed, 0 insertions, 154 deletions
diff --git a/spec/rubyspec/core/class/new_spec.rb b/spec/rubyspec/core/class/new_spec.rb
deleted file mode 100644
index 86323b1575..0000000000
--- a/spec/rubyspec/core/class/new_spec.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-require File.expand_path('../../../spec_helper', __FILE__)
-require File.expand_path('../fixtures/classes', __FILE__)
-
-describe "Class.new with a block given" do
- it "yields the new class as self in the block" do
- self_in_block = nil
- klass = Class.new do
- self_in_block = self
- end
- self_in_block.should equal klass
- end
-
- it "uses the given block as the class' body" do
- klass = Class.new do
- def self.message
- "text"
- end
-
- def hello
- "hello again"
- end
- end
-
- klass.message.should == "text"
- klass.new.hello.should == "hello again"
- end
-
- it "creates a subclass of the given superclass" do
- sc = Class.new do
- def self.body
- @body
- end
- @body = self
- def message; "text"; end
- end
- klass = Class.new(sc) do
- def self.body
- @body
- end
- @body = self
- def message2; "hello"; end
- end
-
- klass.body.should == klass
- sc.body.should == sc
- klass.superclass.should == sc
- klass.new.message.should == "text"
- klass.new.message2.should == "hello"
- end
-
- it "runs the inherited hook after yielding the block" do
- ScratchPad.record []
- klass = Class.new(CoreClassSpecs::Inherited::D) do
- ScratchPad << self
- end
-
- ScratchPad.recorded.should == [CoreClassSpecs::Inherited::D, klass]
- end
-end
-
-describe "Class.new" do
- it "creates a new anonymous class" do
- klass = Class.new
- klass.is_a?(Class).should == true
-
- klass_instance = klass.new
- klass_instance.is_a?(klass).should == true
- end
-
- it "raises a TypeError if passed a metaclass" do
- obj = mock("Class.new metaclass")
- meta = obj.singleton_class
- lambda { Class.new meta }.should raise_error(TypeError)
- end
-
- it "creates a class without a name" do
- Class.new.name.should be_nil
- end
-
- it "creates a class that can be given a name by assigning it to a constant" do
- ::MyClass = Class.new
- ::MyClass.name.should == "MyClass"
- a = Class.new
- MyClass::NestedClass = a
- MyClass::NestedClass.name.should == "MyClass::NestedClass"
- end
-
- it "sets the new class' superclass to the given class" do
- top = Class.new
- Class.new(top).superclass.should == top
- end
-
- it "sets the new class' superclass to Object when no class given" do
- Class.new.superclass.should == Object
- end
-
- it "raises a TypeError when given a non-Class" do
- error_msg = /superclass must be a Class/
- lambda { Class.new("") }.should raise_error(TypeError, error_msg)
- lambda { Class.new(1) }.should raise_error(TypeError, error_msg)
- lambda { Class.new(:symbol) }.should raise_error(TypeError, error_msg)
- lambda { Class.new(mock('o')) }.should raise_error(TypeError, error_msg)
- lambda { Class.new(Module.new) }.should raise_error(TypeError, error_msg)
- end
-end
-
-describe "Class#new" do
- it "returns a new instance of self" do
- klass = Class.new
- klass.new.is_a?(klass).should == true
- end
-
- it "invokes #initialize on the new instance with the given args" do
- klass = Class.new do
- def initialize(*args)
- @initialized = true
- @args = args
- end
-
- def args
- @args
- end
-
- def initialized?
- @initialized || false
- end
- end
-
- klass.new.initialized?.should == true
- klass.new(1, 2, 3).args.should == [1, 2, 3]
- end
-
- it "uses the internal allocator and does not call #allocate" do
- klass = Class.new do
- def self.allocate
- raise "allocate should not be called"
- end
- end
-
- instance = klass.new
- instance.should be_kind_of klass
- instance.class.should equal klass
- end
-
- it "passes the block to #initialize" do
- klass = Class.new do
- def initialize
- yield
- end
- end
-
- klass.new { break 42 }.should == 42
- end
-end