collectr 0.0.3 → 0.0.4

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: 463b3d28e3ef8f2d462756cfe2f44b8e78e789fc
4
- data.tar.gz: 8a2e0278fdabf3e44e221deb3cfef7bcde54ddf1
3
+ metadata.gz: a0d729df6dad12da0f9a37520c150d6ddbdb17f0
4
+ data.tar.gz: a8d13216fd9fdd85cccb1b2c4d4a0681213684da
5
5
  SHA512:
6
- metadata.gz: 7d9ba0cf80958a79edaf34279630024466963970759f71442fb0053e82e1ece03e7573c705e9ec53687cbfba0a61d085cad6f31f80ea2ffd439b747008125aad
7
- data.tar.gz: f3049888203fdf4c99d78988a8052c5fed4aef26ae4affde81548891face298da7627ea6645b1192fadf5c6c34c15670dc03ea8407c3a8a7b085b6b1845e44e8
6
+ metadata.gz: d0acf26c68a25e7905da007339d834a6df6371542b2558868a4fac0ddb09e2a732d260b977a04732eec20f630a840838be10f1af7e06afdf498aad74494ea51c
7
+ data.tar.gz: fc973ab5d3b28b910d25a7c025ad8fac8472f9c9268a77c11f6d2a3db6c4f5f9d4ddc50e8ab8c2e6cdd57413a52dde5bc8d57b97111b50dc068da11a362eca55
data/README.md CHANGED
@@ -1,6 +1,9 @@
1
+ [![Build Status](https://api.travis-ci.org/brianmd/collectr.png?branch=master)](https://travis-ci.org/brianmd/collectr) [![Gem Version](https://badge.fury.io/rb/collectr.png)](http://badge.fury.io/rb/collectr) [![Coverage Status](https://coveralls.io/repos/brianmd/collectr/badge.png?branch=master&service=github)](https://coveralls.io/github/brianmd/collectr?branch=master)
1
2
  # Collectr
2
3
 
3
- TODO: Write a gem description
4
+ Abstraction for thread-safe collections (array, hash, set, bag).
5
+
6
+ Once it is fleshed out, will include complete abstractions for redis and memory.
4
7
 
5
8
  ## Installation
6
9
 
data/collectr.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Collectr::VERSION
9
9
  spec.authors = ["Brian Murphy-Dye"]
10
10
  spec.email = ["brian@murphydye.com"]
11
- spec.summary = %q{Abstraction thread-safe collections (array, hash, set, bag).}
11
+ spec.summary = %q{Abstraction for thread-safe collections (array, hash, set, bag).}
12
12
  spec.description = %q{}
13
13
  spec.homepage = ""
14
14
  spec.license = "MIT"
data/lib/bag.rb CHANGED
@@ -46,9 +46,12 @@ class Bag
46
46
  end
47
47
 
48
48
  def as_sorted_counts
49
- @bag.sort_by{ |key, cnt| cnt }
49
+ @bag.sort_by{ |key, cnt| -cnt }
50
50
  end
51
51
 
52
+ private
53
+
54
+ # for cloning
52
55
  def initialize_copy(source)
53
56
  @bag = source.bag.clone
54
57
  super
@@ -1,3 +1,3 @@
1
1
  module Collectr
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/spec/bag_spec.rb CHANGED
@@ -4,15 +4,39 @@ require 'bag'
4
4
  describe Bag do
5
5
  subject(:bag) { Bag.new }
6
6
 
7
+ it 'handles empty bag' do
8
+ expect(bag).to be_empty
9
+ expect(bag.size).to eq(0)
10
+ expect(bag.count).to eq(0)
11
+ expect(bag.bag).to eq({})
12
+ expect(bag.as_sorted_counts).to eq([])
13
+ end
14
+
7
15
  it 'handles repetitions' do
8
16
  bag << 1 << 1 << 2 << 1 << 'a'
9
17
  expect(bag.keys).to eq([1,2,'a'])
10
18
  end
11
19
 
20
+ it 'clones well' do
21
+ bag << 1 << 1 << 2 << 1 << 'a'
22
+ new_bag = bag.clone
23
+ expect( bag.as_sorted_counts).to eq([[1,3],[2,1],['a',1]])
24
+ expect(new_bag.as_sorted_counts).to eq([[1,3],[2,1],['a',1]])
25
+ bag << 'a'
26
+ expect( bag.as_sorted_counts).to eq([[1,3],['a',2],[2,1]])
27
+ expect(new_bag.as_sorted_counts).to eq([[1,3],[2,1],['a',1]])
28
+ end
29
+
12
30
  it 'handles #each' do
13
31
  bag << 1 << 1 << 2 << 1 << 'a'
14
32
  hash = {}
15
33
  bag.each{ |key,val| hash[key] = val }
34
+ expect(bag.size).to eq(3)
35
+ expect(bag.count).to eq(5)
16
36
  expect(hash).to eq({1=>3, 2=>1, 'a'=>1})
37
+ expect(bag[1]).to eq(3)
38
+ expect(bag['a']).to eq(1)
39
+ expect(bag.bag).to eq(hash)
40
+ expect(bag.as_sorted_counts).to eq([[1,3],[2,1],['a',1]])
17
41
  end
18
42
  end
data/spec/hash_spec.rb CHANGED
@@ -17,7 +17,10 @@ shared_examples 'a hash' do
17
17
  context 'after an item is added' do
18
18
  before { collection.clear ; collection[1] = 'a1' }
19
19
  it { expect(collection.size).to eq(1) }
20
+ it { expect(collection.key?(1)).to be true }
21
+ it { expect(collection.has_key?(1)).to be true }
20
22
  it { expect(collection[1]).to eq('a1') }
23
+ it { collection.delete(1); expect(collection.size).to eq(0) }
21
24
  end
22
25
 
23
26
  context 'after multiple items are added' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collectr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Murphy-Dye
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-15 00:00:00.000000000 Z
11
+ date: 2015-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -246,7 +246,7 @@ rubyforge_project:
246
246
  rubygems_version: 2.4.8
247
247
  signing_key:
248
248
  specification_version: 4
249
- summary: Abstraction thread-safe collections (array, hash, set, bag).
249
+ summary: Abstraction for thread-safe collections (array, hash, set, bag).
250
250
  test_files:
251
251
  - spec/bag_spec.rb
252
252
  - spec/hash_spec.rb