limit_detectors 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 78527c872487245d652a43920f4d3c092fcb01a2
4
- data.tar.gz: 5176b76ac3e59ac4ff1c6ff18e2712accc118018
3
+ metadata.gz: 19b534365562333e42bee1656992c44a58935616
4
+ data.tar.gz: 4e4eedd3a948fdbdd494d8b9ad4be99741822b84
5
5
  SHA512:
6
- metadata.gz: a4bb6f07cbb425ff35eea70adf812e1c928099a92f0022f17c3945cfba7b0a7ed5bb2b8f833c08c58a12853751d9d5f8f7c6a3443b374da0457d3dbb2b3e0c74
7
- data.tar.gz: ee6eba30bf7560e9d0f88c121b53f59ead1ad5f6c23e9dbbb485c8643e25fbdce350b5466afadf2534d1ed982b0ab5218c7e4cd6126b6f6682c49f05514badbf
6
+ metadata.gz: 551125436affcdaf9720eadeec53ee228b9d217ab298e6553bd6c498f8aa5b642179c50c32ac26a3b1c67cebf1feeeed26acf7ae3ac0f74a95862d1aaa877e10
7
+ data.tar.gz: 21eed54f9b88dcfec2b964b17c8afe80c086e37e4a41c7a36f2cb0d10cbce57f377460a5c4281736f718779b6c0022266aec27004625fbea8c527db3eea44a4c
data/README.md CHANGED
@@ -4,8 +4,10 @@ Some methods to detect whether an Enumberable object contains a constrained numb
4
4
 
5
5
  ## Stati
6
6
 
7
+ * Version: [![Gem Version](https://badge.fury.io/rb/limit_detectors.svg)](http://badge.fury.io/rb/limit_detectors)
7
8
  * Travis CI: [![Build Status](https://travis-ci.org/s2k/limit_detectors.svg?branch=master)](https://travis-ci.org/s2k/limit_detectors)
8
9
  * Maintenance: [![Project Status](http://stillmaintained.com/s2k/limit_detectors.png)](http://stillmaintained.com/s2k/limit_detectors)
10
+ * Code Climate: [![Code Climate](https://codeclimate.com/github/s2k/limit_detectors.png)](https://codeclimate.com/github/s2k/limit_detectors)
9
11
 
10
12
  ## Installation
11
13
 
@@ -1,12 +1,26 @@
1
1
  require 'limit_detectors/version'
2
2
 
3
3
  module LimitDetectors
4
- def at_most(limit)
5
4
 
6
- count = inject(0){ |res, el|
5
+ # Check whether the condition given in the block
6
+ # occurs at most limit times in the collection
7
+ def at_most(limit, &block)
8
+ ocurrences_of(&block) <= limit
9
+ end
10
+
11
+ # Check whether the condition given in the block
12
+ # occurs at least limit times in the collection
13
+ def at_least(limit, &block)
14
+ ocurrences_of(&block) >= limit
15
+ end
16
+
17
+ # Count how often the condition given in the block
18
+ # is met for the collection
19
+ def ocurrences_of &block
20
+ inject(0) { |res, el|
7
21
  res += 1 if yield el
8
22
  res
9
23
  }
10
- count <= limit
11
24
  end
25
+
12
26
  end
@@ -1,3 +1,3 @@
1
1
  module LimitDetectors
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
+ Array.send :include, LimitDetectors
3
4
 
4
- describe 'Array#at_most' do
5
- Array.send :include, LimitDetectors
5
+ describe '#at_most' do
6
6
 
7
7
  it 'is true for an empty Array' do
8
8
  expect([].at_most(5){ true }).to be_true
@@ -25,17 +25,40 @@ describe 'Array#at_most' do
25
25
  expect(r.at_most(0){ |i| i > 2 }).to be_true
26
26
  end
27
27
 
28
+ describe 'Hash#at_most' do
29
+ Hash.send :include, LimitDetectors
30
+ it 'detects a condition based on key as well as value properties' do
31
+ h = { 'foo' => 1, 'bar' => 4, 'baz' => 5, 'bum' => 1, 'fum' => 0}
32
+ expect( h.at_most(3){|ky,vl| ky.match(/^b/) || vl > 1 }).to be_true
33
+ end
34
+ end
35
+
28
36
  end
29
37
 
38
+ describe '#at_least' do
39
+ it 'is true for an empty Array' do
40
+ expect([].at_least(1){ true }).to be_false
41
+ end
30
42
 
31
- describe 'Hash#at_most' do
32
- Hash.send :include, LimitDetectors
33
- it 'detects a condition based on key as well as value properties' do
34
- h = { 'foo' => 1, 'bar' => 4, 'baz' => 5, 'bum' => 1, 'fum' => 0}
35
- expect( h.at_most(3){|ky,vl| ky.match(/^b/) || vl > 1 }).to be_true
43
+ it 'is true if the criterion is met once' do
44
+ expect(["it's there"].at_least(1){ |el| el == "it's there"}).to be_true
45
+ end
46
+
47
+ it 'is true if all elements meet the criterion and the size is the given maximum number' do
48
+ expect([1,1,1].at_least(3){|e| e == 1})
49
+ end
50
+
51
+ it 'is false if not enough elements meet the criterion' do
52
+ expect([1, 2, 4].at_least(1){|e| e.even?}).to be_true
36
53
  end
37
- end
38
54
 
55
+ it 'is true if 0 elements are expected to match' do
56
+ r = Array.new(10){|i|i}
57
+ expect(r.at_least(7){ |i| i > 2 }).to be_true
58
+ expect(r.at_least(8){ |i| i > 2 }).to be_false
59
+ end
60
+
61
+ end
39
62
 
40
63
  describe 'Using an object that doesn\'t respond to #inject will raise an exception' do
41
64
  object = Object.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: limit_detectors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephan Kämper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-20 00:00:00.000000000 Z
11
+ date: 2014-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler