require_relative '../../../spec_helper'
require_relative '../fixtures/classes'

describe "Socket" do
  it "inherits from BasicSocket and IO" do
    Socket.superclass.should == BasicSocket
    BasicSocket.superclass.should == IO
  end
end

describe "The socket class hierarchy" do
  it "has an IPSocket in parallel to Socket" do
    Socket.ancestors.include?(IPSocket).should == false
    IPSocket.ancestors.include?(Socket).should == false
    IPSocket.superclass.should == BasicSocket
  end

  it "has TCPSocket and UDPSocket subclasses of IPSocket" do
    TCPSocket.superclass.should == IPSocket
    UDPSocket.superclass.should == IPSocket
  end

  platform_is_not :windows do
    it "has a UNIXSocket in parallel to Socket" do
      Socket.ancestors.include?(UNIXSocket).should == false
      UNIXSocket.ancestors.include?(Socket).should == false
      UNIXSocket.superclass.should == BasicSocket
    end
  end
end

platform_is_not :windows do
  describe "Server class hierarchy" do
    it "contains UNIXServer" do
      UNIXServer.superclass.should == UNIXSocket
    end
  end
end
