Class: Assert::Test
- Inherits:
-
Object
- Object
- Assert::Test
- Defined in:
- lib/assert/test.rb
Instance Attribute Summary collapse
-
#results ⇒ Object
readonly
Returns the value of attribute results.
- #total_result_count ⇒ Object
Class Method Summary collapse
- .for_block(name, context_info, config, &block) ⇒ Object
- .for_method(method_name, context_info, config) ⇒ Object
- .name_file_line_context_data(ci, name) ⇒ Object
-
.result_count_meth(type) ⇒ Object
a Test is some code/method to run in the scope of a Context that may produce results.
Instance Method Summary collapse
- #<=>(other_test) ⇒ Object
- #capture_result(result, callback) ⇒ Object
- #code ⇒ Object
- #config ⇒ Object
- #context_class ⇒ Object
- #context_info ⇒ Object
- #data ⇒ Object
- #file ⇒ Object
- #file_line ⇒ Object
-
#initialize(build_data = nil) ⇒ Test
constructor
A new instance of Test.
- #inspect ⇒ Object
- #line_number ⇒ Object
- #name ⇒ Object
- #output ⇒ Object
- #result_count(type = nil) ⇒ Object
- #result_rate ⇒ Object
- #run(&result_callback) ⇒ Object
- #run_time ⇒ Object
Constructor Details
#initialize(build_data = nil) ⇒ Test
Returns a new instance of Test.
41 42 43 |
# File 'lib/assert/test.rb', line 41 def initialize(build_data = nil) @build_data, @results = build_data || {}, [] end |
Instance Attribute Details
#results ⇒ Object (readonly)
Returns the value of attribute results.
38 39 40 |
# File 'lib/assert/test.rb', line 38 def results @results end |
#total_result_count ⇒ Object
50 51 52 |
# File 'lib/assert/test.rb', line 50 def total_result_count @total_result_count ||= (@build_data[:total_result_count] || 0) end |
Class Method Details
.for_block(name, context_info, config, &block) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/assert/test.rb', line 22 def self.for_block(name, context_info, config, &block) self.new(self.name_file_line_context_data(context_info, name).merge({ :context_info => context_info, :config => config, :code => block })) end |
.for_method(method_name, context_info, config) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/assert/test.rb', line 30 def self.for_method(method_name, context_info, config) self.new(self.name_file_line_context_data(context_info, method_name).merge({ :context_info => context_info, :config => config, :code => proc{ self.send(method_name) } })) end |
.name_file_line_context_data(ci, name) ⇒ Object
16 17 18 19 20 |
# File 'lib/assert/test.rb', line 16 def self.name_file_line_context_data(ci, name) { :name => ci.test_name(name), :file_line => ci.called_from } end |
.result_count_meth(type) ⇒ Object
a Test is some code/method to run in the scope of a Context that may produce results
12 13 14 |
# File 'lib/assert/test.rb', line 12 def self.result_count_meth(type) "#{type}_result_count".to_sym end |
Instance Method Details
#<=>(other_test) ⇒ Object
116 117 118 |
# File 'lib/assert/test.rb', line 116 def <=>(other_test) self.name <=> other_test.name end |
#capture_result(result, callback) ⇒ Object
89 90 91 92 93 94 95 |
# File 'lib/assert/test.rb', line 89 def capture_result(result, callback) self.results << result self.total_result_count += 1 n = result_count_meth(result.to_sym) instance_variable_set("@#{n}", (instance_variable_get("@#{n}") || 0) + 1) callback.call(result) end |
#code ⇒ Object
63 |
# File 'lib/assert/test.rb', line 63 def code; @code ||= @build_data[:code]; end |
#config ⇒ Object
62 |
# File 'lib/assert/test.rb', line 62 def config; @config ||= @build_data[:config]; end |
#context_class ⇒ Object
73 |
# File 'lib/assert/test.rb', line 73 def context_class; self.context_info.klass; end |
#context_info ⇒ Object
61 |
# File 'lib/assert/test.rb', line 61 def context_info; @context_info ||= @build_data[:context_info]; end |
#data ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/assert/test.rb', line 65 def data { :file_line => self.file_line.to_s, :name => self.name.to_s, :output => self.output.to_s, :run_time => self.run_time }.merge(result_count_data(:total_result_count => self.total_result_count)) end |
#file ⇒ Object
74 |
# File 'lib/assert/test.rb', line 74 def file; self.file_line.file; end |
#file_line ⇒ Object
45 |
# File 'lib/assert/test.rb', line 45 def file_line; @file_line ||= FileLine.parse((@build_data[:file_line] || '').to_s); end |
#inspect ⇒ Object
120 121 122 123 124 125 |
# File 'lib/assert/test.rb', line 120 def inspect attributes_string = ([ :name, :context_info, :results ].collect do |attr| "@#{attr}=#{self.send(attr).inspect}" end).join(" ") "#<#{self.class}:#{'0x0%x' % (object_id << 1)} #{attributes_string}>" end |
#line_number ⇒ Object
75 |
# File 'lib/assert/test.rb', line 75 def line_number; self.file_line.line; end |
#name ⇒ Object
46 |
# File 'lib/assert/test.rb', line 46 def name; @name ||= (@build_data[:name] || ''); end |
#output ⇒ Object
47 |
# File 'lib/assert/test.rb', line 47 def output; @output ||= (@build_data[:output] || ''); end |
#result_count(type = nil) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/assert/test.rb', line 81 def result_count(type = nil) if Assert::Result.types.keys.include?(type) self.send(result_count_meth(type)) else self.total_result_count end end |
#result_rate ⇒ Object
77 78 79 |
# File 'lib/assert/test.rb', line 77 def result_rate get_rate(self.result_count, self.run_time) end |
#run(&result_callback) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/assert/test.rb', line 97 def run(&result_callback) result_callback ||= proc{ |result| } # do nothing by default scope = self.context_class.new(self, self.config, result_callback) start_time = Time.now capture_output do self.context_class.run_arounds(scope) do run_test(scope, result_callback) end end @run_time = Time.now - start_time @results end |
#run_time ⇒ Object
48 |
# File 'lib/assert/test.rb', line 48 def run_time; @run_time ||= (@build_data[:run_time] || 0); end |