interpreted_date 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -132,4 +132,13 @@ class InterpretedDate
132
132
  self.decade == other_date.decade && self.year == other_date.year && self.month == other_date.month && self.day == other_date.day
133
133
  end
134
134
 
135
+ def <=>(other_date)
136
+ return nil unless other_date.is_a?(InterpretedDate)
137
+ (self.decade <=> other_date.decade).nonzero? ||
138
+ (self.year <=> other_date.year).nonzero? ||
139
+ (self.month <=> other_date.month).nonzero? ||
140
+ (self.day <=> other_date.day).nonzero? ||
141
+ 0
142
+ end
143
+
135
144
  end
@@ -1,3 +1,3 @@
1
1
  class InterpretedDate
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -129,4 +129,32 @@ describe InterpretedDate do
129
129
  end
130
130
  end
131
131
 
132
+ describe "<=>", :focus do
133
+
134
+ it "correctly sorts with a decade" do
135
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 31}) <=> InterpretedDate.new({:decade => 2000 })).should == 1
136
+ (InterpretedDate.new({:decade => 1950, :year => 2012, :month => 2, :day => 31}) <=> InterpretedDate.new({:decade => 2000 })).should == -1
137
+ (InterpretedDate.new({:decade => 1950, :month => 2}) <=> InterpretedDate.new({:decade => 1950, :month => 10 })).should == -1
138
+ (InterpretedDate.new({:decade => 1950}) <=> InterpretedDate.new({:decade => 1950})).should == 0
139
+ end
140
+
141
+ it "correctly sorts with the year" do
142
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 31}) <=> InterpretedDate.new({:decade => 2010, :year => 2011 })).should == 1
143
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 31}) <=> InterpretedDate.new({:decade => 2010, :year => 2013 })).should == -1
144
+ (InterpretedDate.new({:decade => 2010, :year => 2012}) <=> InterpretedDate.new({:decade => 2010, :year => 2012})).should == 0
145
+ end
146
+
147
+ it "correctly sorts with the month" do
148
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 31}) <=> InterpretedDate.new({:decade => 2010, :year => 2011, :month => 1 })).should == 1
149
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 31}) <=> InterpretedDate.new({:decade => 2010, :year => 2013, :month => 3 })).should == -1
150
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 3}) <=> InterpretedDate.new({:decade => 2010, :year => 2012, :month => 3})).should == 0
151
+ end
152
+
153
+ it "correctly sorts with the day" do
154
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 31}) <=> InterpretedDate.new({:decade => 2010, :year => 2011, :month => 2, :day => 1 })).should == 1
155
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 15}) <=> InterpretedDate.new({:decade => 2010, :year => 2013, :month => 2, :day => 31 })).should == -1
156
+ (InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 31}) <=> InterpretedDate.new({:decade => 2010, :year => 2012, :month => 2, :day => 31})).should == 0
157
+ end
158
+ end
159
+
132
160
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: interpreted_date
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-15 00:00:00.000000000 Z
12
+ date: 2012-10-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec