iso8601 0.8.7 → 0.9.0
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 +4 -4
- data/CHANGELOG.md +17 -0
- data/CONTRIBUTING.md +58 -0
- data/Gemfile +2 -2
- data/README.md +28 -102
- data/docs/date-time.md +86 -0
- data/docs/duration.md +77 -0
- data/docs/time-interval.md +120 -0
- data/iso8601.gemspec +43 -6
- data/lib/iso8601.rb +15 -7
- data/lib/iso8601/atomic.rb +78 -0
- data/lib/iso8601/date.rb +35 -10
- data/lib/iso8601/date_time.rb +14 -3
- data/lib/iso8601/days.rb +47 -0
- data/lib/iso8601/duration.rb +115 -99
- data/lib/iso8601/errors.rb +13 -1
- data/lib/iso8601/hours.rb +43 -0
- data/lib/iso8601/minutes.rb +43 -0
- data/lib/iso8601/months.rb +98 -0
- data/lib/iso8601/seconds.rb +47 -0
- data/lib/iso8601/time.rb +43 -15
- data/lib/iso8601/time_interval.rb +392 -0
- data/lib/iso8601/version.rb +1 -1
- data/lib/iso8601/weeks.rb +43 -0
- data/lib/iso8601/years.rb +80 -0
- data/spec/iso8601/date_spec.rb +0 -6
- data/spec/iso8601/date_time_spec.rb +0 -8
- data/spec/iso8601/days_spec.rb +44 -0
- data/spec/iso8601/duration_spec.rb +103 -99
- data/spec/iso8601/hours_spec.rb +44 -0
- data/spec/iso8601/minutes_spec.rb +44 -0
- data/spec/iso8601/months_spec.rb +86 -0
- data/spec/iso8601/seconds_spec.rb +44 -0
- data/spec/iso8601/time_interval_spec.rb +416 -0
- data/spec/iso8601/time_spec.rb +0 -6
- data/spec/iso8601/weeks_spec.rb +46 -0
- data/spec/iso8601/years_spec.rb +69 -0
- metadata +37 -19
- data/.dockerignore +0 -7
- data/.editorconfig +0 -9
- data/.gitignore +0 -19
- data/.rubocop.yml +0 -38
- data/.travis.yml +0 -19
- data/Dockerfile +0 -10
- data/Makefile +0 -19
- data/circle.yml +0 -13
- data/lib/iso8601/atoms.rb +0 -279
- data/spec/iso8601/atoms_spec.rb +0 -329
data/spec/iso8601/atoms_spec.rb
DELETED
@@ -1,329 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe ISO8601::Atom do
|
4
|
-
it "should raise a TypeError when receives anything but a Numeric value" do
|
5
|
-
expect { ISO8601::Atom.new('1') }.to raise_error
|
6
|
-
expect { ISO8601::Atom.new(true) }.to raise_error
|
7
|
-
expect { ISO8601::Atom.new(-1.1) }.to_not raise_error
|
8
|
-
expect { ISO8601::Atom.new(-1) }.to_not raise_error
|
9
|
-
expect { ISO8601::Atom.new(0) }.to_not raise_error
|
10
|
-
expect { ISO8601::Atom.new(1) }.to_not raise_error
|
11
|
-
expect { ISO8601::Atom.new(1.1) }.to_not raise_error
|
12
|
-
end
|
13
|
-
it "should raise a TypeError when receives anything but a ISO8601::DateTime instance or nil" do
|
14
|
-
expect { ISO8601::Atom.new(1, ISO8601::DateTime.new('2012-07-07')) }.to_not raise_error
|
15
|
-
expect { ISO8601::Atom.new(1, nil) }.to_not raise_error
|
16
|
-
expect { ISO8601::Atom.new(1, true) }.to raise_error
|
17
|
-
expect { ISO8601::Atom.new(1, 'foo') }.to raise_error
|
18
|
-
expect { ISO8601::Atom.new(1, 10) }.to raise_error
|
19
|
-
end
|
20
|
-
it "should create a new atom" do
|
21
|
-
expect(ISO8601::Atom.new(-1)).to be_an_instance_of(ISO8601::Atom)
|
22
|
-
end
|
23
|
-
describe '#to_i' do
|
24
|
-
it "should return an integer" do
|
25
|
-
expect(ISO8601::Atom.new(1).to_i).to be_a_kind_of(Integer)
|
26
|
-
expect(ISO8601::Atom.new(1.0).to_i).to be_a_kind_of(Integer)
|
27
|
-
end
|
28
|
-
it "should return the integer part of the given number" do
|
29
|
-
expect(ISO8601::Atom.new(1.0).to_i).to eq(1.0.to_i)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
describe '#to_f' do
|
33
|
-
it "should return a float" do
|
34
|
-
expect(ISO8601::Atom.new(1).to_f).to be_a_kind_of(Float)
|
35
|
-
expect(ISO8601::Atom.new(1.0).to_f).to be_a_kind_of(Float)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
describe '#value' do
|
39
|
-
it "should return the simplest value representation" do
|
40
|
-
expect(ISO8601::Atom.new(1).value).to eq(1)
|
41
|
-
expect(ISO8601::Atom.new(1.0).value).to eq(1)
|
42
|
-
expect(ISO8601::Atom.new(1.1).value).to eq(1.1)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
describe '#factor' do
|
46
|
-
it "should raise a NotImplementedError" do
|
47
|
-
expect { ISO8601::Atom.new(1).factor }.to raise_error(NotImplementedError)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
describe '#<=>' do
|
51
|
-
it "should be comparable to atoms of the same type" do
|
52
|
-
expect(ISO8601::Atom.new(1) <=> ISO8601::Atom.new(1)).to eq(0)
|
53
|
-
expect(ISO8601::Atom.new(1) <=> ISO8601::Atom.new(2)).to eq(-1)
|
54
|
-
expect(ISO8601::Atom.new(2) <=> ISO8601::Atom.new(1)).to eq(1)
|
55
|
-
expect(ISO8601::Years.new(2) > ISO8601::Years.new(1)).to be_truthy
|
56
|
-
end
|
57
|
-
it "should not be comparable to different types" do
|
58
|
-
expect(ISO8601::Years.new(1) <=> ISO8601::Months.new(1)).to be_nil
|
59
|
-
expect { ISO8601::Years.new(1) <= 1 }.to raise_error(ArgumentError)
|
60
|
-
expect { ISO8601::Years.new(2) > 1 }.to raise_error(ArgumentError)
|
61
|
-
end
|
62
|
-
it "should be ordered" do
|
63
|
-
expect(ISO8601::Atom.new(5) > ISO8601::Atom.new(4)).to be_truthy
|
64
|
-
expect(ISO8601::Atom.new(5) < ISO8601::Atom.new(4)).to be_falsy
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe ISO8601::Years do
|
70
|
-
describe '#factor' do
|
71
|
-
it "should return the Year factor" do
|
72
|
-
expect { ISO8601::Years.new(1).factor }.to_not raise_error
|
73
|
-
expect(ISO8601::Years.new(2).factor).to eq(31536000)
|
74
|
-
expect(ISO8601::Years.new(1).factor).to eq(31536000)
|
75
|
-
end
|
76
|
-
it "should return the Year factor for a common year" do
|
77
|
-
expect(ISO8601::Years.new(1, ISO8601::DateTime.new("2010-01-01")).factor).to eq(31536000)
|
78
|
-
end
|
79
|
-
it "should return the Year factor for a leap year" do
|
80
|
-
expect(ISO8601::Years.new(1, ISO8601::DateTime.new("2000-01-01")).factor).to eq(31622400)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
describe '#to_seconds' do
|
85
|
-
it "should return the amount of seconds" do
|
86
|
-
expect(ISO8601::Years.new(2).to_seconds).to eq(63072000)
|
87
|
-
expect(ISO8601::Years.new(-2).to_seconds).to eq(-63072000)
|
88
|
-
end
|
89
|
-
it "should return the amount of seconds for a common year" do
|
90
|
-
base = ISO8601::DateTime.new('2010-01-01')
|
91
|
-
expect(ISO8601::Years.new(2, base).to_seconds).to eq(63072000)
|
92
|
-
expect(ISO8601::Years.new(12, base).to_seconds).to eq(378691200)
|
93
|
-
end
|
94
|
-
it "should return the amount of seconds for a leap year" do
|
95
|
-
base = ISO8601::DateTime.new('2000-01-01')
|
96
|
-
expect(ISO8601::Years.new(2, base).to_seconds).to eq(63158400)
|
97
|
-
expect(ISO8601::Years.new(15, base).to_seconds).to eq(473385600)
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
describe '#symbol' do
|
102
|
-
it "should return the ISO symbol" do
|
103
|
-
expect(ISO8601::Years.new(1)).to respond_to(:symbol)
|
104
|
-
expect(ISO8601::Years.new(1).symbol).to eq(:Y)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe '#hash' do
|
109
|
-
let(:subject) { ISO8601::Years.new(3) }
|
110
|
-
it "should respond to #hash" do
|
111
|
-
expect(subject).to respond_to(:hash)
|
112
|
-
end
|
113
|
-
it "should build hash identity by value" do
|
114
|
-
contrast = ISO8601::Years.new(3)
|
115
|
-
|
116
|
-
expect(subject.hash == contrast.hash).to be_truthy
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
describe ISO8601::Months do
|
122
|
-
describe '#factor' do
|
123
|
-
it "should return the Month factor" do
|
124
|
-
expect { ISO8601::Months.new(1).factor }.to_not raise_error
|
125
|
-
expect(ISO8601::Months.new(2).factor).to eq(2628000)
|
126
|
-
end
|
127
|
-
it "should return the Month factor for a common year" do
|
128
|
-
expect(ISO8601::Months.new(1, ISO8601::DateTime.new('2010-01-01')).factor).to eq(2678400)
|
129
|
-
end
|
130
|
-
it "should return the Month factor for a leap year" do
|
131
|
-
expect(ISO8601::Months.new(1, ISO8601::DateTime.new('2000-01-01')).factor).to eq(2678400)
|
132
|
-
end
|
133
|
-
it "should return the Month factor based on february for a common year" do
|
134
|
-
expect(ISO8601::Months.new(1, ISO8601::DateTime.new('2010-02-01')).factor).to eq(2419200)
|
135
|
-
end
|
136
|
-
it "should return the Month factor based on february for a leap year" do
|
137
|
-
expect(ISO8601::Months.new(1, ISO8601::DateTime.new('2000-02-01')).factor).to eq(2505600)
|
138
|
-
end
|
139
|
-
end
|
140
|
-
describe '#to_seconds' do
|
141
|
-
it "should return the amount of seconds" do
|
142
|
-
expect(ISO8601::Months.new(2).to_seconds).to eq(5256000)
|
143
|
-
end
|
144
|
-
it "should return the amount of seconds for a common year" do
|
145
|
-
expect(ISO8601::Months.new(2, ISO8601::DateTime.new('2010-01-01')).to_seconds).to eq(5097600)
|
146
|
-
end
|
147
|
-
it "should return the amount of seconds for a leap year" do
|
148
|
-
expect(ISO8601::Months.new(2, ISO8601::DateTime.new('2000-01-01')).to_seconds).to eq(5184000)
|
149
|
-
end
|
150
|
-
it "should return the amount of seconds based on februrary for a common year" do
|
151
|
-
expect(ISO8601::Months.new(2, ISO8601::DateTime.new('2010-02-01')).to_seconds).to eq(5097600)
|
152
|
-
end
|
153
|
-
it "should return the amount of seconds based on february for a leap year" do
|
154
|
-
expect(ISO8601::Months.new(2, ISO8601::DateTime.new('2000-02-01')).to_seconds).to eq(5184000)
|
155
|
-
expect(ISO8601::Months.new(12, ISO8601::DateTime.new('2000-02-01')).to_seconds).to eq(31622400)
|
156
|
-
expect(ISO8601::Months.new(12, ISO8601::DateTime.new('2000-02-01')).to_seconds).to eq(ISO8601::Years.new(1, ISO8601::DateTime.new("2000-02-01")).to_seconds)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
describe '#symbol' do
|
160
|
-
it "should return the ISO symbol" do
|
161
|
-
expect(ISO8601::Months.new(1)).to respond_to(:symbol)
|
162
|
-
expect(ISO8601::Months.new(1).symbol).to eq(:M)
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
describe '#hash' do
|
167
|
-
let(:subject) { ISO8601::Months.new(3) }
|
168
|
-
it "should respond to #hash" do
|
169
|
-
expect(subject).to respond_to(:hash)
|
170
|
-
end
|
171
|
-
it "should build hash identity by value" do
|
172
|
-
contrast = ISO8601::Months.new(3)
|
173
|
-
|
174
|
-
expect(subject.hash == contrast.hash).to be_truthy
|
175
|
-
end
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
describe ISO8601::Weeks do
|
180
|
-
describe '#factor' do
|
181
|
-
it "should return the Week factor" do
|
182
|
-
expect(ISO8601::Weeks.new(2).factor).to eq(604800)
|
183
|
-
end
|
184
|
-
end
|
185
|
-
describe '#to_seconds' do
|
186
|
-
it "should return the amount of seconds" do
|
187
|
-
expect(ISO8601::Weeks.new(2).to_seconds).to eq(1209600)
|
188
|
-
expect(ISO8601::Weeks.new(-2).to_seconds).to eq(-1209600)
|
189
|
-
end
|
190
|
-
end
|
191
|
-
describe '#symbol' do
|
192
|
-
it "should return the ISO symbol" do
|
193
|
-
expect(ISO8601::Weeks.new(1)).to respond_to(:symbol)
|
194
|
-
expect(ISO8601::Weeks.new(1).symbol).to eq(:W)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
describe '#hash' do
|
199
|
-
let(:subject) { ISO8601::Weeks.new(3) }
|
200
|
-
it "should respond to #hash" do
|
201
|
-
expect(subject).to respond_to(:hash)
|
202
|
-
end
|
203
|
-
it "should build hash identity by value" do
|
204
|
-
contrast = ISO8601::Weeks.new(3)
|
205
|
-
|
206
|
-
expect(subject.hash == contrast.hash).to be_truthy
|
207
|
-
end
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
describe ISO8601::Days do
|
212
|
-
describe '#factor' do
|
213
|
-
it "should return the Day factor" do
|
214
|
-
expect(ISO8601::Days.new(2).factor).to eq(86400)
|
215
|
-
end
|
216
|
-
it "should return the amount of seconds" do
|
217
|
-
expect(ISO8601::Days.new(2).to_seconds).to eq(172800)
|
218
|
-
expect(ISO8601::Days.new(-2).to_seconds).to eq(-172800)
|
219
|
-
end
|
220
|
-
end
|
221
|
-
describe '#symbol' do
|
222
|
-
it "should return the ISO symbol" do
|
223
|
-
expect(ISO8601::Days.new(1)).to respond_to(:symbol)
|
224
|
-
expect(ISO8601::Days.new(1).symbol).to eq(:D)
|
225
|
-
end
|
226
|
-
end
|
227
|
-
|
228
|
-
describe '#hash' do
|
229
|
-
let(:subject) { ISO8601::Days.new(3) }
|
230
|
-
it "should respond to #hash" do
|
231
|
-
expect(subject).to respond_to(:hash)
|
232
|
-
end
|
233
|
-
it "should build hash identity by value" do
|
234
|
-
contrast = ISO8601::Days.new(3)
|
235
|
-
|
236
|
-
expect(subject.hash == contrast.hash).to be_truthy
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
describe ISO8601::Hours do
|
242
|
-
describe '#factor' do
|
243
|
-
it "should return the Hour factor" do
|
244
|
-
expect(ISO8601::Hours.new(2).factor).to eq(3600)
|
245
|
-
end
|
246
|
-
it "should return the amount of seconds" do
|
247
|
-
expect(ISO8601::Hours.new(2).to_seconds).to eq(7200)
|
248
|
-
expect(ISO8601::Hours.new(-2).to_seconds).to eq(-7200)
|
249
|
-
end
|
250
|
-
end
|
251
|
-
describe '#symbol' do
|
252
|
-
it "should return the ISO symbol" do
|
253
|
-
expect(ISO8601::Hours.new(1)).to respond_to(:symbol)
|
254
|
-
expect(ISO8601::Hours.new(1).symbol).to eq(:H)
|
255
|
-
end
|
256
|
-
end
|
257
|
-
|
258
|
-
describe '#hash' do
|
259
|
-
let(:subject) { ISO8601::Hours.new(3) }
|
260
|
-
it "should respond to #hash" do
|
261
|
-
expect(subject).to respond_to(:hash)
|
262
|
-
end
|
263
|
-
it "should build hash identity by value" do
|
264
|
-
contrast = ISO8601::Hours.new(3)
|
265
|
-
|
266
|
-
expect(subject.hash == contrast.hash).to be_truthy
|
267
|
-
end
|
268
|
-
end
|
269
|
-
end
|
270
|
-
|
271
|
-
describe ISO8601::Minutes do
|
272
|
-
describe '#factor' do
|
273
|
-
it "should return the Minute factor" do
|
274
|
-
expect(ISO8601::Minutes.new(2).factor).to eq(60)
|
275
|
-
end
|
276
|
-
it "should return the amount of seconds" do
|
277
|
-
expect(ISO8601::Minutes.new(2).to_seconds).to eq(120)
|
278
|
-
expect(ISO8601::Minutes.new(-2).to_seconds).to eq(-120)
|
279
|
-
end
|
280
|
-
end
|
281
|
-
describe '#symbol' do
|
282
|
-
it "should return the ISO symbol" do
|
283
|
-
expect(ISO8601::Minutes.new(1)).to respond_to(:symbol)
|
284
|
-
expect(ISO8601::Minutes.new(1).symbol).to eq(:M)
|
285
|
-
end
|
286
|
-
end
|
287
|
-
|
288
|
-
describe '#hash' do
|
289
|
-
let(:subject) { ISO8601::Minutes.new(3) }
|
290
|
-
it "should respond to #hash" do
|
291
|
-
expect(subject).to respond_to(:hash)
|
292
|
-
end
|
293
|
-
it "should build hash identity by value" do
|
294
|
-
contrast = ISO8601::Minutes.new(3)
|
295
|
-
|
296
|
-
expect(subject.hash == contrast.hash).to be_truthy
|
297
|
-
end
|
298
|
-
end
|
299
|
-
end
|
300
|
-
|
301
|
-
describe ISO8601::Seconds do
|
302
|
-
describe '#factor' do
|
303
|
-
it "should return the Second factor" do
|
304
|
-
expect(ISO8601::Seconds.new(2).factor).to eq(1)
|
305
|
-
end
|
306
|
-
it "should return the amount of seconds" do
|
307
|
-
expect(ISO8601::Seconds.new(2).to_seconds).to eq(2)
|
308
|
-
expect(ISO8601::Seconds.new(-2).to_seconds).to eq(-2)
|
309
|
-
end
|
310
|
-
end
|
311
|
-
describe '#symbol' do
|
312
|
-
it "should return the ISO symbol" do
|
313
|
-
expect(ISO8601::Seconds.new(1)).to respond_to(:symbol)
|
314
|
-
expect(ISO8601::Seconds.new(1).symbol).to eq(:S)
|
315
|
-
end
|
316
|
-
end
|
317
|
-
|
318
|
-
describe '#hash' do
|
319
|
-
let(:subject) { ISO8601::Seconds.new(3) }
|
320
|
-
it "should respond to #hash" do
|
321
|
-
expect(subject).to respond_to(:hash)
|
322
|
-
end
|
323
|
-
it "should build hash identity by value" do
|
324
|
-
contrast = ISO8601::Seconds.new(3)
|
325
|
-
|
326
|
-
expect(subject.hash == contrast.hash).to be_truthy
|
327
|
-
end
|
328
|
-
end
|
329
|
-
end
|