MiniTest::Unit::TestCase
# File test/pt_testcase.rb, line 49 49: def self.add_test name, data, klass = self.name[4..1] 50: name = name.to_s 51: klass = klass.to_s 52: 53: if testcases.has_key? name then 54: if testcases[name].has_key? klass then 55: warn "testcase #{klass}##{name} already has data" 56: else 57: testcases[name][klass] = data 58: end 59: else 60: warn "testcase #{name} does not exist" 61: end 62: end
# File test/pt_testcase.rb, line 64 64: def self.add_tests name, hash 65: name = name.to_s 66: 67: hash.each do |klass, data| 68: warn "testcase #{klass}##{name} already has data" if 69: testcases[name].has_key? klass 70: testcases[name][klass] = data 71: end 72: end
# File test/pt_testcase.rb, line 74 74: def self.clone_same 75: @@testcases.each do |node, data| 76: data.each do |key, val| 77: if val == :same then 78: prev_key = self.previous(key) 79: data[key] = data[prev_key].deep_clone 80: end 81: end 82: end 83: end
# File test/pt_testcase.rb, line 85 85: def self.copy_test_case nonverbose, klass 86: verbose = nonverbose + "_mri_verbose_flag" 87: testcases[verbose][klass] = testcases[nonverbose][klass] 88: end
# File test/pt_testcase.rb, line 90 90: def self.generate_test klass, node, data, input_name, output_name 91: klass.send(:define_method, "test_#{node}".to_sym) do 92: flunk "Processor is nil" if processor.nil? 93: 94: assert data.has_key?(input_name), "Unknown input data" 95: assert data.has_key?(output_name), "Missing test data" 96: 97: $missing[node] << output_name unless data.has_key? output_name 98: 99: input = data[input_name].deep_clone 100: expected = data[output_name].deep_clone 101: 102: case expected 103: when :unsupported then 104: assert_raises(UnsupportedNodeError) do 105: processor.process(input) 106: end 107: else 108: extra_expected = [] 109: extra_input = [] 110: 111: _, expected, extra_expected = *expected if 112: Array === expected and expected.first == :defx 113: _, input, extra_input = *input if 114: Array === input and input.first == :defx 115: 116: # OMG... I can't believe I have to do this this way. these 117: # hooks are here instead of refactoring this define_method 118: # body into an assertion. It'll allow subclasses to hook in 119: # and add behavior before or after the processor does it's 120: # thing. If you go the body refactor route, some of the 121: # RawParseTree test casese fail for completely bogus reasons. 122: 123: before_process_hook klass, node, data, input_name, output_name 124: refute_nil data[input_name], "testcase does not exist?" 125: @result = processor.process input 126: assert_equal(expected, @result, 127: "failed on input: #{data[input_name].inspect}") 128: after_process_hook klass, node, data, input_name, output_name 129: 130: extra_input.each do |extra| 131: processor.process(extra) 132: end 133: extra = processor.extra_methods rescue [] 134: assert_equal extra_expected, extra 135: end 136: end 137: end
# File test/pt_testcase.rb, line 139 139: def self.generate_tests klass 140: install_missing_reporter 141: clone_same 142: 143: output_name = klass.name.to_s.sub(/^Test/, '') 144: 145: input_name = self.previous(output_name) 146: 147: @@testcases.each do |node, data| 148: next if [:skip, :unsupported].include? data[input_name] 149: next if data[output_name] == :skip 150: 151: generate_test klass, node, data, input_name, output_name 152: end 153: end
# File test/pt_testcase.rb, line 155 155: def self.inherited klass 156: super 157: 158: generate_tests klass unless klass.name =~ /TestCase/ 159: end
# File test/pt_testcase.rb, line 161 161: def self.install_missing_reporter 162: unless defined? $missing then 163: $missing = Hash.new { |h,k| h[k] = [] } 164: at_exit { 165: at_exit { 166: warn "" 167: $missing.sort.each do |name, klasses| 168: warn "add_tests(#{name.inspect}," 169: klasses.map! { |klass| " #{klass.inspect} => :same" } 170: warn klasses.join("\n") + ")" 171: end 172: warn "" 173: } 174: } 175: end 176: end
# File test/pt_testcase.rb, line 178 178: def self.previous(key, extra=0) # FIX: remove R2C code 179: idx = @@testcase_order.index(key) 180: 181: raise "Unknown class #{key} in @@testcase_order" if idx.nil? 182: 183: case key 184: when "RubyToRubyC" then 185: idx -= 1 186: end 187: @@testcase_order[idx - 1 - extra] 188: end
# File test/pt_testcase.rb, line 190 190: def self.testcase_order; @@testcase_order; end
# File test/pt_testcase.rb, line 43 43: def after_process_hook klass, node, data, input_name, output_name 44: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.