1begin 2 require 'ripper' 3 require 'test/unit' 4 ripper_test = true 5 module TestRipper; end 6rescue LoadError 7end 8 9class TestRipper::Filter < Test::Unit::TestCase 10 11 class Filter < Ripper::Filter 12 def on_default(event, token, data) 13 if data.empty? 14 data[:filename] = filename rescue nil 15 data[:lineno] = lineno 16 data[:column] = column 17 data[:token] = token 18 end 19 data 20 end 21 end 22 23 def filename 24 File.expand_path(__FILE__) 25 end 26 27 def test_filter_filename_unset 28 data = {} 29 filter = Filter.new(File.read(filename)) 30 filter.parse(data) 31 assert_equal('-', data[:filename], "[ruby-dev:37856]") 32 assert_equal('-', filter.filename) 33 end 34 35 def test_filter_filename 36 data = {} 37 filter = Filter.new(File.read(filename), filename) 38 assert_equal(filename, filter.filename) 39 filter.parse(data) 40 assert_equal(filename, data[:filename]) 41 assert_equal(filename, filter.filename) 42 end 43 44 def test_filter_lineno 45 data = {} 46 src = File.read(filename) 47 src_lines = src.count("\n") 48 filter = Filter.new(src) 49 assert_equal(nil, filter.lineno) 50 filter.parse(data) 51 assert_equal(1, data[:lineno]) 52 assert_equal(src_lines, filter.lineno) 53 end 54 55 def test_filter_lineno_set 56 data = {} 57 src = File.read(filename) 58 src_lines = src.count("\n") 59 filter = Filter.new(src, '-', 100) 60 assert_equal(nil, filter.lineno) 61 filter.parse(data) 62 assert_equal(100, data[:lineno]) 63 assert_equal(src_lines+100-1, filter.lineno) 64 end 65 66 def test_filter_column 67 data = {} 68 src = File.read(filename) 69 last_columns = src[/(.*)\Z/].size 70 filter = Filter.new(src) 71 assert_equal(nil, filter.column) 72 filter.parse(data) 73 assert_equal(0, data[:column]) 74 assert_equal(last_columns, filter.column) 75 end 76 77 def test_filter_token 78 data = {} 79 filter = Filter.new(File.read(filename)) 80 filter.parse(data) 81 assert_equal("begin", data[:token]) 82 end 83end if ripper_test 84