1require_relative '../../spec_helper'
2require_relative 'fixtures/classes'
3
4describe "Module#>" do
5  it "returns false if self is a subclass of or includes the given module" do
6    (ModuleSpecs::Child > ModuleSpecs::Parent).should be_false
7    (ModuleSpecs::Child > ModuleSpecs::Basic).should be_false
8    (ModuleSpecs::Child > ModuleSpecs::Super).should be_false
9    (ModuleSpecs::Super > ModuleSpecs::Basic).should be_false
10  end
11
12  it "returns true if self is a superclass of or included by the given module" do
13    (ModuleSpecs::Parent > ModuleSpecs::Child).should == true
14    (ModuleSpecs::Basic  > ModuleSpecs::Child).should == true
15    (ModuleSpecs::Super  > ModuleSpecs::Child).should == true
16    (ModuleSpecs::Basic  > ModuleSpecs::Super).should == true
17  end
18
19  it "returns false if self is the same as the given module" do
20    (ModuleSpecs::Child  > ModuleSpecs::Child).should == false
21    (ModuleSpecs::Parent > ModuleSpecs::Parent).should == false
22    (ModuleSpecs::Basic  > ModuleSpecs::Basic).should == false
23    (ModuleSpecs::Super  > ModuleSpecs::Super).should == false
24  end
25
26  it "returns nil if self is not related to the given module" do
27    (ModuleSpecs::Parent > ModuleSpecs::Basic).should == nil
28    (ModuleSpecs::Parent > ModuleSpecs::Super).should == nil
29    (ModuleSpecs::Basic  > ModuleSpecs::Parent).should == nil
30    (ModuleSpecs::Super  > ModuleSpecs::Parent).should == nil
31  end
32
33  it "raises a TypeError if the argument is not a class/module" do
34    lambda { ModuleSpecs::Parent > mock('x') }.should raise_error(TypeError)
35  end
36end
37