「初めてのRuby」の復習をexpectationsで(オブジェクトとクラス)

# -*- coding: utf-8 -*-
require "rubygems"
require "expectations"

#8章 オブジェクトとクラス
Expectations do
  #加算メソッドの上書き
  expect 3 do
    class Fixnum
      alias original_add +
      def +(rhs); original_add(rhs).succ; end
    end
    1 + 1
  end
  #上書きの禁止
  expect TypeError do
    Fixnum.freeze
    class Fixnum
      def +(rhs); 5; end
    end
    1 + 1
  end
  #特異メソッド
  expect "foo" do
    obj = Object.new
    def obj.foo; "foo"; end
    obj.foo
  end
  #特異クラス
  expect "foo" do
    obj = Object.new
    class << obj
      def foo; "foo"; end
    end
    obj.foo
  end
  #クラスメソッド(Classオブジェクトの特異メソッド)
  expect "Foo" do
    class Foo
      class << self
        def foo; self.to_s; end
      end
    end
    Foo.foo
  end
end