Class: Ring::SQA::AnalyzeBuffer
- Inherits:
-
Object
- Object
- Ring::SQA::AnalyzeBuffer
- Defined in:
- lib/ring/sqa/analyzer.rb
Instance Attribute Summary collapse
-
#array ⇒ Object
readonly
Returns the value of attribute array.
Instance Method Summary collapse
- #exceed_median?(tolerance = CFG.analyzer.tolerance) ⇒ Boolean
- #exceeding_nodes ⇒ Object
-
#initialize(nodes_count, max_size = CFG.analyzer.size, median_of = CFG.analyzer.median_of) ⇒ AnalyzeBuffer
constructor
A new instance of AnalyzeBuffer.
- #median ⇒ Object
- #node_count ⇒ Object
- #push(e) ⇒ Object
Constructor Details
#initialize(nodes_count, max_size = CFG.analyzer.size, median_of = CFG.analyzer.median_of) ⇒ AnalyzeBuffer
Returns a new instance of AnalyzeBuffer.
55 56 57 58 59 60 61 |
# File 'lib/ring/sqa/analyzer.rb', line 55 def initialize nodes_count, max_size=CFG.analyzer.size, median_of=CFG.analyzer.median_of @max_size = max_size @median_of = median_of nodes_count = CFG.fake? ? 0 : nodes_count init_nodes = Array.new nodes_count * 2, '' @array = Array.new max_size, init_nodes end |
Instance Attribute Details
#array ⇒ Object (readonly)
Returns the value of attribute array.
54 55 56 |
# File 'lib/ring/sqa/analyzer.rb', line 54 def array @array end |
Instance Method Details
#exceed_median?(tolerance = CFG.analyzer.tolerance) ⇒ Boolean
70 71 72 73 74 |
# File 'lib/ring/sqa/analyzer.rb', line 70 def exceed_median? tolerance=CFG.analyzer.tolerance violate_relative = (median+1)*tolerance.relative violate_absolute = (median+1)+tolerance.absolute node_count[@median_of..-1].all? { |e| e > violate_relative && e > violate_absolute } end |
#exceeding_nodes ⇒ Object
78 79 80 81 |
# File 'lib/ring/sqa/analyzer.rb', line 78 def exceeding_nodes exceed = @array[@median_of..-1].inject :& exceed - @array[0..@median_of-1].flatten.uniq end |
#median ⇒ Object
66 67 68 69 |
# File 'lib/ring/sqa/analyzer.rb', line 66 def median last = @median_of-1 node_count[0..last].sort[last/2] end |
#node_count ⇒ Object
75 76 77 |
# File 'lib/ring/sqa/analyzer.rb', line 75 def node_count @array.map { |nodes| nodes.size } end |
#push(e) ⇒ Object
62 63 64 65 |
# File 'lib/ring/sqa/analyzer.rb', line 62 def push e @array.shift @array.push e end |