allotment 1.0.0 → 1.0.1

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: 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: {}