assay 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.ruby +9 -7
- data/HISTORY.rdoc +12 -1
- data/QED.rdoc +43 -0
- data/lib/assay.yml +9 -7
- data/lib/assay/close_assay.rb +42 -0
- data/lib/assay/rescue_assay.rb +1 -1
- metadata +16 -14
data/.ruby
CHANGED
@@ -28,9 +28,10 @@ repositories:
|
|
28
28
|
scm: git
|
29
29
|
name: upstream
|
30
30
|
resources:
|
31
|
-
home: http://
|
32
|
-
docs: http://rubydoc.info/gems/assay
|
31
|
+
home: http://rubyworks.github.com/assay
|
32
|
+
docs: http://rubydoc.info/gems/assay/frames
|
33
33
|
code: http://github.com/rubyworks/assay
|
34
|
+
bugs: http://github.com/rubyworks/assay/issues
|
34
35
|
mail: http://groups.google.com/groups/rubyworks-mailinglist
|
35
36
|
extra: {}
|
36
37
|
load_path:
|
@@ -39,11 +40,12 @@ revision: 0
|
|
39
40
|
created: '2009-08-21'
|
40
41
|
summary: Class-based Assertions Framework
|
41
42
|
title: Assay
|
42
|
-
version: 0.4.
|
43
|
+
version: 0.4.1
|
43
44
|
name: assay
|
44
|
-
description: ! '
|
45
|
-
Exceptions.
|
45
|
+
description: ! 'Assay defines assertions in the same way that Ruby defines exceptions.
|
46
46
|
|
47
|
-
|
47
|
+
Each type of asserition, called an assay, is then a child of the base
|
48
|
+
|
49
|
+
Assertion class, which itself is a subclass of the Exception class.'
|
48
50
|
organization: Rubyworks
|
49
|
-
date: '2012-01-
|
51
|
+
date: '2012-01-27'
|
data/HISTORY.rdoc
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
= HISTORY
|
2
2
|
|
3
|
-
== 0.4.
|
3
|
+
== 0.4.1 | 2012-01-27
|
4
|
+
|
5
|
+
This release adds CloseAssay for relative approxmation assertions on values,
|
6
|
+
where as the WithinAssay handles absolute difference.
|
7
|
+
|
8
|
+
Changes:
|
9
|
+
|
10
|
+
* Add CloseAssay for relative approximation.
|
11
|
+
* Use past tense for RescueAssay's assertive name, i.e. :rescued.
|
12
|
+
|
13
|
+
|
14
|
+
== 0.4.0 | 2012-01-25
|
4
15
|
|
5
16
|
Version 0.4 is a very polished partial rewrite of the Assay project.
|
6
17
|
This release sheds all ancillary code to separate projects. The
|
data/QED.rdoc
CHANGED
@@ -440,6 +440,49 @@ This applies to any type of object that defines `#<=`, not just numbers.
|
|
440
440
|
refute MoreEqualAssay.fail?('b', 'a')
|
441
441
|
|
442
442
|
|
443
|
+
## CloseAssay
|
444
|
+
|
445
|
+
The `CloseAssay` class defines an assertion for matching that two values
|
446
|
+
are within a relative difference.
|
447
|
+
|
448
|
+
assert CloseAssay.pass?(1, 1, 0)
|
449
|
+
assert CloseAssay.pass?(1, 1.1, 0.1)
|
450
|
+
|
451
|
+
refute CloseAssay.pass?(1, 2, 0)
|
452
|
+
refute CloseAssay.pass?(1, 1.2, 0.1)
|
453
|
+
|
454
|
+
And conversely,
|
455
|
+
|
456
|
+
assert CloseAssay.fail?(1, 2, 0)
|
457
|
+
assert CloseAssay.fail?(1, 1.2, 0.1)
|
458
|
+
|
459
|
+
refute CloseAssay.fail?(1, 1, 0)
|
460
|
+
refute CloseAssay.fail?(1, 1.1, 0.1)
|
461
|
+
|
462
|
+
The object do not have to be numbers necessaity, just so long as they
|
463
|
+
are comparable and subtractable.
|
464
|
+
|
465
|
+
time = Time.now
|
466
|
+
|
467
|
+
assert CloseAssay.pass?(time, time+1, 2)
|
468
|
+
|
469
|
+
Making assertions,
|
470
|
+
|
471
|
+
assert CloseAssay.assert!(10, 11, 1)
|
472
|
+
|
473
|
+
expect ::CloseAssay do
|
474
|
+
CloseAssay.assert!(10, 15, 0.25)
|
475
|
+
end
|
476
|
+
|
477
|
+
And refutations,
|
478
|
+
|
479
|
+
assert CloseAssay.refute!(10, 11, 0.01)
|
480
|
+
|
481
|
+
expect ::CloseAssay do
|
482
|
+
CloseAssay.refute!(10, 11, 1)
|
483
|
+
end
|
484
|
+
|
485
|
+
|
443
486
|
## WithinAssay
|
444
487
|
|
445
488
|
The `WithinAssay` class defines an assertion for matching that two values
|
data/lib/assay.yml
CHANGED
@@ -28,9 +28,10 @@ repositories:
|
|
28
28
|
scm: git
|
29
29
|
name: upstream
|
30
30
|
resources:
|
31
|
-
home: http://
|
32
|
-
docs: http://rubydoc.info/gems/assay
|
31
|
+
home: http://rubyworks.github.com/assay
|
32
|
+
docs: http://rubydoc.info/gems/assay/frames
|
33
33
|
code: http://github.com/rubyworks/assay
|
34
|
+
bugs: http://github.com/rubyworks/assay/issues
|
34
35
|
mail: http://groups.google.com/groups/rubyworks-mailinglist
|
35
36
|
extra: {}
|
36
37
|
load_path:
|
@@ -39,11 +40,12 @@ revision: 0
|
|
39
40
|
created: '2009-08-21'
|
40
41
|
summary: Class-based Assertions Framework
|
41
42
|
title: Assay
|
42
|
-
version: 0.4.
|
43
|
+
version: 0.4.1
|
43
44
|
name: assay
|
44
|
-
description: ! '
|
45
|
-
Exceptions.
|
45
|
+
description: ! 'Assay defines assertions in the same way that Ruby defines exceptions.
|
46
46
|
|
47
|
-
|
47
|
+
Each type of asserition, called an assay, is then a child of the base
|
48
|
+
|
49
|
+
Assertion class, which itself is a subclass of the Exception class.'
|
48
50
|
organization: Rubyworks
|
49
|
-
date: '2012-01-
|
51
|
+
date: '2012-01-27'
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require_relative 'compare_assay'
|
2
|
+
|
3
|
+
# Relative approximation, sometimes refered to as *within epsilon*.
|
4
|
+
#
|
5
|
+
class CloseAssay < CompareAssay
|
6
|
+
|
7
|
+
register :close
|
8
|
+
|
9
|
+
#
|
10
|
+
# Check assertion.
|
11
|
+
#
|
12
|
+
def self.pass?(subject, criterion, epsilon)
|
13
|
+
#if [subject, criterion, epsilon].all?{ |v| Numeric === v }
|
14
|
+
a, b, e = subject.to_f, criterion.to_f, epsilon.to_f
|
15
|
+
#else
|
16
|
+
# a, b, e = subject, criterion, epsilon
|
17
|
+
#end
|
18
|
+
|
19
|
+
#(a - b).abs / [a.abs, b.abs].max <= e
|
20
|
+
|
21
|
+
d = b * e # [a.abs,b.abs].max * e
|
22
|
+
|
23
|
+
(b - d) <= a && (b + d) >= a
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Failed assertion message.
|
28
|
+
#
|
29
|
+
def self.assert_message(subject, criterion, delta)
|
30
|
+
a = subject.inspect
|
31
|
+
b = criterion.inspect
|
32
|
+
e = delta.inspect
|
33
|
+
|
34
|
+
if [a, b, e].any?{ |e| e.to_s.size > SIZE_LIMIT }
|
35
|
+
"b(1 - e) <= a <= b(1 + e)\na) #{a}\nb) #{b}\nd) #{d}"
|
36
|
+
else
|
37
|
+
"#{b}(1 - #{e}) <= #{a} <= #{b}(1 + #{e})"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
data/lib/assay/rescue_assay.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ansi
|
16
|
-
requirement: &
|
16
|
+
requirement: &14053100 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *14053100
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: brass
|
27
|
-
requirement: &
|
27
|
+
requirement: &15234940 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *15234940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: detroit
|
38
|
-
requirement: &
|
38
|
+
requirement: &15232900 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *15232900
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: qed
|
49
|
-
requirement: &
|
49
|
+
requirement: &15230160 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,11 +54,12 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
-
description: ! '
|
59
|
-
Exceptions.
|
57
|
+
version_requirements: *15230160
|
58
|
+
description: ! 'Assay defines assertions in the same way that Ruby defines exceptions.
|
60
59
|
|
61
|
-
|
60
|
+
Each type of asserition, called an assay, is then a child of the base
|
61
|
+
|
62
|
+
Assertion class, which itself is a subclass of the Exception class.'
|
62
63
|
email:
|
63
64
|
- transfire@gmail.com
|
64
65
|
executables: []
|
@@ -77,6 +78,7 @@ files:
|
|
77
78
|
- lib/assay/assertor.rb
|
78
79
|
- lib/assay/boolean_assay.rb
|
79
80
|
- lib/assay/case_assay.rb
|
81
|
+
- lib/assay/close_assay.rb
|
80
82
|
- lib/assay/compare_assay.rb
|
81
83
|
- lib/assay/core_ext/kernel.rb
|
82
84
|
- lib/assay/core_ext/na.rb
|
@@ -142,7 +144,7 @@ files:
|
|
142
144
|
- README.rdoc
|
143
145
|
- QED.rdoc
|
144
146
|
- COPYING.rdoc
|
145
|
-
homepage: http://
|
147
|
+
homepage: http://rubyworks.github.com/assay
|
146
148
|
licenses:
|
147
149
|
- BSD-2-Clause
|
148
150
|
post_install_message:
|