aboutsummaryrefslogtreecommitdiffstats
path: root/spec/rubyspec/core/module/included_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/rubyspec/core/module/included_spec.rb')
-rw-r--r--spec/rubyspec/core/module/included_spec.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/spec/rubyspec/core/module/included_spec.rb b/spec/rubyspec/core/module/included_spec.rb
new file mode 100644
index 0000000000..39a08b6ed8
--- /dev/null
+++ b/spec/rubyspec/core/module/included_spec.rb
@@ -0,0 +1,44 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require File.expand_path('../fixtures/classes', __FILE__)
+
+describe "Module#included" do
+ it "is invoked when self is included in another module or class" do
+ begin
+ m = Module.new do
+ def self.included(o)
+ $included_by = o
+ end
+ end
+
+ c = Class.new { include m }
+
+ $included_by.should == c
+ ensure
+ $included_by = nil
+ end
+ end
+
+ it "allows extending self with the object into which it is being included" do
+ m = Module.new do
+ def self.included(o)
+ o.extend(self)
+ end
+
+ def test
+ :passed
+ end
+ end
+
+ c = Class.new{ include(m) }
+ c.test.should == :passed
+ end
+
+ it "is private in its default implementation" do
+ Module.should have_private_instance_method(:included)
+ end
+
+ it "works with super using a singleton class" do
+ ModuleSpecs::SingletonOnModuleCase::Bar.include ModuleSpecs::SingletonOnModuleCase::Foo
+ ModuleSpecs::SingletonOnModuleCase::Bar.included_called?.should == true
+ end
+end