allotment 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: 45adf43db853faac34a57e8be2b94914c4708e35
4
- data.tar.gz: cfdc29f2a8949df3ba3630e314e735f7b1b1d3d7
3
+ metadata.gz: ebc11149d0e75eab78814f7c06832ba1ebf09550
4
+ data.tar.gz: ccd06e0b331f68b762c1d3d8363e314f1d7122fd
5
5
  SHA512:
6
- metadata.gz: cc352f7d58035999eaa90c1b591d6f33e139d25ff1d99e93df51b19da7f498a706bbe8171a47c117507eebbf20900a08fa34f1e1999731d0c1185cdc986893bf
7
- data.tar.gz: 9c3e98e45a41f40fed4e52a906e1994e2d251303c76ec96f889d498aeab5c9a94f4e5a368f539b5c94d8bc9e7689a8cb45e43b20d4581e6ffa88291f7915c9b7
6
+ metadata.gz: 288acb76f032599689b50bd687a683ec77ad6f931ab61f106b8cc5e0d953ac102ca6c1579691111913cdec5d752d9cceda8601ac514f0d4a58b6c8461bd9f187
7
+ data.tar.gz: d41a2fe690bf038a3f20ff6a74679b555056e2d453bdbba44fd8d76a7919ff24962c213c846f694680c857c04f23e682062760db40021cdef3a822e58c9cdb63
@@ -1,11 +1,10 @@
1
- require 'allotment/stopwatch'
2
-
3
1
  module Allotment
4
2
  class Stopwatch
5
- attr_reader :name, :status, :start_time
3
+ attr_reader :name, :status
6
4
 
7
- def initialize name = self.class.uniqe_name
8
- @name = name
5
+ def initialize name = nil
6
+ @stopwatch = self.class.uniqe_name
7
+ @name = name || @stopwatch
9
8
  @status = 'running'
10
9
  @start_time = Time.now
11
10
  end
@@ -19,13 +18,19 @@ module Allotment
19
18
  @status = 'stopped'
20
19
  @current_time = Time.now - @start_time
21
20
  end
22
-
21
+
23
22
  def reset
24
23
  @start_time = Time.now
25
- @current_time = 0
24
+ @current_time = nil
26
25
  end
27
26
 
28
27
  def lap
28
+ @new_lap = Time.now - (@lap_time || @start_time)
29
+ @lap_time = Time.now
30
+ return @new_lap
31
+ end
32
+
33
+ def split
29
34
  Time.now - @start_time
30
35
  end
31
36
 
data/lib/allotment.rb CHANGED
@@ -35,4 +35,24 @@ module Allotment
35
35
  JSON.pretty_generate @results
36
36
  end
37
37
  end
38
+
39
+ def record_event name = 'unnamed', &block
40
+ Allotment.record_event name, &block
41
+ end
42
+
43
+ def start_recording name = 'unnamed'
44
+ Allotment.start_recording name
45
+ end
46
+
47
+ def stop_recording name
48
+ Allotment.stop_recording name
49
+ end
50
+
51
+ def results
52
+ Allotment.results
53
+ end
54
+
55
+ def results_string
56
+ Allotment.results_string
57
+ end
38
58
  end
@@ -1,5 +1,9 @@
1
1
  require 'helper'
2
2
 
3
+ class DummyClass
4
+ include Allotment
5
+ end
6
+
3
7
  describe Allotment do
4
8
  it "is a module" do
5
9
  Allotment.class.should eq Module
@@ -7,16 +11,48 @@ describe Allotment do
7
11
 
8
12
  describe ".record_event" do
9
13
  it "records the time for the block" do
10
- Allotment.record_event('my_recording0') { sleep 0.01 }
14
+ Allotment.record_event('my_recording 0.1') { sleep 0.01 }
15
+ end
16
+
17
+ it "records the time for the proc" do
18
+ Allotment.record_event 'my_recording 0.2' do
19
+ sleep 0.01
20
+ end
21
+ end
22
+
23
+ it "returns a float" do
24
+ result = Allotment.record_event('my_recording 0.3') { sleep 0.01 }
25
+ result.class.should eq Float
26
+ end
27
+
28
+ it "returns the execute time of the block" do
29
+ result = Allotment.record_event('my_recording 0.4') { sleep 0.01 }
30
+ result.round(2).should eq 0.01
31
+ end
32
+ end
33
+
34
+ describe "#record_event" do
35
+ before(:each) do
36
+ @dummy_class = DummyClass.new
37
+ end
38
+
39
+ it "records the time for the block" do
40
+ @dummy_class.record_event('my_recording 0.1') { sleep 0.01 }
41
+ end
42
+
43
+ it "records the time for the proc" do
44
+ @dummy_class.record_event 'my_recording 0.2' do
45
+ sleep 0.01
46
+ end
11
47
  end
12
48
 
13
49
  it "returns a float" do
14
- result = Allotment.record_event('my_recording0') { sleep 0.01 }
50
+ result = @dummy_class.record_event('my_recording 0.3') { sleep 0.01 }
15
51
  result.class.should eq Float
16
52
  end
17
53
 
18
54
  it "returns the execute time of the block" do
19
- result = Allotment.record_event('my_recording0') { sleep 0.01 }
55
+ result = @dummy_class.record_event('my_recording 0.4') { sleep 0.01 }
20
56
  result.round(2).should eq 0.01
21
57
  end
22
58
  end
@@ -43,6 +79,32 @@ describe Allotment do
43
79
  end
44
80
  end
45
81
 
82
+ describe "#start_recording" do
83
+ before(:each) do
84
+ @dummy_class = DummyClass.new
85
+ end
86
+
87
+ it "returns a stopwatch instance" do
88
+ result = @dummy_class.start_recording
89
+ result.class.should eq Allotment::Stopwatch
90
+ end
91
+
92
+ it "returns an unnamed stopwatch if no name given" do
93
+ result = @dummy_class.start_recording
94
+ result.name.should eq 'unnamed'
95
+ end
96
+
97
+ it "returns a stopwatch with the given name" do
98
+ result = @dummy_class.start_recording 'my_recording'
99
+ result.name.should eq 'my_recording'
100
+ end
101
+
102
+ it "returns a stopwatch that is 'running'" do
103
+ result = @dummy_class.start_recording
104
+ result.status.should eq 'running'
105
+ end
106
+ end
107
+
46
108
  describe ".stop_recording" do
47
109
  it "returns a float" do
48
110
  Allotment.start_recording 'my_recording1'
@@ -63,6 +125,30 @@ describe Allotment do
63
125
  end
64
126
  end
65
127
 
128
+ describe "#stop_recording" do
129
+ before(:each) do
130
+ @dummy_class = DummyClass.new
131
+ end
132
+
133
+ it "returns a float" do
134
+ @dummy_class.start_recording 'my_recording1'
135
+ sleep 0.01
136
+ result = @dummy_class.stop_recording 'my_recording1'
137
+ result.class.should eq Float
138
+ end
139
+
140
+ it "returns the execute time of the code" do
141
+ @dummy_class.start_recording 'my_recording2'
142
+ sleep 0.01
143
+ result = @dummy_class.stop_recording 'my_recording2'
144
+ result.round(2).should eq 0.01
145
+ end
146
+
147
+ it "raises an error if the recording does not exist" do
148
+ expect { @dummy_class.stop_recording 'my_recording3' }.to raise_error NameError, "No recording:my_recording3"
149
+ end
150
+ end
151
+
66
152
  describe ".results" do
67
153
  it "returns a hash" do
68
154
  Allotment.record_event('my_recording4') { sleep 0.01 }
@@ -87,6 +173,34 @@ describe Allotment do
87
173
  end
88
174
  end
89
175
 
176
+ describe "#results" do
177
+ before(:each) do
178
+ @dummy_class = DummyClass.new
179
+ end
180
+
181
+ it "returns a hash" do
182
+ @dummy_class.record_event('my_recording4') { sleep 0.01 }
183
+ @dummy_class.results.class.should eq Hash
184
+ end
185
+
186
+ it "returns a hash with the event in" do
187
+ @dummy_class.record_event('my_recording5') { sleep 0.01 }
188
+ @dummy_class.results.should include('my_recording5')
189
+ end
190
+
191
+ it "stores the result under the event" do
192
+ @dummy_class.record_event('my_recording6') { sleep 0.01 }
193
+ @dummy_class.results['my_recording6'][0].round(2).should eq 0.01
194
+ end
195
+
196
+ it "stores each result of each event" do
197
+ @dummy_class.record_event('my_recording7') { sleep 0.01 }
198
+ @dummy_class.record_event('my_recording7') { sleep 0.02 }
199
+ @dummy_class.results['my_recording7'][0].round(2).should eq 0.01
200
+ @dummy_class.results['my_recording7'][1].round(2).should eq 0.02
201
+ end
202
+ end
203
+
90
204
  describe ".results_string" do
91
205
  it "returns a string" do
92
206
  Allotment.record_event('my_recording8') { sleep 0.01 }
@@ -99,4 +213,21 @@ describe Allotment do
99
213
  Allotment.results_string.should include('0.03')
100
214
  end
101
215
  end
216
+
217
+ describe "#results_string" do
218
+ before(:each) do
219
+ @dummy_class = DummyClass.new
220
+ end
221
+
222
+ it "returns a string" do
223
+ @dummy_class.record_event('my_recording8') { sleep 0.01 }
224
+ @dummy_class.results_string.class.should eq String
225
+ end
226
+
227
+ it "returns a string with the event in" do
228
+ @dummy_class.record_event('my_recording9') { sleep 0.03 }
229
+ @dummy_class.results_string.should include('my_recording9')
230
+ @dummy_class.results_string.should include('0.03')
231
+ end
232
+ end
102
233
  end
@@ -99,6 +99,28 @@ describe Allotment::Stopwatch do
99
99
  end
100
100
  end
101
101
 
102
+ describe "#split" do
103
+ it "returns a float" do
104
+ sw = Allotment::Stopwatch.new
105
+ sw.split.class.should eq Float
106
+ end
107
+
108
+ it "returns the correct time" do
109
+ sw = Allotment::Stopwatch.new
110
+ sleep 0.01
111
+ sw.split.round(2).should eq 0.01
112
+ sleep 0.01
113
+ sw.split.round(2).should eq 0.02
114
+ sw.stop.round(2).should eq 0.02
115
+ end
116
+
117
+ it "keeps its stopwatch name" do
118
+ sw = Allotment::Stopwatch.new('stopwatch')
119
+ sw.split
120
+ sw.name.should eq 'stopwatch'
121
+ end
122
+ end
123
+
102
124
  describe "#lap" do
103
125
  it "returns a float" do
104
126
  sw = Allotment::Stopwatch.new
@@ -110,7 +132,8 @@ describe Allotment::Stopwatch do
110
132
  sleep 0.01
111
133
  sw.lap.round(2).should eq 0.01
112
134
  sleep 0.01
113
- sw.lap.round(2).should eq 0.02
135
+ sw.lap.round(2).should eq 0.01
136
+ sw.stop.round(2).should eq 0.02
114
137
  end
115
138
 
116
139
  it "keeps its stopwatch name" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: allotment
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
  - Ben Slaughter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-05 00:00:00.000000000 Z
11
+ date: 2013-08-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A gem for recording performance and timings of blocks or from point to
14
14
  point
@@ -25,7 +25,7 @@ files:
25
25
  - spec/helper.rb
26
26
  - spec/stopwatch/array_spec.rb
27
27
  - spec/stopwatch/stopwatch_spec.rb
28
- homepage: https://github.com/benSlaughter/allotment
28
+ homepage: http://benslaughter.github.io/allotment/
29
29
  licenses:
30
30
  - MIT
31
31
  metadata: {}