#!/usr/bin/env ruby # This code comes from http://ruby-it.org/pages/Metodi+che+sembrano+keyword # Check the page for copyright notice and explanations class C attr_accessor :var end public void mio_metodo(){... class C def foo end private :foo end class C private def privatissimo ... end public def metodo ... end protected def protetto ... end end >> class C >> puts self >> end C => nil >> class Class >> def method_added(id) >> puts 'aggiunto il metodo %s' % id >> end >> end aggiunto il metodo method_added => nil >> class C >> def foo >> end >> end aggiunto il metodo foo => nil class Esempio Test 'Test 0. vuoto' def foo end def metodo # non un test end Test 'Test 1. This test will fail' def this_fail assert 10 < 5; end Test "Test 2. This test will pass", :this_pass def this_pass assert 10 > 5 end end run_tests(Esempio) Test 0. vuoto: true Test 1. This test will fail: false Test 2. This test will pass: true def assert(condition) raise 'assertion failed!!' if not condition true end def Test(descr) @is_test=desc end class Class def method_added(id) UT[id]=desc if @is_test @is_test=false end end def run_tests(klass) obj=klass.new for i in obj.methods.sort run_method obj, i end end def run_method(obj,name) if desc=UT[name] retval= obj.send(name) rescue false print desc,": ",retval, "\n" end end