Class: WorkList::Results

Inherits:
Object
  • Object
show all
Defined in:
lib/work_list/results.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeResults



5
6
7
8
9
# File 'lib/work_list/results.rb', line 5

def initialize
  @items = []
  @successes = 0
  @failures = 0
end

Instance Attribute Details

#failuresObject (readonly)

Returns the value of attribute failures.



3
4
5
# File 'lib/work_list/results.rb', line 3

def failures
  @failures
end

#itemsObject (readonly)

Returns the value of attribute items.



3
4
5
# File 'lib/work_list/results.rb', line 3

def items
  @items
end

#successesObject (readonly)

Returns the value of attribute successes.



3
4
5
# File 'lib/work_list/results.rb', line 3

def successes
  @successes
end

Instance Method Details

#all_failures?Boolean



63
64
65
# File 'lib/work_list/results.rb', line 63

def all_failures?
  failure_rate == 1.0
end

#each_exception(&block) ⇒ Object



42
43
44
45
# File 'lib/work_list/results.rb', line 42

def each_exception(&block)
  exceptions.each(&block)
  self
end

#each_result(&block) ⇒ Object



33
34
35
36
# File 'lib/work_list/results.rb', line 33

def each_result(&block)
  results.each(&block)
  self
end

#exceptionsObject



38
39
40
# File 'lib/work_list/results.rb', line 38

def exceptions
  @items.reject { |item| item[:success] }.map { |item| item[:exception] }
end

#failure?Boolean



55
56
57
# File 'lib/work_list/results.rb', line 55

def failure?
  @failures > 0
end

#failure_rateObject



67
68
69
70
71
72
73
# File 'lib/work_list/results.rb', line 67

def failure_rate
  if noop?
    0
  else
    Rational(@failures, @items.count)
  end
end

#noop?Boolean



59
60
61
# File 'lib/work_list/results.rb', line 59

def noop?
  @items.empty?
end

#outcomesObject



47
48
49
# File 'lib/work_list/results.rb', line 47

def outcomes
  @items.map { |item| item[:success] }
end

#raise_exceptionObject



87
88
89
# File 'lib/work_list/results.rb', line 87

def raise_exception
  raise exceptions.first
end

#raise_if_all_failuresObject



79
80
81
# File 'lib/work_list/results.rb', line 79

def raise_if_all_failures
  raise_exception if all_failures?
end

#raise_if_failureObject



75
76
77
# File 'lib/work_list/results.rb', line 75

def raise_if_failure
  raise_exception if failure?
end

#raise_if_failure_rate(threshold) ⇒ Object



83
84
85
# File 'lib/work_list/results.rb', line 83

def raise_if_failure_rate(threshold)
  raise_exception if failure_rate >= threshold
end

#record_failure(exception) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/work_list/results.rb', line 20

def record_failure(exception)
  @failures += 1
  @items << {
    result: nil,
    exception: exception,
    success: false
  }
end

#record_success(result) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/work_list/results.rb', line 11

def record_success(result)
  @successes += 1
  @items << {
    result: result,
    exception: nil,
    success: true
  }
end

#resultsObject



29
30
31
# File 'lib/work_list/results.rb', line 29

def results
  @items.select { |item| item[:success] }.map { |item| item[:result] }
end

#success?Boolean



51
52
53
# File 'lib/work_list/results.rb', line 51

def success?
  @successes > 0
end