Sha256: 4221dd1e710a25c6eeae6af74a80e83ec42883bae8dc39cc1844081314dd5601
Contents?: true
Size: 1.66 KB
Versions: 6
Compression:
Stored size: 1.66 KB
Contents
#!/usr/bin/env ruby # encoding: UTF-8 require File.expand_path("../test_helper", __FILE__) class DynamicMethodTest < TestCase class FruitMedley define_method(:apple) do sleep(0.1) "I'm a peach" end define_method(:orange) do sleep(0.2) "I'm an orange" end [:banana, :peach].each_with_index do |fruit,i| define_method(fruit) do sleep(i == 0 ? 0.3 : 0.4) "I'm a #{fruit}" end end end def setup # Need to use wall time for this test due to the sleep calls RubyProf::measure_mode = RubyProf::WALL_TIME end def test_dynamic_method medley = FruitMedley.new result = RubyProf.profile do medley.apple medley.orange medley.banana medley.peach end methods = result.threads.first.methods.sort.reverse if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.1') expected_method_names = %w( DynamicMethodTest#test_dynamic_method Kernel#sleep DynamicMethodTest::FruitMedley#peach DynamicMethodTest::FruitMedley#banana DynamicMethodTest::FruitMedley#orange DynamicMethodTest::FruitMedley#apple Symbol#to_s ) else expected_method_names = %w( DynamicMethodTest#test_dynamic_method Kernel#sleep DynamicMethodTest::FruitMedley#peach DynamicMethodTest::FruitMedley#banana DynamicMethodTest::FruitMedley#orange DynamicMethodTest::FruitMedley#apple Integer#== ) end assert_equal expected_method_names.join("\n"), methods.map(&:full_name).join("\n") end end
Version data entries
6 entries across 6 versions & 1 rubygems