1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#!/usr/bin/env ruby
require 'test/unit'
require 'ruby-prof'
require 'prime'
class LineNumbers
def method1
a = 3
end
def method2
a = 3
method1
end
def method3
sleep(1)
end
end
# -- Tests ----
class LineNumbersTest < Test::Unit::TestCase
def test_function_line_no
numbers = LineNumbers.new
result = RubyProf.profile do
numbers.method2
end
methods = result.threads.values.first.sort.reverse
assert_equal(3, methods.length)
method = methods[0]
assert_equal('LineNumbersTest#test_function_line_no', method.full_name)
assert_equal(27, method.line)
method = methods[1]
assert_equal('LineNumbers#method2', method.full_name)
assert_equal(11, method.line)
method = methods[2]
assert_equal('LineNumbers#method1', method.full_name)
assert_equal(7, method.line)
end
def test_c_function
numbers = LineNumbers.new
result = RubyProf.profile do
numbers.method3
end
methods = result.threads.values.first.sort_by {|method| method.full_name}
assert_equal(3, methods.length)
# Methods:
# LineNumbers#method3
# LineNumbersTest#test_c_function
# Kernel#sleep
method = methods[0]
assert_equal('Kernel#sleep', method.full_name)
assert_equal(0, method.line)
method = methods[1]
assert_equal('LineNumbers#method3', method.full_name)
assert_equal(16, method.line)
method = methods[2]
assert_equal('LineNumbersTest#test_c_function', method.full_name)
assert_equal(50, method.line)
end
end
|