memonic 1.0.0 → 1.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de009766f0ddc455437e5cf5530965053056e7b3
4
- data.tar.gz: 59f9760f45a6df85cba1f57502fe31d5070ea47f
3
+ metadata.gz: fbc4fc682b8e4b2fcb5ad38db3f5c8c863e71dbc
4
+ data.tar.gz: 492b8c26da1adcd58a0f6fc4fb6c635ab42cdf91
5
5
  SHA512:
6
- metadata.gz: 1fa36f7e0d6685ddbb228d45f177a4ad4a95967bbb9fec410caf63b04af7df119bbd3e072299edb5c9b29af9ad1244f15d7b0926028eb2c297db9db6d3d0bcc8
7
- data.tar.gz: fd671c71357aed5cd141a792a59f043d1b8644334abccd74faca9aafaced5b1317cc5560d5a90ae865f63c7d8a5193e7e0880dbfa0849ce8264455fdf6607e99
6
+ metadata.gz: 84c12d3022903b732c21cb65c15c8a79b56817ff8a17c03291d3feed87d57aaf7f7967bf3898bfd2d87c25086105f36b8815f5624106c7158300ef3d5196ead2
7
+ data.tar.gz: f11f196de337dedf221a733fb85769b2b509f307235b00bcfe4670b7a7b0f10754e676805efe60682a3dcd25f6c60cec35cf8d1f93d4dbb5d7ce2dcc488d021d
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Memonic
2
2
 
3
+ [![Gem Version][gem-badge]][gem]
3
4
  [![Build status][build-badge]][build]
5
+ [![Coverage Status][coverage-badge]][coverage]
4
6
 
5
7
  ## Introduction
6
8
 
@@ -1,12 +1,8 @@
1
1
  require "memonic/version"
2
2
 
3
3
  module Memonic
4
- if defined?(ActiveSupport::Concern)
5
- extend ActiveSupport::Concern
6
- else
7
- def self.included(base)
8
- base.extend(ClassMethods)
9
- end
4
+ def self.included(base)
5
+ base.extend(ClassMethods)
10
6
  end
11
7
 
12
8
  private
@@ -1,3 +1,3 @@
1
1
  module Memonic
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "bundler", "~> 1.5"
24
24
  spec.add_development_dependency "rake"
25
25
  spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "coveralls"
26
27
  end
@@ -2,117 +2,70 @@ require "spec_helper"
2
2
  require "memonic"
3
3
 
4
4
  describe Memonic do
5
- describe ".memoize" do
6
- let(:klass) do
7
- Struct.new(:computation) do
8
- include Memonic
9
-
10
- memoize :value do
11
- computation
12
- end
13
- end
5
+ shared_context "memoize the result" do
6
+ before do
7
+ allow(memoizer).to receive(:computation).and_call_original
14
8
  end
15
9
 
16
- let(:instance) { klass.new(result) }
10
+ it "returns the computation result" do
11
+ expect(memoizer.value).to be result
12
+ end
17
13
 
18
- before do
19
- allow(instance).to receive(:computation).and_call_original
14
+ it "invokes the computation only once" do
15
+ 2.times { memoizer.value }
16
+ expect(memoizer).to have_received(:computation).once
20
17
  end
18
+ end
19
+
20
+ shared_context "a memoizer" do
21
+ let(:memoizer) { memoizer_class.new(result) }
21
22
 
22
23
  context "with a truthy result" do
23
24
  let(:result) { Object.new }
24
25
 
25
- it "returns the computation result" do
26
- expect(instance.value).to be result
27
- end
28
-
29
- it "invokes the computation only once" do
30
- 2.times { instance.value }
31
- expect(instance).to have_received(:computation).once
32
- end
26
+ it_will "memoize the result"
33
27
  end
34
28
 
35
29
  context "with a nil result" do
36
30
  let(:result) { nil }
37
31
 
38
- it "returns the computation result" do
39
- expect(instance.value).to be result
40
- end
41
-
42
- it "invokes the computation only once" do
43
- 2.times { instance.value }
44
- expect(instance).to have_received(:computation).once
45
- end
32
+ it_will "memoize the result"
46
33
  end
47
34
 
48
35
  context "with a false result" do
49
36
  let(:result) { false }
50
37
 
51
- it "returns the computation result" do
52
- expect(instance.value).to be result
53
- end
54
-
55
- it "invokes the computation only once" do
56
- 2.times { instance.value }
57
- expect(instance).to have_received(:computation).once
58
- end
38
+ it_will "memoize the result"
59
39
  end
60
40
  end
61
41
 
62
- describe "#memoize" do
63
- let(:klass) do
42
+ describe ".memoize" do
43
+ let(:memoizer_class) do
64
44
  Struct.new(:computation) do
65
45
  include Memonic
66
46
 
67
- def value
68
- memoize(:@value) { computation }
47
+ memoize :value do
48
+ computation
69
49
  end
70
50
  end
71
51
  end
72
52
 
73
- let(:instance) { klass.new(result) }
53
+ let(:memoizer) { memoizer_class.new(result) }
74
54
 
75
- before do
76
- allow(instance).to receive(:computation).and_call_original
77
- end
78
-
79
- context "with a truthy result" do
80
- let(:result) { Object.new }
81
-
82
- it "returns the computation result" do
83
- expect(instance.value).to be result
84
- end
85
-
86
- it "invokes the computation only once" do
87
- 2.times { instance.value }
88
- expect(instance).to have_received(:computation).once
89
- end
90
- end
91
-
92
- context "with a nil result" do
93
- let(:result) { nil }
55
+ it_behaves_like "a memoizer"
56
+ end
94
57
 
95
- it "returns the computation result" do
96
- expect(instance.value).to be result
97
- end
58
+ describe "#memoize" do
59
+ let(:memoizer_class) do
60
+ Struct.new(:computation) do
61
+ include Memonic
98
62
 
99
- it "invokes the computation only once" do
100
- 2.times { instance.value }
101
- expect(instance).to have_received(:computation).once
63
+ def value
64
+ memoize(:@value) { computation }
65
+ end
102
66
  end
103
67
  end
104
68
 
105
- context "with a false result" do
106
- let(:result) { false }
107
-
108
- it "returns the computation result" do
109
- expect(instance.value).to be result
110
- end
111
-
112
- it "invokes the computation only once" do
113
- 2.times { instance.value }
114
- expect(instance).to have_received(:computation).once
115
- end
116
- end
69
+ it_behaves_like "a memoizer"
117
70
  end
118
71
  end
@@ -17,6 +17,13 @@
17
17
  #
18
18
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19
19
  RSpec.configure do |config|
20
+ # Coveralls
21
+ require "coveralls"
22
+
23
+ Coveralls.wear! do
24
+ add_filter 'spec'
25
+ end
26
+
20
27
  # rspec-expectations config goes here. You can use an alternate
21
28
  # assertion/expectation library such as wrong or the stdlib/minitest
22
29
  # assertions if you prefer.
@@ -40,6 +47,8 @@ RSpec.configure do |config|
40
47
  mocks.verify_partial_doubles = true
41
48
  end
42
49
 
50
+ config.alias_it_behaves_like_to :it_will, 'it will'
51
+
43
52
  # The settings below are suggested to provide a good initial experience
44
53
  # with RSpec, but feel free to customize to your heart's content.
45
54
  =begin
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memonic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Carney
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: Memonic is a simple, lightweight memoization helper.
56
70
  email:
57
71
  - john@carney.id.au
@@ -59,6 +73,7 @@ executables: []
59
73
  extensions: []
60
74
  extra_rdoc_files: []
61
75
  files:
76
+ - ".coveralls.yml"
62
77
  - ".gitignore"
63
78
  - ".rspec"
64
79
  - ".travis.yml"
@@ -90,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
105
  version: '0'
91
106
  requirements: []
92
107
  rubyforge_project:
93
- rubygems_version: 2.4.4
108
+ rubygems_version: 2.4.3
94
109
  signing_key:
95
110
  specification_version: 4
96
111
  summary: A simple, lightweight memoization helper.