dr_light 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -2
- data/config/check_specs.yml +1 -0
- data/config/yardstick.yml +3 -0
- data/lib/dr_light/matchers.rb +50 -0
- data/lib/dr_light/matchers/close_to.rb +88 -0
- data/lib/dr_light/scientific_number.rb +29 -3
- data/lib/dr_light/scientific_number/deviance_distance.rb +98 -0
- data/lib/dr_light/scientific_number/formatter.rb +2 -2
- data/lib/dr_light/version.rb +1 -1
- data/spec/integration/dr_light/matchers_spec.rb +119 -0
- data/spec/integration/yard/dr_light/matchers_spec.rb +23 -0
- data/spec/integration/yard/dr_light/scientific_number/deviance_distance_spec.rb +29 -0
- data/spec/integration/yard/dr_light/scientific_number_spec.rb +18 -0
- data/spec/lib/dr_light/matchers/close_to_spec.rb +195 -0
- data/spec/lib/dr_light/scientific_number/deviance_distance_spec.rb +191 -0
- data/spec/lib/dr_light/scientific_number/normalizer_spec.rb +3 -2
- data/spec/lib/dr_light/scientific_number_spec.rb +181 -0
- data/spec/spec_helper.rb +2 -0
- metadata +9 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ac81b75a566891c9d1665bfe992e0cae6b17fd58966bdc73ed5262c0324daf7
|
4
|
+
data.tar.gz: 2e35f897b216a715d001ab6e4a18aeb9ccff6e29d9c64670eb707f8697a8c857
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f79b5d554f23111d5b73b9f1e72de7fbee4e947448d8838cd460e053328b7616af3048d5b643bc544a4310f6cab36c71d715af95986d138bf28d1a656e92d5ac
|
7
|
+
data.tar.gz: 931a3d0eff2d2857cadc13e91d4cf948a9aea91f3c0b52015c498708b3fa064a77ea0c9fc5fbd32ecdca0d6ebf6784740a1c2fc40fdaafe8977491f82b8f9a00
|
data/README.md
CHANGED
@@ -4,12 +4,11 @@ DrLight
|
|
4
4
|
[](https://codeclimate.com/github/darthjee/dr_light/coverage)
|
5
5
|
[](https://codeclimate.com/github/darthjee/dr_light)
|
6
6
|
[](https://badge.fury.io/rb/dr_light)
|
7
|
-
[](http://inch-ci.org/github/darthjee/dr_light)
|
8
7
|
|
9
8
|
|
10
9
|

|
11
10
|
|
12
11
|
Yard Documentation
|
13
12
|
-------------------
|
14
|
-
https://www.rubydoc.info/gems/dr_light/0.0.
|
13
|
+
https://www.rubydoc.info/gems/dr_light/0.0.3
|
15
14
|
|
data/config/check_specs.yml
CHANGED
data/config/yardstick.yml
CHANGED
@@ -19,6 +19,7 @@ rules:
|
|
19
19
|
- DrLight::ScientificNumber#value
|
20
20
|
- DrLight::ScientificNumber#deviance
|
21
21
|
- DrLight::ScientificNumber#initialize
|
22
|
+
- DrLight::ScientificNumber::DevianceDistance#initialize
|
22
23
|
- DrLight::ScientificNumber::Formatter#initialize
|
23
24
|
- DrLight::ScientificNumber::Normalizer#initialize
|
24
25
|
ReturnTag:
|
@@ -27,7 +28,9 @@ rules:
|
|
27
28
|
Summary::Presence:
|
28
29
|
enabled: true
|
29
30
|
exclude:
|
31
|
+
- DrLight::Matchers::CloseTo#initialize
|
30
32
|
- DrLight::ScientificNumber#initialize
|
33
|
+
- DrLight::ScientificNumber::DevianceDistance#initialize
|
31
34
|
- DrLight::ScientificNumber::Formatter#initialize
|
32
35
|
- DrLight::ScientificNumber::Normalizer#initialize
|
33
36
|
Summary::Length:
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DrLight
|
4
|
+
# @api public
|
5
|
+
#
|
6
|
+
# Rspec matchers DSL to be included in rspec
|
7
|
+
#
|
8
|
+
# @example
|
9
|
+
# RSpec.configure do |config|
|
10
|
+
# config.include DrLight::Matchers
|
11
|
+
# end
|
12
|
+
module Matchers
|
13
|
+
autoload :CloseTo, 'dr_light/matchers/close_to'
|
14
|
+
|
15
|
+
# Checks if value is close to expected value
|
16
|
+
#
|
17
|
+
# @overload be_close_to(expected, deviance: nil)
|
18
|
+
# @param expected [Number] Target to be close to
|
19
|
+
# @param deviance [Number] Closeness deviance
|
20
|
+
#
|
21
|
+
# @overload be_close_to(expected)
|
22
|
+
# @param expected [ScientificNumber] target to be close to
|
23
|
+
#
|
24
|
+
# @return [CloseTo]
|
25
|
+
#
|
26
|
+
# @example
|
27
|
+
# describe DrLight::Matchers do
|
28
|
+
# describe 'be_close_to' do
|
29
|
+
# subject(:value) { 10.0 }
|
30
|
+
#
|
31
|
+
# context 'when they are close' do
|
32
|
+
# it do
|
33
|
+
# expect(value).to be_close_to(11, deviance: 1)
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# context 'when they are not close' do
|
38
|
+
# let(:expected) { DrLight::ScientificNumber.new(9, 0.5) }
|
39
|
+
#
|
40
|
+
# it do
|
41
|
+
# expect(value).not_to be_close_to(expected)
|
42
|
+
# end
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
# end
|
46
|
+
def be_close_to(expected, deviance: nil)
|
47
|
+
CloseTo.new(expected, deviance)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DrLight
|
4
|
+
module Matchers
|
5
|
+
# @api private
|
6
|
+
# @author darthjee
|
7
|
+
#
|
8
|
+
# Matcher checking that 2 numbers are
|
9
|
+
# close to each other
|
10
|
+
class CloseTo < RSpec::Matchers::BuiltIn::BaseMatcher
|
11
|
+
# @overload initialize(expected, deviance)
|
12
|
+
# @param expected [Number] expected value
|
13
|
+
# to be close to
|
14
|
+
# @param deviance [Number] Proximity deviance
|
15
|
+
# @overload initialize(expected)
|
16
|
+
# @param expected [ScientificNumber] expected value
|
17
|
+
# to be close to
|
18
|
+
def initialize(expected, deviance)
|
19
|
+
@expected = if expected.is_a?(ScientificNumber)
|
20
|
+
expected
|
21
|
+
else
|
22
|
+
ScientificNumber.new(expected, deviance)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# returns if actual is close to expected
|
27
|
+
#
|
28
|
+
# @return [TrueClass,FalseClass]
|
29
|
+
def matches?(actual)
|
30
|
+
@actual = actual
|
31
|
+
|
32
|
+
distance <= 1.0
|
33
|
+
end
|
34
|
+
|
35
|
+
# returns matcher description on success
|
36
|
+
#
|
37
|
+
# @return [String]
|
38
|
+
def description
|
39
|
+
"be close to #{expected}"
|
40
|
+
end
|
41
|
+
|
42
|
+
# returns message for failure on should
|
43
|
+
#
|
44
|
+
# @return [String]
|
45
|
+
def failure_message_for_should
|
46
|
+
"expected #{actual} to be close to #{expected} but " \
|
47
|
+
"was #{distance} deviances far away"
|
48
|
+
end
|
49
|
+
|
50
|
+
# returns message for failure on should not
|
51
|
+
#
|
52
|
+
# @return [String]
|
53
|
+
def failure_message_for_should_not
|
54
|
+
"expected #{actual} not to be close to #{expected} " \
|
55
|
+
"but was only #{distance} deviances far away"
|
56
|
+
end
|
57
|
+
|
58
|
+
alias failure_message failure_message_for_should
|
59
|
+
alias failure_message_when_negated failure_message_for_should_not
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
attr_reader :expected, :actual
|
64
|
+
# @method expected
|
65
|
+
# @api private
|
66
|
+
# @private
|
67
|
+
#
|
68
|
+
# expected value to be close to
|
69
|
+
#
|
70
|
+
# @return [ScientificNumber]
|
71
|
+
|
72
|
+
# @method actual
|
73
|
+
# @api private
|
74
|
+
# @private
|
75
|
+
#
|
76
|
+
# value to be close to expected
|
77
|
+
#
|
78
|
+
# @return [Number,ScientificNumber]
|
79
|
+
|
80
|
+
# distance in deviances between the 2 numbers
|
81
|
+
#
|
82
|
+
# @return [Float]
|
83
|
+
def distance
|
84
|
+
@distance ||= expected.deviance_distance(actual)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -6,6 +6,9 @@ module DrLight
|
|
6
6
|
#
|
7
7
|
# Number to be exibed in scientific number
|
8
8
|
class ScientificNumber
|
9
|
+
autoload :DevianceDistance,
|
10
|
+
'dr_light/scientific_number/deviance_distance'
|
11
|
+
|
9
12
|
autoload :Formatter, 'dr_light/scientific_number/formatter'
|
10
13
|
autoload :Normalizer, 'dr_light/scientific_number/normalizer'
|
11
14
|
|
@@ -26,9 +29,9 @@ module DrLight
|
|
26
29
|
|
27
30
|
# @param value [Nuber] number to be exibed
|
28
31
|
# @param deviance [Number] deviance of number
|
29
|
-
def initialize(value, deviance =
|
30
|
-
@value
|
31
|
-
@deviance = deviance
|
32
|
+
def initialize(value, deviance = nil)
|
33
|
+
@value = value.to_f
|
34
|
+
@deviance = deviance.to_f
|
32
35
|
end
|
33
36
|
|
34
37
|
# string representation of number
|
@@ -47,6 +50,29 @@ module DrLight
|
|
47
50
|
)
|
48
51
|
end
|
49
52
|
|
53
|
+
# Calculates the distance to another number in deviances
|
54
|
+
#
|
55
|
+
# the deviance will be a composition of both numbers
|
56
|
+
# deviances
|
57
|
+
#
|
58
|
+
# @example With Number
|
59
|
+
# number = DrLight::ScientificNumber.new(100, 3)
|
60
|
+
#
|
61
|
+
# number.deviance_distance(115) # returns 5
|
62
|
+
#
|
63
|
+
# @example With scientifica number
|
64
|
+
# number = DrLight::ScientificNumber.new(100, 3)
|
65
|
+
# other = DrLight::ScientificNumber.new(115, 4)
|
66
|
+
#
|
67
|
+
# number.deviance_distance(other) # returns 3
|
68
|
+
#
|
69
|
+
# @see DevianceDistance
|
70
|
+
#
|
71
|
+
# @return [Float] always positive number
|
72
|
+
def deviance_distance(other)
|
73
|
+
DevianceDistance.new(self, other).to_f
|
74
|
+
end
|
75
|
+
|
50
76
|
private
|
51
77
|
|
52
78
|
# @private
|
@@ -0,0 +1,98 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DrLight
|
4
|
+
class ScientificNumber
|
5
|
+
# @api private
|
6
|
+
#
|
7
|
+
# @author Dathjee
|
8
|
+
#
|
9
|
+
# Class Responsible for calculating distance between 2 numbers
|
10
|
+
# in number of deviances
|
11
|
+
#
|
12
|
+
# The combined deviance of numbers n1(d1), n2(d2)
|
13
|
+
# is d = sqrt(d1 ** 2 + d2 ** 2)
|
14
|
+
#
|
15
|
+
# @example With scientific number
|
16
|
+
# number = DrLight::ScientificNumber.new(100, 3)
|
17
|
+
# other = DrLight::ScientificNumber.new(110, 4)
|
18
|
+
#
|
19
|
+
# distance = DrLight::ScientificNumber::DevianceDistance.new(
|
20
|
+
# number, other
|
21
|
+
# )
|
22
|
+
#
|
23
|
+
# distance.to_f # returns 2
|
24
|
+
#
|
25
|
+
# @example With scientific number
|
26
|
+
# number = DrLight::ScientificNumber.new(100, 3)
|
27
|
+
# other = 91
|
28
|
+
#
|
29
|
+
# distance = DrLight::ScientificNumber::DevianceDistance.new(
|
30
|
+
# number, other
|
31
|
+
# )
|
32
|
+
#
|
33
|
+
# distance.to_f # returns 3
|
34
|
+
class DevianceDistance
|
35
|
+
# @param number [ScientificNumber] first number
|
36
|
+
# @param other [ScientificNumber,Number] second number
|
37
|
+
def initialize(number, other)
|
38
|
+
@number = number
|
39
|
+
|
40
|
+
@other = if other.is_a?(ScientificNumber)
|
41
|
+
other
|
42
|
+
else
|
43
|
+
ScientificNumber.new(other)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# Calculates the distance of numbers in deviances
|
48
|
+
#
|
49
|
+
# @return [Float] always positive number
|
50
|
+
def to_f
|
51
|
+
return 0 if difference.zero?
|
52
|
+
|
53
|
+
difference / deviance
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
attr_reader :number, :other
|
59
|
+
# @method number
|
60
|
+
# @api private
|
61
|
+
# @private
|
62
|
+
#
|
63
|
+
# first number
|
64
|
+
#
|
65
|
+
# @return [ScientificNumber]
|
66
|
+
|
67
|
+
# @method other
|
68
|
+
# @api private
|
69
|
+
# @private
|
70
|
+
#
|
71
|
+
# second_number
|
72
|
+
#
|
73
|
+
# @return [ScientificNumber]
|
74
|
+
|
75
|
+
# @private
|
76
|
+
# Raw difference between two numbers
|
77
|
+
#
|
78
|
+
# @return [Float] always positive number
|
79
|
+
def difference
|
80
|
+
@difference ||= (other.value - number.value).abs
|
81
|
+
end
|
82
|
+
|
83
|
+
# @private
|
84
|
+
#
|
85
|
+
# Combined deviances
|
86
|
+
#
|
87
|
+
# Combined deviances of n1(d1) and n2(d2)
|
88
|
+
# is d = sqrt(d1 ** 2 + d2 ** 2)
|
89
|
+
#
|
90
|
+
# @return [Float] always positive number
|
91
|
+
def deviance
|
92
|
+
@deviance ||= Math.sqrt(
|
93
|
+
number.deviance**2 + other.deviance**2
|
94
|
+
)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -8,8 +8,8 @@ module DrLight
|
|
8
8
|
# Class responsible for formatting the values of
|
9
9
|
# {ScientificNumber}
|
10
10
|
class Formatter
|
11
|
-
# @param
|
12
|
-
#
|
11
|
+
# @param normalizer [Normalizer] normalizer with number
|
12
|
+
# and deviance information
|
13
13
|
def initialize(normalizer)
|
14
14
|
@normalizer = normalizer
|
15
15
|
end
|
data/lib/dr_light/version.rb
CHANGED
@@ -0,0 +1,119 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe DrLight::Matchers do
|
6
|
+
describe 'be_close_to' do
|
7
|
+
subject(:value) { 10.0 }
|
8
|
+
|
9
|
+
context 'when passing numbers without deviance' do
|
10
|
+
context 'when they are the same' do
|
11
|
+
it do
|
12
|
+
expect(value).to be_close_to(10)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when they are not the same' do
|
17
|
+
it do
|
18
|
+
expect(value).not_to be_close_to(10.00001)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when passing numbers with deviance' do
|
24
|
+
context 'when they are the same' do
|
25
|
+
it do
|
26
|
+
expect(value).to be_close_to(10, deviance: 1)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when they are not the same but close' do
|
31
|
+
it do
|
32
|
+
expect(value).to be_close_to(11, deviance: 1)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when they are not the same and not close' do
|
37
|
+
it do
|
38
|
+
expect(value).not_to be_close_to(11.1, deviance: 1)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'when passing scientific number for expected' do
|
44
|
+
context 'when they are the same' do
|
45
|
+
let(:expected) { DrLight::ScientificNumber.new(10, 1) }
|
46
|
+
|
47
|
+
it do
|
48
|
+
expect(value).to be_close_to(expected)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'when they are not the same but close' do
|
53
|
+
let(:expected) { DrLight::ScientificNumber.new(9, 1) }
|
54
|
+
|
55
|
+
it do
|
56
|
+
expect(value).to be_close_to(expected)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'when they are not the same and not close' do
|
61
|
+
let(:expected) { DrLight::ScientificNumber.new(8.9, 1) }
|
62
|
+
|
63
|
+
it do
|
64
|
+
expect(value).not_to be_close_to(expected)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context 'when scientific number is close to number' do
|
70
|
+
let(:value) { DrLight::ScientificNumber.new(10, 1) }
|
71
|
+
|
72
|
+
context 'when they are the same' do
|
73
|
+
it do
|
74
|
+
expect(value).to be_close_to(10)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'when they are not the same but close' do
|
79
|
+
it do
|
80
|
+
expect(value).to be_close_to(11)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'when they are not the same but not close' do
|
85
|
+
it do
|
86
|
+
expect(value).not_to be_close_to(8)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context 'when both are scientific numbers' do
|
92
|
+
let(:value) { DrLight::ScientificNumber.new(10, 3) }
|
93
|
+
|
94
|
+
context 'when they are the same' do
|
95
|
+
let(:other) { DrLight::ScientificNumber.new(10, 4) }
|
96
|
+
|
97
|
+
it do
|
98
|
+
expect(value).to be_close_to(other)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
context 'when they are not the same but close' do
|
103
|
+
let(:other) { DrLight::ScientificNumber.new(5, 4) }
|
104
|
+
|
105
|
+
it do
|
106
|
+
expect(value).to be_close_to(other)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context 'when they are not the same but not close' do
|
111
|
+
let(:other) { DrLight::ScientificNumber.new(16, 4) }
|
112
|
+
|
113
|
+
it do
|
114
|
+
expect(value).not_to be_close_to(other)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe DrLight::Matchers do
|
6
|
+
describe 'be_close_to' do
|
7
|
+
subject(:value) { 10.0 }
|
8
|
+
|
9
|
+
context 'when they are close' do
|
10
|
+
it do
|
11
|
+
expect(value).to be_close_to(11, deviance: 1)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'when they are not close' do
|
16
|
+
let(:expected) { DrLight::ScientificNumber.new(9, 0.5) }
|
17
|
+
|
18
|
+
it do
|
19
|
+
expect(value).not_to be_close_to(expected)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe DrLight::ScientificNumber::DevianceDistance do
|
6
|
+
describe '#to_f' do
|
7
|
+
describe 'yard' do
|
8
|
+
subject(:distance) { described_class.new(number, other) }
|
9
|
+
|
10
|
+
let(:number) { DrLight::ScientificNumber.new(100, 3) }
|
11
|
+
|
12
|
+
context 'with scientific number' do
|
13
|
+
let(:other) { DrLight::ScientificNumber.new(110, 4) }
|
14
|
+
|
15
|
+
it 'calculates distance' do
|
16
|
+
expect(distance.to_f).to eq(2)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'with number' do
|
21
|
+
let(:other) { 91 }
|
22
|
+
|
23
|
+
it 'calculates distance' do
|
24
|
+
expect(distance.to_f).to eq(3)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -15,4 +15,22 @@ describe DrLight::ScientificNumber do
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
18
|
+
|
19
|
+
describe 'deviance_distance' do
|
20
|
+
subject(:number) { described_class.new(100, 3) }
|
21
|
+
|
22
|
+
context 'when other is a number' do
|
23
|
+
it 'returns the deviance distance' do
|
24
|
+
expect(number.deviance_distance(115)).to eq(5)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when other is a scientific number' do
|
29
|
+
let(:other) { described_class.new(115, 4) }
|
30
|
+
|
31
|
+
it 'returns the deviance distance' do
|
32
|
+
expect(number.deviance_distance(other)).to eq(3)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
18
36
|
end
|
@@ -0,0 +1,195 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe DrLight::Matchers::CloseTo do
|
6
|
+
subject(:matcher) { described_class.new(expected, deviance) }
|
7
|
+
|
8
|
+
let(:expected) { 120 }
|
9
|
+
let(:deviance) { 10 }
|
10
|
+
|
11
|
+
describe '#matches?' do
|
12
|
+
context 'when passing a number' do
|
13
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
14
|
+
let(:number) { 111 }
|
15
|
+
|
16
|
+
it do
|
17
|
+
expect(matcher).to be_matches(number)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
22
|
+
let(:number) { 139 }
|
23
|
+
|
24
|
+
it do
|
25
|
+
expect(matcher).not_to be_matches(number)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'when passing a number equal' do
|
30
|
+
let(:number) { 120 }
|
31
|
+
|
32
|
+
it do
|
33
|
+
expect(matcher).to be_matches(number)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when passing a scientific number without deviance' do
|
39
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
40
|
+
let(:number) { DrLight::ScientificNumber.new(111) }
|
41
|
+
|
42
|
+
it do
|
43
|
+
expect(matcher).to be_matches(number)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
48
|
+
let(:number) { DrLight::ScientificNumber.new(139) }
|
49
|
+
|
50
|
+
it do
|
51
|
+
expect(matcher).not_to be_matches(number)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'when passing a number equal' do
|
56
|
+
let(:number) { DrLight::ScientificNumber.new(120) }
|
57
|
+
|
58
|
+
it do
|
59
|
+
expect(matcher).to be_matches(number)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when passing a scientific number and having no deviance' do
|
65
|
+
let(:deviance) { 0 }
|
66
|
+
|
67
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
68
|
+
let(:number) { DrLight::ScientificNumber.new(111) }
|
69
|
+
|
70
|
+
it do
|
71
|
+
expect(matcher).not_to be_matches(number)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
76
|
+
let(:number) { DrLight::ScientificNumber.new(139) }
|
77
|
+
|
78
|
+
it do
|
79
|
+
expect(matcher).not_to be_matches(number)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'when passing a number equal' do
|
84
|
+
let(:number) { DrLight::ScientificNumber.new(120) }
|
85
|
+
|
86
|
+
it do
|
87
|
+
expect(matcher).to be_matches(number)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context 'when passing a scientific number with deviance' do
|
93
|
+
let(:deviance) { 40 }
|
94
|
+
|
95
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
96
|
+
let(:number) { DrLight::ScientificNumber.new(80, 30) }
|
97
|
+
|
98
|
+
it do
|
99
|
+
expect(matcher).to be_matches(number)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
104
|
+
let(:number) { DrLight::ScientificNumber.new(30, 30) }
|
105
|
+
|
106
|
+
it do
|
107
|
+
expect(matcher).not_to be_matches(number)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context 'when passing a number equal' do
|
112
|
+
let(:number) { DrLight::ScientificNumber.new(120, 30) }
|
113
|
+
|
114
|
+
it do
|
115
|
+
expect(matcher).to be_matches(number)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
context 'when passing a number with deviance and having no deviance' do
|
121
|
+
let(:deviance) { 0 }
|
122
|
+
|
123
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
124
|
+
let(:number) { DrLight::ScientificNumber.new(111, 10) }
|
125
|
+
|
126
|
+
it do
|
127
|
+
expect(matcher).to be_matches(number)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
132
|
+
let(:number) { DrLight::ScientificNumber.new(139, 10) }
|
133
|
+
|
134
|
+
it do
|
135
|
+
expect(matcher).not_to be_matches(number)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context 'when passing a number equal' do
|
140
|
+
let(:number) { DrLight::ScientificNumber.new(120, 10) }
|
141
|
+
|
142
|
+
it do
|
143
|
+
expect(matcher).to be_matches(number)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe '#description' do
|
150
|
+
it 'returns description' do
|
151
|
+
expect(matcher.description)
|
152
|
+
.to eq('be close to 1.20(10)e2')
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
describe '#failure_message_for_should' do
|
157
|
+
it 'returns failure message' do
|
158
|
+
expect(matcher.failure_message_for_should)
|
159
|
+
.to eq(
|
160
|
+
'expected to be close to 1.20(10)e2 ' \
|
161
|
+
'but was 12.0 deviances far away'
|
162
|
+
)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
describe '#failure_message' do
|
167
|
+
it 'returns failure message' do
|
168
|
+
expect(matcher.failure_message)
|
169
|
+
.to eq(
|
170
|
+
'expected to be close to 1.20(10)e2 ' \
|
171
|
+
'but was 12.0 deviances far away'
|
172
|
+
)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe '#failure_message_for_should_not' do
|
177
|
+
it 'returns failure message' do
|
178
|
+
expect(matcher.failure_message_for_should_not)
|
179
|
+
.to eq(
|
180
|
+
'expected not to be close to 1.20(10)e2 but ' \
|
181
|
+
'was only 12.0 deviances far away'
|
182
|
+
)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
describe '#failure_message_when_negated' do
|
187
|
+
it 'returns failure message' do
|
188
|
+
expect(matcher.failure_message_when_negated)
|
189
|
+
.to eq(
|
190
|
+
'expected not to be close to 1.20(10)e2 but ' \
|
191
|
+
'was only 12.0 deviances far away'
|
192
|
+
)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
@@ -0,0 +1,191 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe DrLight::ScientificNumber::DevianceDistance do
|
6
|
+
subject(:distance) { described_class.new(number, other) }
|
7
|
+
|
8
|
+
let(:value) { 120 }
|
9
|
+
let(:deviance) { 10 }
|
10
|
+
let(:number) do
|
11
|
+
DrLight::ScientificNumber.new(value, deviance)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'to_f' do
|
15
|
+
context 'when passing a number' do
|
16
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
17
|
+
let(:other) { 111 }
|
18
|
+
|
19
|
+
it do
|
20
|
+
expect(distance.to_f).to be_positive
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'returns deviance distance' do
|
24
|
+
expect(distance.to_f).to eq(0.9)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
29
|
+
let(:other) { 139 }
|
30
|
+
|
31
|
+
it do
|
32
|
+
expect(distance.to_f).to be_positive
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'returns deviance distance' do
|
36
|
+
expect(distance.to_f).to eq(1.9)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when passing a number equal' do
|
41
|
+
let(:other) { 120 }
|
42
|
+
|
43
|
+
it do
|
44
|
+
expect(distance.to_f).to be_zero
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when passing a scientific number without deviance' do
|
50
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
51
|
+
let(:other) { DrLight::ScientificNumber.new(111) }
|
52
|
+
|
53
|
+
it do
|
54
|
+
expect(distance.to_f).to be_positive
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'returns deviance distance' do
|
58
|
+
expect(distance.to_f).to eq(0.9)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
63
|
+
let(:other) { DrLight::ScientificNumber.new(139) }
|
64
|
+
|
65
|
+
it do
|
66
|
+
expect(distance.to_f).to be_positive
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'returns deviance distance' do
|
70
|
+
expect(distance.to_f).to eq(1.9)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when passing a number equal' do
|
75
|
+
let(:other) { DrLight::ScientificNumber.new(120) }
|
76
|
+
|
77
|
+
it do
|
78
|
+
expect(distance.to_f).to be_zero
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'when passing a scientific number and having no deviance' do
|
84
|
+
let(:deviance) { 0 }
|
85
|
+
|
86
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
87
|
+
let(:other) { DrLight::ScientificNumber.new(111) }
|
88
|
+
|
89
|
+
it do
|
90
|
+
expect(distance.to_f).to be_positive
|
91
|
+
end
|
92
|
+
|
93
|
+
it do
|
94
|
+
expect(distance.to_f).to eq(Float::INFINITY)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
99
|
+
let(:other) { DrLight::ScientificNumber.new(139) }
|
100
|
+
|
101
|
+
it do
|
102
|
+
expect(distance.to_f).to be_positive
|
103
|
+
end
|
104
|
+
|
105
|
+
it do
|
106
|
+
expect(distance.to_f).to eq(Float::INFINITY)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context 'when passing a number equal' do
|
111
|
+
let(:other) { DrLight::ScientificNumber.new(120) }
|
112
|
+
|
113
|
+
it do
|
114
|
+
expect(distance.to_f).to be_zero
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
context 'when passing a scientific number with deviance' do
|
120
|
+
let(:deviance) { 40 }
|
121
|
+
|
122
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
123
|
+
let(:other) { DrLight::ScientificNumber.new(80, 30) }
|
124
|
+
|
125
|
+
it do
|
126
|
+
expect(distance.to_f).to be_positive
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'returns deviance distance with combined deviance' do
|
130
|
+
expect(distance.to_f).to eq(0.8)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
135
|
+
let(:other) { DrLight::ScientificNumber.new(30, 30) }
|
136
|
+
|
137
|
+
it do
|
138
|
+
expect(distance.to_f).to be_positive
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'returns deviance distance with combined deviance' do
|
142
|
+
expect(distance.to_f).to eq(1.8)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context 'when passing a number equal' do
|
147
|
+
let(:other) { DrLight::ScientificNumber.new(120, 30) }
|
148
|
+
|
149
|
+
it do
|
150
|
+
expect(distance.to_f).to be_zero
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
context 'when passing a number with deviance and having no deviance' do
|
156
|
+
let(:deviance) { 0 }
|
157
|
+
|
158
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
159
|
+
let(:other) { DrLight::ScientificNumber.new(111, 10) }
|
160
|
+
|
161
|
+
it do
|
162
|
+
expect(distance.to_f).to be_positive
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'returns deviance distance with combined deviance' do
|
166
|
+
expect(distance.to_f).to eq(0.9)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
171
|
+
let(:other) { DrLight::ScientificNumber.new(139, 10) }
|
172
|
+
|
173
|
+
it do
|
174
|
+
expect(distance.to_f).to be_positive
|
175
|
+
end
|
176
|
+
|
177
|
+
it 'returns deviance distance with combined deviance' do
|
178
|
+
expect(distance.to_f).to eq(1.9)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
context 'when passing a number equal' do
|
183
|
+
let(:other) { DrLight::ScientificNumber.new(120, 10) }
|
184
|
+
|
185
|
+
it do
|
186
|
+
expect(distance.to_f).to be_zero
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
@@ -5,12 +5,13 @@ require 'spec_helper'
|
|
5
5
|
shared_examples 'value normalized' do |order:, expctd_order: 1, devnc_fctr: 0|
|
6
6
|
let(:multiplier) { 0.1 * 10**order }
|
7
7
|
let(:expected_multiplier) { 10**expctd_order }
|
8
|
+
let(:random) { Random.rand * 0.9 + 0.1 }
|
8
9
|
let(:deviance) do
|
9
10
|
Random.rand * multiplier * devnc_fctr
|
10
11
|
end
|
11
12
|
|
12
13
|
context 'when value is positive' do
|
13
|
-
let(:value) {
|
14
|
+
let(:value) { random * multiplier }
|
14
15
|
let(:range) do
|
15
16
|
[0.1 * expected_multiplier, expected_multiplier]
|
16
17
|
end
|
@@ -21,7 +22,7 @@ shared_examples 'value normalized' do |order:, expctd_order: 1, devnc_fctr: 0|
|
|
21
22
|
end
|
22
23
|
|
23
24
|
context 'when value is positive' do
|
24
|
-
let(:value) { -1 *
|
25
|
+
let(:value) { -1 * random * multiplier }
|
25
26
|
let(:range) do
|
26
27
|
[-expected_multiplier, -0.1 * expected_multiplier]
|
27
28
|
end
|
@@ -5,6 +5,9 @@ require 'spec_helper'
|
|
5
5
|
describe DrLight::ScientificNumber do
|
6
6
|
subject(:number) { described_class.new(value, deviance) }
|
7
7
|
|
8
|
+
let(:value) { 120 }
|
9
|
+
let(:deviance) { 10 }
|
10
|
+
|
8
11
|
describe '#to_s' do
|
9
12
|
context 'when there is no deviance' do
|
10
13
|
subject(:number) { described_class.new(value) }
|
@@ -436,4 +439,182 @@ describe DrLight::ScientificNumber do
|
|
436
439
|
end
|
437
440
|
end
|
438
441
|
end
|
442
|
+
|
443
|
+
describe 'deviance_distance?' do
|
444
|
+
context 'when passing a number' do
|
445
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
446
|
+
let(:other) { 111 }
|
447
|
+
|
448
|
+
it do
|
449
|
+
expect(number.deviance_distance(other)).to be_positive
|
450
|
+
end
|
451
|
+
|
452
|
+
it 'returns deviance distance' do
|
453
|
+
expect(number.deviance_distance(other)).to eq(0.9)
|
454
|
+
end
|
455
|
+
end
|
456
|
+
|
457
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
458
|
+
let(:other) { 139 }
|
459
|
+
|
460
|
+
it do
|
461
|
+
expect(number.deviance_distance(other)).to be_positive
|
462
|
+
end
|
463
|
+
|
464
|
+
it 'returns deviance distance' do
|
465
|
+
expect(number.deviance_distance(other)).to eq(1.9)
|
466
|
+
end
|
467
|
+
end
|
468
|
+
|
469
|
+
context 'when passing a number equal' do
|
470
|
+
let(:other) { 120 }
|
471
|
+
|
472
|
+
it do
|
473
|
+
expect(number.deviance_distance(other)).to be_zero
|
474
|
+
end
|
475
|
+
end
|
476
|
+
end
|
477
|
+
|
478
|
+
context 'when passing a scientific number without deviance' do
|
479
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
480
|
+
let(:other) { described_class.new(111) }
|
481
|
+
|
482
|
+
it do
|
483
|
+
expect(number.deviance_distance(other)).to be_positive
|
484
|
+
end
|
485
|
+
|
486
|
+
it 'returns deviance distance' do
|
487
|
+
expect(number.deviance_distance(other)).to eq(0.9)
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
492
|
+
let(:other) { described_class.new(139) }
|
493
|
+
|
494
|
+
it do
|
495
|
+
expect(number.deviance_distance(other)).to be_positive
|
496
|
+
end
|
497
|
+
|
498
|
+
it 'returns deviance distance' do
|
499
|
+
expect(number.deviance_distance(other)).to eq(1.9)
|
500
|
+
end
|
501
|
+
end
|
502
|
+
|
503
|
+
context 'when passing a number equal' do
|
504
|
+
let(:other) { described_class.new(120) }
|
505
|
+
|
506
|
+
it do
|
507
|
+
expect(number.deviance_distance(other)).to be_zero
|
508
|
+
end
|
509
|
+
end
|
510
|
+
end
|
511
|
+
|
512
|
+
context 'when passing a scientific number and having no deviance' do
|
513
|
+
let(:deviance) { 0 }
|
514
|
+
|
515
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
516
|
+
let(:other) { described_class.new(111) }
|
517
|
+
|
518
|
+
it do
|
519
|
+
expect(number.deviance_distance(other)).to be_positive
|
520
|
+
end
|
521
|
+
|
522
|
+
it do
|
523
|
+
expect(number.deviance_distance(other)).to eq(Float::INFINITY)
|
524
|
+
end
|
525
|
+
end
|
526
|
+
|
527
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
528
|
+
let(:other) { described_class.new(139) }
|
529
|
+
|
530
|
+
it do
|
531
|
+
expect(number.deviance_distance(other)).to be_positive
|
532
|
+
end
|
533
|
+
|
534
|
+
it do
|
535
|
+
expect(number.deviance_distance(other)).to eq(Float::INFINITY)
|
536
|
+
end
|
537
|
+
end
|
538
|
+
|
539
|
+
context 'when passing a number equal' do
|
540
|
+
let(:other) { described_class.new(120) }
|
541
|
+
|
542
|
+
it do
|
543
|
+
expect(number.deviance_distance(other)).to be_zero
|
544
|
+
end
|
545
|
+
end
|
546
|
+
end
|
547
|
+
|
548
|
+
context 'when passing a scientific number with deviance' do
|
549
|
+
let(:deviance) { 40 }
|
550
|
+
|
551
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
552
|
+
let(:other) { described_class.new(80, 30) }
|
553
|
+
|
554
|
+
it do
|
555
|
+
expect(number.deviance_distance(other)).to be_positive
|
556
|
+
end
|
557
|
+
|
558
|
+
it 'returns deviance distance with combined deviance' do
|
559
|
+
expect(number.deviance_distance(other)).to eq(0.8)
|
560
|
+
end
|
561
|
+
end
|
562
|
+
|
563
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
564
|
+
let(:other) { described_class.new(30, 30) }
|
565
|
+
|
566
|
+
it do
|
567
|
+
expect(number.deviance_distance(other)).to be_positive
|
568
|
+
end
|
569
|
+
|
570
|
+
it 'returns deviance distance with combined deviance' do
|
571
|
+
expect(number.deviance_distance(other)).to eq(1.8)
|
572
|
+
end
|
573
|
+
end
|
574
|
+
|
575
|
+
context 'when passing a number equal' do
|
576
|
+
let(:other) { described_class.new(120, 30) }
|
577
|
+
|
578
|
+
it do
|
579
|
+
expect(number.deviance_distance(other)).to be_zero
|
580
|
+
end
|
581
|
+
end
|
582
|
+
end
|
583
|
+
|
584
|
+
context 'when passing a number with deviance and having no deviance' do
|
585
|
+
let(:deviance) { 0 }
|
586
|
+
|
587
|
+
context 'when passing a number smaller, but within 1 deviance' do
|
588
|
+
let(:other) { described_class.new(111, 10) }
|
589
|
+
|
590
|
+
it do
|
591
|
+
expect(number.deviance_distance(other)).to be_positive
|
592
|
+
end
|
593
|
+
|
594
|
+
it 'returns deviance distance with combined deviance' do
|
595
|
+
expect(number.deviance_distance(other)).to eq(0.9)
|
596
|
+
end
|
597
|
+
end
|
598
|
+
|
599
|
+
context 'when passing a number bigger, but within 2 deviance' do
|
600
|
+
let(:other) { described_class.new(139, 10) }
|
601
|
+
|
602
|
+
it do
|
603
|
+
expect(number.deviance_distance(other)).to be_positive
|
604
|
+
end
|
605
|
+
|
606
|
+
it 'returns deviance distance with combined deviance' do
|
607
|
+
expect(number.deviance_distance(other)).to eq(1.9)
|
608
|
+
end
|
609
|
+
end
|
610
|
+
|
611
|
+
context 'when passing a number equal' do
|
612
|
+
let(:other) { described_class.new(120, 10) }
|
613
|
+
|
614
|
+
it do
|
615
|
+
expect(number.deviance_distance(other)).to be_zero
|
616
|
+
end
|
617
|
+
end
|
618
|
+
end
|
619
|
+
end
|
439
620
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,6 +9,7 @@ end
|
|
9
9
|
SimpleCov.start 'gem'
|
10
10
|
|
11
11
|
require 'dr_light'
|
12
|
+
require 'dr_light/matchers'
|
12
13
|
require 'pry-nav'
|
13
14
|
|
14
15
|
support_files = File.expand_path('spec/support/**/*.rb')
|
@@ -20,4 +21,5 @@ RSpec.configure do |config|
|
|
20
21
|
config.filter_run_excluding :integration unless ENV['ALL']
|
21
22
|
|
22
23
|
config.order = 'random'
|
24
|
+
config.include DrLight::Matchers
|
23
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dr_light
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DarthJee
|
@@ -257,13 +257,21 @@ files:
|
|
257
257
|
- docker-compose.yml
|
258
258
|
- dr_light.gemspec
|
259
259
|
- lib/dr_light.rb
|
260
|
+
- lib/dr_light/matchers.rb
|
261
|
+
- lib/dr_light/matchers/close_to.rb
|
260
262
|
- lib/dr_light/scientific_number.rb
|
263
|
+
- lib/dr_light/scientific_number/deviance_distance.rb
|
261
264
|
- lib/dr_light/scientific_number/formatter.rb
|
262
265
|
- lib/dr_light/scientific_number/normalizer.rb
|
263
266
|
- lib/dr_light/utils.rb
|
264
267
|
- lib/dr_light/version.rb
|
268
|
+
- spec/integration/dr_light/matchers_spec.rb
|
269
|
+
- spec/integration/yard/dr_light/matchers_spec.rb
|
270
|
+
- spec/integration/yard/dr_light/scientific_number/deviance_distance_spec.rb
|
265
271
|
- spec/integration/yard/dr_light/scientific_number_spec.rb
|
266
272
|
- spec/integration/yard/dr_light/utils_spec.rb
|
273
|
+
- spec/lib/dr_light/matchers/close_to_spec.rb
|
274
|
+
- spec/lib/dr_light/scientific_number/deviance_distance_spec.rb
|
267
275
|
- spec/lib/dr_light/scientific_number/formatter_spec.rb
|
268
276
|
- spec/lib/dr_light/scientific_number/normalizer_spec.rb
|
269
277
|
- spec/lib/dr_light/scientific_number_spec.rb
|