Report abuse

# minispec
#
# Very minimal set of features to support specs like this:
#
# describe "Array" do
#   it "should respond to new" do
#     Array.new.should == []
#   end
# end

class PostiveSpec
  def initialize(obj)
    @obj = obj
  end

  def ==(other)
    if @obj != other
      raise Exception.new("equality expected")
    end
  end
end

class NegativeSpec
  def initialize(obj)
    @obj = obj
  end

  def ==(other)
    if @obj == other
      raise Exception.new("inequality expected")
    end
  end
end

class Object
  def should
    PostiveSpec.new(self)
  end

  def should_not
    NegativeSpec.new(self)
  end
end

def it(msg)
  print '.'
  begin
    yield
  rescue Exception => e
    print msg
    print " FAILED\n"
    print e.message
    print "\n"
  end
end

def describe(msg)
  yield
end