dbd 0.0.9 → 0.0.10

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +2 -2
  3. data/HISTORY.txt +11 -0
  4. data/README.md +24 -5
  5. data/bin/test_4.rb +2 -2
  6. data/bin/test_6.rb +2 -2
  7. data/docs/test.rb +1 -1
  8. data/lib/dbd/fact.rb +35 -67
  9. data/lib/dbd/fact/factory.rb +90 -0
  10. data/lib/dbd/fact/id.rb +2 -2
  11. data/lib/dbd/fact/subject.rb +2 -2
  12. data/lib/dbd/graph.rb +4 -6
  13. data/lib/dbd/helpers/uuid.rb +2 -2
  14. data/lib/dbd/resource.rb +1 -1
  15. data/lib/dbd/time_stamp.rb +16 -7
  16. data/lib/dbd/version.rb +1 -1
  17. data/spec/lib/dbd/fact/collection/collection_spec.rb +59 -59
  18. data/spec/lib/dbd/fact/factory/factory_spec.rb +109 -0
  19. data/spec/lib/dbd/fact/id/id_spec.rb +4 -4
  20. data/spec/lib/dbd/fact/id/test_factories_spec.rb +14 -0
  21. data/spec/lib/dbd/fact/methods_spec.rb +53 -57
  22. data/spec/lib/dbd/fact/new_spec.rb +32 -55
  23. data/spec/lib/dbd/fact/subject/subject_spec.rb +3 -3
  24. data/spec/lib/dbd/fact/subject/test_factories_spec.rb +23 -0
  25. data/spec/lib/dbd/fact/test_factories_spec.rb +82 -0
  26. data/spec/lib/dbd/graph/add_to_graph_spec.rb +31 -31
  27. data/spec/lib/dbd/graph/from_csv_spec.rb +47 -20
  28. data/spec/lib/dbd/graph/test_factories_spec.rb +58 -0
  29. data/spec/lib/dbd/graph/to_csv_spec.rb +46 -45
  30. data/spec/lib/dbd/helpers/ordered_set_collection/ordered_set_collection_spec.rb +17 -17
  31. data/spec/lib/dbd/helpers/uuid/uuid_spec.rb +11 -5
  32. data/spec/lib/dbd/performance_spec.rb +6 -6
  33. data/spec/lib/dbd/provenance_fact/methods_spec.rb +19 -19
  34. data/spec/lib/dbd/provenance_fact/new_spec.rb +17 -17
  35. data/spec/lib/dbd/provenance_fact/test_factories_spec.rb +24 -0
  36. data/spec/lib/dbd/provenance_resource/provenance_resource_spec.rb +24 -24
  37. data/spec/lib/dbd/rdf_base/rdf_base_spec.rb +7 -7
  38. data/spec/lib/dbd/resource/collection_spec.rb +34 -34
  39. data/spec/lib/dbd/resource/new_spec.rb +12 -12
  40. data/spec/lib/dbd/resource/test_factories_spec.rb +25 -0
  41. data/spec/lib/dbd/time_stamp/comparisons_spec.rb +31 -30
  42. data/spec/lib/dbd/time_stamp/methods_spec.rb +17 -13
  43. data/spec/lib/dbd/time_stamp/new_spec.rb +40 -14
  44. data/spec/lib/dbd/time_stamp/test_factories_spec.rb +18 -0
  45. data/spec/spec_helper.rb +2 -6
  46. data/spec/{factories → test_factories}/fact.rb +32 -25
  47. data/spec/{factories → test_factories}/fact/id.rb +2 -2
  48. data/spec/{factories → test_factories}/fact/subject.rb +3 -3
  49. data/spec/test_factories/graph.rb +25 -0
  50. data/spec/{factories → test_factories}/provenance_fact.rb +8 -10
  51. data/spec/{factories → test_factories}/provenance_resource.rb +3 -3
  52. data/spec/{factories → test_factories}/resource.rb +10 -4
  53. data/spec/{factories → test_factories}/time_stamp.rb +2 -2
  54. metadata +35 -32
  55. data/spec/factories/graph.rb +0 -23
  56. data/spec/lib/dbd/fact/factory_spec.rb +0 -82
  57. data/spec/lib/dbd/fact/id/factory_spec.rb +0 -16
  58. data/spec/lib/dbd/fact/subject/factory_spec.rb +0 -25
  59. data/spec/lib/dbd/graph/factory_spec.rb +0 -33
  60. data/spec/lib/dbd/provenance_fact/factory_spec.rb +0 -24
  61. data/spec/lib/dbd/resource/factory_spec.rb +0 -18
  62. data/spec/lib/dbd/time_stamp/factory_spec.rb +0 -18
@@ -3,52 +3,52 @@ require 'spec_helper'
3
3
  module Dbd
4
4
  describe Resource do
5
5
 
6
- let(:provenance_subject) { Factories::ProvenanceResource.provenance_resource.subject }
6
+ let(:provenance_subject) { TestFactories::ProvenanceResource.provenance_resource.subject }
7
7
 
8
8
  let(:resource) { described_class.new(provenance_subject: provenance_subject) }
9
9
 
10
10
  let(:resource_subject) { resource.subject }
11
11
 
12
- describe "the fact collection" do
12
+ describe 'the fact collection' do
13
13
 
14
- let(:fact_2_with_subject) { Factories::Fact.fact_2_with_subject }
15
- let(:fact_3_with_subject) { Factories::Fact.fact_3_with_subject }
16
- let(:fact_without_subject) { Factories::Fact.data_fact }
17
- let(:fact_with_provenance) { Factories::Fact.data_fact(provenance_subject, nil) }
18
- let(:fact_with_resource_subject) { Factories::Fact.data_fact(nil, resource_subject) }
19
- let(:fact_with_provenance_and_resource_subject) { Factories::Fact.data_fact(provenance_subject, resource_subject) }
20
- let(:fact_with_incorrect_provenance) { Factories::Fact.data_fact(Factories::ProvenanceFact.new_subject, resource_subject) }
21
- let(:provenance_fact_context) { Factories::ProvenanceFact.context }
14
+ let(:fact_2_with_subject) { TestFactories::Fact.fact_2_with_subject }
15
+ let(:fact_3_with_subject) { TestFactories::Fact.fact_3_with_subject }
16
+ let(:fact_without_subject) { TestFactories::Fact.data_fact }
17
+ let(:fact_with_provenance) { TestFactories::Fact.data_fact(provenance_subject, nil) }
18
+ let(:fact_with_resource_subject) { TestFactories::Fact.data_fact(nil, resource_subject) }
19
+ let(:fact_with_provenance_and_resource_subject) { TestFactories::Fact.data_fact(provenance_subject, resource_subject) }
20
+ let(:fact_with_incorrect_provenance) { TestFactories::Fact.data_fact(TestFactories::ProvenanceFact.new_subject, resource_subject) }
21
+ let(:provenance_fact_context) { TestFactories::ProvenanceFact.context }
22
22
 
23
- it "enumerable functions work" do
23
+ it 'enumerable functions work' do
24
24
  resource.to_a.should == []
25
25
  end
26
26
 
27
- describe "#<<" do
27
+ describe '#<<' do
28
28
 
29
- it "can add a two facts (no subject set)" do
29
+ it 'can add a two facts (no subject set)' do
30
30
  resource << fact_without_subject
31
31
  resource << fact_with_provenance
32
32
  resource.size.should == 2
33
33
  end
34
34
 
35
- it "complains if a provenance_subject is added" do
35
+ it 'complains if a provenance_subject is added' do
36
36
  lambda{ resource << provenance_fact_context }.should raise_error(
37
37
  ArgumentError,
38
- "Trying to add a ProvenanceFact to a Resource.")
38
+ 'Trying to add a ProvenanceFact to a Resource.')
39
39
  end
40
40
 
41
- describe "checks and sets subject :" do
42
- describe "adding a fact with subject :" do
43
- describe "when the subject of the fact is equal to the resource_subject" do
44
- it "inserts the fact unaltered" do
41
+ describe 'checks and sets subject :' do
42
+ describe 'adding a fact with subject :' do
43
+ describe 'when the subject of the fact is equal to the resource_subject' do
44
+ it 'inserts the fact unaltered' do
45
45
  resource << fact_with_provenance_and_resource_subject
46
46
  resource.first.should be_equal(fact_with_provenance_and_resource_subject)
47
47
  end
48
48
  end
49
49
 
50
- describe "when the subject of the fact is not equal to the resource_subject" do
51
- it "raises a SetOnceError" do
50
+ describe 'when the subject of the fact is not equal to the resource_subject' do
51
+ it 'raises a SetOnceError' do
52
52
  lambda{ resource << fact_2_with_subject }.should raise_error(
53
53
  RubyPeterV::SetOnceError,
54
54
  "Value of subject was #{fact_2_with_subject.subject}, " \
@@ -57,7 +57,7 @@ module Dbd
57
57
  end
58
58
  end
59
59
 
60
- describe "adding a fact without subject" do
60
+ describe 'adding a fact without subject' do
61
61
 
62
62
  before(:each) do
63
63
  resource << fact_with_provenance
@@ -67,33 +67,33 @@ module Dbd
67
67
  resource.single
68
68
  end
69
69
 
70
- it "insert the same instance" do
70
+ it 'insert the same instance' do
71
71
  fact_in_resource.should be_equal(fact_with_provenance)
72
72
  end
73
73
 
74
- it "has kept the other attributes" do
74
+ it 'has kept the other attributes' do
75
75
  (fact_with_provenance.class.attributes - [:subject]).each do |attr|
76
76
  fact_in_resource.send(attr).should == fact_with_provenance.send(attr)
77
77
  end
78
78
  end
79
79
 
80
- it "has set the subject to the Resource subject" do
80
+ it 'has set the subject to the Resource subject' do
81
81
  fact_in_resource.subject.should == resource_subject
82
82
  end
83
83
  end
84
84
  end
85
85
 
86
- describe "checks and sets provenance_subject :" do
87
- describe "adding a fact with a provenance subject :" do
88
- describe "when the provenance_subject of the fact is equal to the provenance_subject of the resource" do
89
- it "inserts the fact unaltered" do
86
+ describe 'checks and sets provenance_subject :' do
87
+ describe 'adding a fact with a provenance subject :' do
88
+ describe 'when the provenance_subject of the fact is equal to the provenance_subject of the resource' do
89
+ it 'inserts the fact unaltered' do
90
90
  resource << fact_with_provenance_and_resource_subject
91
91
  resource.single.should be_equal(fact_with_provenance_and_resource_subject)
92
92
  end
93
93
  end
94
94
 
95
- describe "when the provenance_subject of the fact is not equal to the resource" do
96
- it "raises a SetOnceError" do
95
+ describe 'when the provenance_subject of the fact is not equal to the resource' do
96
+ it 'raises a SetOnceError' do
97
97
  lambda{ resource << fact_with_incorrect_provenance }.should raise_error(
98
98
  RubyPeterV::SetOnceError,
99
99
  "Value of provenance_subject was #{fact_with_incorrect_provenance.provenance_subject}, " \
@@ -102,7 +102,7 @@ module Dbd
102
102
  end
103
103
  end
104
104
 
105
- describe "adding a fact without provenance_subject" do
105
+ describe 'adding a fact without provenance_subject' do
106
106
 
107
107
  before(:each) do
108
108
  resource << fact_with_resource_subject
@@ -110,11 +110,11 @@ module Dbd
110
110
 
111
111
  let(:fact_in_resource) { resource.single }
112
112
 
113
- it "inserts the same instance" do
113
+ it 'inserts the same instance' do
114
114
  fact_in_resource.should be_equal(fact_with_resource_subject)
115
115
  end
116
116
 
117
- it "has set the provenance_subject to the Resource provenance_subject" do
117
+ it 'has set the provenance_subject to the Resource provenance_subject' do
118
118
  fact_in_resource.provenance_subject.should == provenance_subject
119
119
  end
120
120
  end
@@ -3,29 +3,29 @@ require 'spec_helper'
3
3
  module Dbd
4
4
  describe Resource do
5
5
 
6
- let(:provenance_subject) { Factories::ProvenanceResource.provenance_resource.subject }
6
+ let(:provenance_subject) { TestFactories::ProvenanceResource.provenance_resource.subject }
7
7
 
8
8
  let(:resource) { described_class.new(provenance_subject: provenance_subject) }
9
9
 
10
- describe ".new_subject" do
11
- it "returns a Fact#new_subject" do
12
- described_class.new_subject.should be_a(Fact.new_subject.class)
10
+ describe '.new_subject' do
11
+ it 'returns a Fact#new_subject' do
12
+ described_class.new_subject.should be_a(Fact.factory.new_subject.class)
13
13
  end
14
14
  end
15
15
 
16
- describe ".new" do
17
- describe "with a provenance_subject argument" do
18
- it "has created a subject" do
16
+ describe '.new' do
17
+ describe 'with a provenance_subject argument' do
18
+ it 'has created a subject' do
19
19
  resource.subject.should be_a(described_class.new_subject.class)
20
20
  end
21
21
 
22
- it "has stored the provenance_subject" do
22
+ it 'has stored the provenance_subject' do
23
23
  resource.provenance_subject.should == provenance_subject
24
24
  end
25
25
  end
26
26
 
27
- describe "with an explicit subject argument" do
28
- it "has stored the given subject" do
27
+ describe 'with an explicit subject argument' do
28
+ it 'has stored the given subject' do
29
29
  explicit_subject = described_class.new_subject
30
30
  described_class.new(
31
31
  subject: explicit_subject,
@@ -33,8 +33,8 @@ module Dbd
33
33
  end
34
34
  end
35
35
 
36
- describe "with a nil provenance_subject argument" do
37
- it "raises a ProvenanceError" do
36
+ describe 'with a nil provenance_subject argument' do
37
+ it 'raises a ProvenanceError' do
38
38
  lambda { described_class.new(provenance_subject: nil) } .
39
39
  should raise_error ProvenanceError
40
40
  end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ module TestFactories
4
+ describe Resource do
5
+
6
+ let(:provenance_subject) { TestFactories::ProvenanceResource.provenance_resource.subject }
7
+
8
+ describe "TestFactories::Resource" do
9
+ it ".empty works" do
10
+ described_class.facts_resource(provenance_subject)
11
+ end
12
+
13
+ context ".facts_resource" do
14
+ it "works with explicit provenance_subject" do
15
+ described_class.facts_resource(provenance_subject)
16
+ end
17
+
18
+ it "works without explicit provenance_subject" do
19
+ resource = described_class.facts_resource()
20
+ resource.provenance_subject.should_not be_nil
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -3,82 +3,83 @@ require 'spec_helper'
3
3
  module Dbd
4
4
  describe TimeStamp do
5
5
 
6
- let(:time_stamp_0) { described_class.new(time: Time.utc(2013,5,18,12,0,0)) }
7
- let(:time_stamp_1) { described_class.new(time: Time.utc(2013,5,18,12,0,0)) }
8
- let(:time_stamp_2) { described_class.new(time: Time.utc(2013,5,18,12,0,1,5_000)) }
9
- let(:time_stamp_3) { described_class.new(time: Time.utc(2013,5,18,12,0,1,5_001)) }
10
- let(:time_stamp_4) { described_class.new(time: Time.utc(2013,5,18,12,0,1,4_999)) }
11
- let(:time_stamp_5) { described_class.new(time: Time.utc(2013,5,18,12,0,1,5_002)) }
12
- let(:time_stamp_6) { described_class.new(time: Time.utc(2013,5,18,12,0,1,4_998)) }
13
-
14
- describe "==" do
15
- it "should be ==" do
6
+ let(:base_time) { Time.utc(2013,5,18,12,0,0)}
7
+ let(:time_stamp_0) { described_class.new(time: base_time) }
8
+ let(:time_stamp_1) { described_class.new(time: base_time) }
9
+ let(:time_stamp_2) { described_class.new(time: base_time + Rational('5_000/1_000_000')) }
10
+ let(:time_stamp_3) { described_class.new(time: base_time + Rational('5_001/1_000_000')) }
11
+ let(:time_stamp_4) { described_class.new(time: base_time + Rational('4_999/1_000_000')) }
12
+ let(:time_stamp_5) { described_class.new(time: base_time + Rational('5_002/1_000_000')) }
13
+ let(:time_stamp_6) { described_class.new(time: base_time + Rational('4_998/1_000_000')) }
14
+
15
+ describe '==' do
16
+ it 'should be ==' do
16
17
  time_stamp_0.should == time_stamp_1
17
18
  end
18
19
 
19
- it "hash should also be equal" do
20
+ it 'hash should also be equal' do
20
21
  time_stamp_0.hash.should == time_stamp_1.hash
21
22
  end
22
23
  end
23
24
 
24
- describe "near?(other)" do
25
- it "is true when the time_stamp is 1000 ns larger" do
25
+ describe 'near?(other)' do
26
+ it 'is true when the time_stamp is 1000 ns larger' do
26
27
  time_stamp_2.near?(time_stamp_3).should be_true
27
28
  end
28
29
 
29
- it "is true when the time_stamp is 1000 ns smaller" do
30
+ it 'is true when the time_stamp is 1000 ns smaller' do
30
31
  time_stamp_2.near?(time_stamp_4).should be_true
31
32
  end
32
33
 
33
- it "is false when the time_stamp is 2000 ns larger" do
34
+ it 'is false when the time_stamp is 2000 ns larger' do
34
35
  time_stamp_2.near?(time_stamp_5).should_not be_true
35
36
  end
36
37
 
37
- it "is false when the time_stamp is 2000 ns smaller" do
38
+ it 'is false when the time_stamp is 2000 ns smaller' do
38
39
  time_stamp_2.near?(time_stamp_6).should_not be_true
39
40
  end
40
41
  end
41
42
 
42
- describe ">" do
43
- it "is true if time_stamp is really larger" do
43
+ describe '>' do
44
+ it 'is true if time_stamp is really larger' do
44
45
  time_stamp_2.should > time_stamp_1
45
46
  end
46
47
  end
47
48
 
48
- describe "<" do
49
- it "is true if time_stamp is really smaller" do
49
+ describe '<' do
50
+ it 'is true if time_stamp is really smaller' do
50
51
  time_stamp_1.should < time_stamp_2
51
52
  end
52
53
  end
53
54
 
54
- describe ">=" do
55
- it "is true if time_stamp_2 is really larger" do
55
+ describe '>=' do
56
+ it 'is true if time_stamp_2 is really larger' do
56
57
  time_stamp_2.should >= time_stamp_1
57
58
  end
58
59
  end
59
60
 
60
- describe "<=" do
61
- it "is true if time_stamp_1 is really smaller" do
61
+ describe '<=' do
62
+ it 'is true if time_stamp_1 is really smaller' do
62
63
  time_stamp_1.should <= time_stamp_2
63
64
  end
64
65
  end
65
66
 
66
- describe "+" do
67
- it "returns a larger time_stamp" do
67
+ describe '+' do
68
+ it 'returns a larger time_stamp' do
68
69
  (subject + 1).should > subject
69
70
  end
70
71
 
71
- it "sees a difference of 1 nanosecond" do
72
+ it 'sees a difference of 1 nanosecond' do
72
73
  (subject + Rational('1/1000_000_000')).should > subject
73
74
  end
74
75
  end
75
76
 
76
- describe "-" do
77
- it "returns the time difference" do
77
+ describe '-' do
78
+ it 'returns the time difference' do
78
79
  ((subject + 1) - subject).should == 1
79
80
  end
80
81
 
81
- it "sees a difference of 1 nanosecond" do
82
+ it 'sees a difference of 1 nanosecond' do
82
83
  ((subject + Rational('1/1000_000_000')) - subject).should == Rational('1/1_000_000_000')
83
84
  end
84
85
  end
@@ -3,37 +3,41 @@ require 'spec_helper'
3
3
  module Dbd
4
4
  describe TimeStamp do
5
5
 
6
- let(:a_time_stamp) { "2013-05-16 23:52:38.123456789 UTC" }
6
+ let(:a_time_stamp) { '2013-05-16 23:52:38.123456789 UTC' }
7
7
 
8
- describe ".time_format_regexp" do
9
- it "matches an example string" do
10
- a_time_stamp.should match(described_class.to_s_regexp)
8
+ describe '.valid_regexp' do
9
+ it 'matches an example string' do
10
+ a_time_stamp.should match(described_class.valid_regexp)
11
+ end
12
+
13
+ it 'does not match an incorrect string' do
14
+ ('0' + a_time_stamp).should_not match(described_class.valid_regexp)
11
15
  end
12
16
  end
13
17
 
14
- describe "#time to allow comparison" do
15
- it "responds with a time" do
18
+ describe '#time to allow comparison' do
19
+ it 'responds with a time' do
16
20
  described_class.new.time.should be_a(Time)
17
21
  end
18
22
  end
19
23
 
20
- describe "#to_s" do
21
- it "returns a Time format string" do
22
- subject.to_s.should match(described_class.to_s_regexp)
24
+ describe '#to_s' do
25
+ it 'returns a Time format string' do
26
+ subject.to_s.should match(described_class.valid_regexp)
23
27
  end
24
28
  end
25
29
 
26
- describe ".from_s" do
27
- it "returns a TimeStamp" do
30
+ describe '.from_s' do
31
+ it 'returns a TimeStamp' do
28
32
  described_class.new(time: a_time_stamp).should be_a(described_class)
29
33
  end
30
34
 
31
- it "round trips with to_s" do
35
+ it 'round trips with to_s' do
32
36
  time_stamp = described_class.new(time: a_time_stamp)
33
37
  time_stamp.to_s.should == a_time_stamp
34
38
  end
35
39
 
36
- it "raises ArgumentError is time_zone is not UTC" do
40
+ it 'raises ArgumentError is time_zone is not UTC' do
37
41
  time_CET = a_time_stamp.sub(/UTC/, 'CET')
38
42
  lambda{ described_class.new(time: time_CET) }.should raise_error ArgumentError
39
43
  end
@@ -2,43 +2,69 @@ require 'spec_helper'
2
2
 
3
3
  module Dbd
4
4
  describe TimeStamp do
5
- describe ".new" do
5
+ describe '.new' do
6
6
 
7
- let(:time) { Time.now.utc }
7
+ let(:base_time) { Time.utc(2013,5,18,12,0,0)}
8
8
 
9
- let(:time_string) { Factories::TimeStamp.fixed_time_string }
9
+ let(:time_string) { TestFactories::TimeStamp.fixed_time_string }
10
10
 
11
11
  before(:each) do
12
- time
13
- Time.stub(:now).and_return(time)
12
+ Time.stub(:now).and_return(base_time)
14
13
  end
15
14
 
16
- it "creates a new (random) time_stamp" do
15
+ it 'creates a new (random) time_stamp' do
17
16
  subject # should_not raise_error
18
17
  end
19
18
 
20
- it "with :time option given a Time object, sets that to time" do
21
- near_future = time + 100
19
+ it 'with :time option given a Time object, sets that to time' do
20
+ near_future = base_time + 100
22
21
  time_stamp = described_class.new(time: near_future)
23
22
  time_stamp.time.should == near_future
24
23
  end
25
24
 
26
- it "with :time option given a String object, sets that to time" do
25
+ it 'with :time option given a String object, sets that to time' do
27
26
  time_stamp = described_class.new(time: time_string)
28
27
  time_stamp.to_s.should == time_string
29
28
  end
30
29
 
31
- it "with :larger_than, sets a time that is strictly and slightly larger than this" do
32
- larger_than = described_class.new(time: time + Rational('500/1000_000')) # 0.5 ms
30
+ it 'with :larger_than, sets a time that is strictly and slightly larger than this' do
31
+ larger_than = described_class.new(time: base_time + Rational('500/1000_000')) # 0.5 ms
33
32
  time_stamp = described_class.new(larger_than: larger_than)
34
33
  time_stamp.time.should > larger_than.time
35
34
  (time_stamp.time - larger_than.time).should < Rational('1/1000_000') # 1 us
36
35
  end
37
36
 
38
- it "without :larger_than adds some random time to the generated time" do
37
+ it 'without :larger_than adds some random time to the generated time' do
39
38
  time_stamp = described_class.new
40
- time_stamp.time.should > time
41
- (time_stamp.time - time).should < Rational('1/1000_000') # 1 us
39
+ time_stamp.time.should > base_time
40
+ (time_stamp.time - base_time).should < Rational('1/1000_000') # 1 us
41
+ end
42
+
43
+ it 'using "minimum_time_offset" as a diff for new is always causing strictly larger time_stamp' do
44
+ time_stamp = described_class.new(time: base_time)
45
+ minimum_time_offset = nil
46
+ time_stamp.instance_eval do
47
+ # read the private variable.
48
+ # The public API methods "could" be used
49
+ # (and did expose the problem eventually), but
50
+ # only with a very low probability due to the
51
+ # random offset (using a minimum offset,
52
+ # triggers the issue with much less iterations).
53
+ minimum_time_offset = minimum_time_offset()
54
+ end
55
+ (1..100).each do |i|
56
+ higher = described_class.new(time: base_time + i * minimum_time_offset)
57
+ higher.should > time_stamp
58
+ time_stamp = higher
59
+ end
60
+ end
61
+
62
+ it 'with :time option given a String object, sets that to time for many values' do
63
+ (0...100).each do |i|
64
+ time_string = "2013-07-04 18:48:07.26300#{i.to_s.rjust(4,'0')} UTC"
65
+ time_stamp = described_class.new(time: time_string)
66
+ time_stamp.to_s.should == time_string
67
+ end
42
68
  end
43
69
  end
44
70
  end