pseudo_date 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in elastic_board.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,24 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ pseudo_date (0.1.5)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.2.4)
10
+ rspec (2.13.0)
11
+ rspec-core (~> 2.13.0)
12
+ rspec-expectations (~> 2.13.0)
13
+ rspec-mocks (~> 2.13.0)
14
+ rspec-core (2.13.1)
15
+ rspec-expectations (2.13.0)
16
+ diff-lcs (>= 1.1.3, < 2.0)
17
+ rspec-mocks (2.13.1)
18
+
19
+ PLATFORMS
20
+ ruby
21
+
22
+ DEPENDENCIES
23
+ pseudo_date!
24
+ rspec
data/Rakefile CHANGED
@@ -1,13 +1 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'echoe'
4
-
5
- Echoe.new('pseudo_date', '0.1.4') do |p|
6
- p.description = 'Date parser and container for partial or incomplete dates.'
7
- p.url = 'http://github.com/PatrickTulskie/pseudo_date'
8
- p.author = 'Patrick Tulskie'
9
- p.email = 'PatrickTulskie@gmail.com'
10
- p.ignore_pattern = ['tmp/*', 'script/*', 'lib/main.rb']
11
- end
12
-
13
1
  Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'benchmark'
3
+ require '../lib/pseudo_date'
4
+ include Benchmark
5
+
6
+ bm do |bench|
7
+ bench.report('null ') { 1000.times { |i| i } }
8
+ bench.report('19850625 ') { 1000.times { PseudoDate.new('19850625') } }
9
+ bench.report('1985-25-06 ') { 1000.times { PseudoDate.new('1985-25-06') } }
10
+ bench.report('06-25-1985 ') { 1000.times { PseudoDate.new('06-25-1985') } }
11
+ bench.report('25-06-1985 ') { 1000.times { PseudoDate.new('25-06-1985') } }
12
+ bench.report('06/25/1985 ') { 1000.times { PseudoDate.new('06/25/1985') } }
13
+ bench.report('06/1985 ') { 1000.times { PseudoDate.new('06/1985') } }
14
+ bench.report('85 ') { 1000.times { PseudoDate.new('85') } }
15
+ bench.report('1985 ') { 1000.times { PseudoDate.new('1985') } }
16
+ bench.report('Jun 25, 1985 ') { 1000.times { PseudoDate.new('Jun 25, 1985') } }
17
+ end
@@ -42,7 +42,16 @@ class PseudoDate
42
42
  # = Boolean Questions =
43
43
  # =====================
44
44
  def valid?
45
- !(@date_hash.nil? || @date_hash.empty?)
45
+ !(@date_hash.nil? || @date_hash.empty?) && self.present?
46
+ end
47
+
48
+ def blank?
49
+ (@year.to_s == '0000' && @month.to_s == '00' && @day.to_s == '00')
50
+ end
51
+ alias_method :empty?, :blank?
52
+
53
+ def present?
54
+ !self.blank?
46
55
  end
47
56
 
48
57
  # ====================
@@ -124,11 +133,11 @@ class PseudoDate
124
133
  private
125
134
 
126
135
  def correct_digits!
127
- @year = '0000' if @year.to_s.strip.length == 0
136
+ @year = '0000' if @year.to_s.strip.length == 0
128
137
  @month = '00' if @month.to_s.strip.length == 0
129
- @day = '00' if @day.to_s.strip.length == 0
138
+ @day = '00' if @day.to_s.strip.length == 0
130
139
 
131
- @day = "0#{@day}" if @day.to_s.length == 1
140
+ @day = "0#{@day}" if @day.to_s.length == 1
132
141
  @month = "0#{@month}" if @month.to_s.length == 1
133
142
 
134
143
  %w(day month year).each do |i|
@@ -0,0 +1,3 @@
1
+ class PseudoDate
2
+ VERSION = "0.1.5"
3
+ end
data/pseudo_date.gemspec CHANGED
@@ -1,30 +1,21 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pseudo_date/version'
2
5
 
3
- Gem::Specification.new do |s|
4
- s.name = %q{pseudo_date}
5
- s.version = "0.1.4"
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "pseudo_date"
8
+ gem.version = PseudoDate::VERSION
9
+ gem.authors = ["Patrick Tulskie"]
10
+ gem.email = ["patricktulskie@gmail.com"]
11
+ gem.description = %q{Date parser and container for partial or incomplete dates.}
12
+ gem.summary = %q{Date parser and container for partial or incomplete dates.}
13
+ gem.homepage = "http://github.com/PatrickTulskie/pseudo_date"
6
14
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Patrick Tulskie"]
9
- s.date = %q{2011-07-07}
10
- s.description = %q{Date parser and container for partial or incomplete dates.}
11
- s.email = %q{PatrickTulskie@gmail.com}
12
- s.extra_rdoc_files = ["README.mdown", "lib/core_extensions/object.rb", "lib/core_extensions/string.rb", "lib/pseudo_date.rb", "lib/pseudo_date/parser.rb", "lib/pseudo_date/pseudo_date.rb"]
13
- s.files = ["Manifest", "README.mdown", "Rakefile", "lib/core_extensions/object.rb", "lib/core_extensions/string.rb", "lib/pseudo_date.rb", "lib/pseudo_date/parser.rb", "lib/pseudo_date/pseudo_date.rb", "pseudo_date.gemspec", "test/test_helper.rb", "test/test_parser.rb", "test/test_pseudo_date.rb"]
14
- s.homepage = %q{http://github.com/PatrickTulskie/pseudo_date}
15
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Pseudo_date", "--main", "README.mdown"]
16
- s.require_paths = ["lib"]
17
- s.rubyforge_project = %q{pseudo_date}
18
- s.rubygems_version = %q{1.5.3}
19
- s.summary = %q{Date parser and container for partial or incomplete dates.}
20
- s.test_files = ["test/test_helper.rb", "test/test_parser.rb", "test/test_pseudo_date.rb"]
21
-
22
- if s.respond_to? :specification_version then
23
- s.specification_version = 3
24
-
25
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
- else
27
- end
28
- else
29
- end
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency("rspec")
30
21
  end
@@ -0,0 +1,149 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "PseudoDate Parsing" do
4
+
5
+ before(:each) do
6
+ @day = '25'
7
+ @month = '06'
8
+ @year = '1985'
9
+ @string_date = 'Jun 25, 1985'
10
+ end
11
+
12
+ context "date hash" do
13
+ it "should parse an exact hash" do
14
+ pd = PseudoDate.new(:year => @year, :day => @day, :month => @month)
15
+ pd.day.should == @day
16
+ pd.month.should == @month
17
+ pd.year.should == @year
18
+ end
19
+
20
+ it "should parse a hash inexact keys" do
21
+ pd = PseudoDate.new('Year' => @year, 'day' => @day, :Month => @month)
22
+ pd.day.should == @day
23
+ pd.month.should == @month
24
+ pd.year.should == @year
25
+ end
26
+ end
27
+
28
+ # 19850625
29
+ context "yearmonthday" do
30
+ it 'should be exact precision' do
31
+ PseudoDate.new("#{@year}#{@month}#{@day}").precision.should == 'exact'
32
+ end
33
+
34
+ it 'should match original input' do
35
+ pd = PseudoDate.new("#{@year}#{@month}#{@day}")
36
+ pd.day.should == @day
37
+ pd.month.should == @month
38
+ pd.year.should == @year
39
+ end
40
+ end
41
+
42
+ # 1985-25-06
43
+ context "year-day-month" do
44
+ it 'should be exact precision' do
45
+ PseudoDate.new("#{@year}-#{@day}-#{@month}").precision.should == 'exact'
46
+ end
47
+
48
+ it 'should match original input' do
49
+ pd = PseudoDate.new("#{@year}-#{@day}-#{@month}")
50
+ pd.day.should == @day
51
+ pd.month.should == @month
52
+ pd.year.should == @year
53
+ end
54
+ end
55
+
56
+ # 06-25-1985
57
+ context "month-day-year" do
58
+ it 'should be exact precision' do
59
+ PseudoDate.new("#{@month}-#{@day}-#{@year}").precision.should == 'exact'
60
+ end
61
+
62
+ it 'should match original input' do
63
+ pd = PseudoDate.new("#{@month}-#{@day}-#{@year}")
64
+ pd.day.should == @day
65
+ pd.month.should == @month
66
+ pd.year.should == @year
67
+ end
68
+ end
69
+
70
+ # 25-06-1985
71
+ context "day-month-year" do
72
+ it 'should be exact precision' do
73
+ PseudoDate.new("#{@day}-#{@month}-#{@year}").precision.should == 'exact'
74
+ end
75
+
76
+ it 'should match original input' do
77
+ pd = PseudoDate.new("#{@day}-#{@month}-#{@year}")
78
+ pd.day.should == @day
79
+ pd.month.should == @month
80
+ pd.year.should == @year
81
+ end
82
+ end
83
+
84
+ # 06/25/1985
85
+ context "month/day/year" do
86
+ it 'should be exact precision' do
87
+ PseudoDate.new("#{@month}/#{@day}/#{@year}").precision.should == 'exact'
88
+ end
89
+
90
+ it 'should match original input' do
91
+ pd = PseudoDate.new("#{@month}/#{@day}/#{@year}")
92
+ pd.day.should == @day
93
+ pd.month.should == @month
94
+ pd.year.should == @year
95
+ end
96
+ end
97
+
98
+ # 06/1985
99
+ context "month/year" do
100
+ it 'should be partial precision' do
101
+ PseudoDate.new("#{@month}/#{@year}").precision.should == 'year_month'
102
+ end
103
+
104
+ it 'should match original input' do
105
+ pd = PseudoDate.new("#{@month}/#{@year}")
106
+ pd.month.should == @month
107
+ pd.year.should == @year
108
+ end
109
+ end
110
+
111
+ # 85
112
+ context "two digit year" do
113
+ it 'should be year precision' do
114
+ PseudoDate.new("85").precision == 'year'
115
+ end
116
+
117
+ it 'should match original input' do
118
+ pd = PseudoDate.new("85")
119
+ pd.year.should == @year
120
+ end
121
+ end
122
+
123
+ # 1985
124
+ context "four digit year" do
125
+ it 'should be year precision' do
126
+ PseudoDate.new(@year).precision.should == 'year'
127
+ end
128
+
129
+ it 'should match original input' do
130
+ pd = PseudoDate.new(@year)
131
+ pd.year.should == @year
132
+ end
133
+ end
134
+
135
+ # Jun 25, 1985
136
+ context "string date" do
137
+ it 'should be exact precision' do
138
+ PseudoDate.new(@string_date).precision.should == 'exact'
139
+ end
140
+
141
+ it 'should match original input' do
142
+ pd = PseudoDate.new(@string_date)
143
+ pd.day.should == @day
144
+ pd.month.should == @month
145
+ pd.year.should == @year
146
+ end
147
+ end
148
+
149
+ end
@@ -0,0 +1,88 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "PseudoDate" do
4
+
5
+ before(:each) do
6
+ @day = '25'
7
+ @month = '06'
8
+ @year = '1985'
9
+ @string_date = 'Jun 25, 1985'
10
+ end
11
+
12
+ context "blank dates" do
13
+ subject { PseudoDate.new("") }
14
+
15
+ it { should be_blank }
16
+ it { should be_empty }
17
+ it { should_not be_present }
18
+ it { should_not be_valid }
19
+ end
20
+
21
+ context "partial date types" do
22
+ it "should demonstrate later dates as greater than older dates" do
23
+ old_date = PseudoDate.new(:year => @year, :month => @month)
24
+ new_date = PseudoDate.new(:year => 1996, :month => @month)
25
+ (old_date < new_date).should be_true
26
+ end
27
+ it "should respond properly with the spaceship operator" do
28
+ old_date = PseudoDate.new(:year => @year, :month => @month)
29
+ new_date = PseudoDate.new(:year => 1996, :month => @month)
30
+ (old_date <=> new_date).should == -1
31
+ (new_date <=> old_date).should == 1
32
+ (new_date <=> new_date).should == 0
33
+ end
34
+ end
35
+
36
+ context "complete date types" do
37
+ it "should demonstrate later dates as greater than older dates" do
38
+ old_date = PseudoDate.new(:year => @year, :month => @month, :day => @day)
39
+ new_date = PseudoDate.new(:year => 1996, :month => @month, :day => @day)
40
+ (old_date < new_date).should be_true
41
+ end
42
+ it "should respond properly with the spaceship operator" do
43
+ old_date = PseudoDate.new(:year => @year, :month => @month, :day => @day)
44
+ new_date = PseudoDate.new(:year => 1996, :month => @month, :day => @day)
45
+ (old_date <=> new_date).should == -1
46
+ (new_date <=> old_date).should == 1
47
+ (new_date <=> new_date).should == 0
48
+ end
49
+ end
50
+
51
+ context "mixed date types" do
52
+ it "should demonstrate later dates as greater than older dates" do
53
+ old_date = PseudoDate.new(:year => @year, :month => @month)
54
+ new_date = PseudoDate.new(:year => 1996, :month => @month, :day => @day)
55
+ (old_date < new_date).should be_true
56
+ end
57
+ it "should demonstrate invalid dates as less than complete dates" do
58
+ complete = PseudoDate.new(:year => @year, :month => @month)
59
+ invalid = PseudoDate.new("")
60
+ (complete > invalid).should be_true
61
+ end
62
+ it "should respond properly with the spaceship operator" do
63
+ old_date = PseudoDate.new(:year => @year, :month => @month)
64
+ new_date = PseudoDate.new(:year => 1996, :month => @month, :day => @day)
65
+ (old_date <=> new_date).should == -1
66
+ (new_date <=> old_date).should == 1
67
+ (new_date <=> new_date).should == 0
68
+ end
69
+ end
70
+
71
+ context "date sorting" do
72
+ it "should work for mixed date types" do
73
+ dates = [{ :year => 2011, :month => 5 }, '1985', nil].map { |d| PseudoDate.new(d) }
74
+ sorted = dates.sort
75
+ sorted.first.year.should == "0000"
76
+ sorted.last.year.should == "2011"
77
+ end
78
+ end
79
+
80
+ context "converting to a hash" do
81
+ it "should use double digit strings for day and month" do
82
+ date = PseudoDate.new(:day => '1', :month => '2', :year => '1980')
83
+ date.to_hash[:day].should == "01"
84
+ date.to_hash[:month].should == "02"
85
+ end
86
+ end
87
+
88
+ end
@@ -1,4 +1,3 @@
1
1
  require 'rubygems'
2
- require 'test/unit'
3
- require 'shoulda'
2
+ require 'rspec'
4
3
  require File.dirname(__FILE__) + '/../lib/pseudo_date'
metadata CHANGED
@@ -1,91 +1,81 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pseudo_date
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 4
10
- version: 0.1.4
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Patrick Tulskie
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-07 00:00:00 -04:00
19
- default_executable:
20
- dependencies: []
21
-
12
+ date: 2013-05-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
22
30
  description: Date parser and container for partial or incomplete dates.
23
- email: PatrickTulskie@gmail.com
31
+ email:
32
+ - patricktulskie@gmail.com
24
33
  executables: []
25
-
26
34
  extensions: []
27
-
28
- extra_rdoc_files:
29
- - README.mdown
30
- - lib/core_extensions/object.rb
31
- - lib/core_extensions/string.rb
32
- - lib/pseudo_date.rb
33
- - lib/pseudo_date/parser.rb
34
- - lib/pseudo_date/pseudo_date.rb
35
- files:
35
+ extra_rdoc_files: []
36
+ files:
37
+ - .gitignore
38
+ - Gemfile
39
+ - Gemfile.lock
36
40
  - Manifest
37
41
  - README.mdown
38
42
  - Rakefile
43
+ - benchmark/pseudo_date_benchmark.rb
39
44
  - lib/core_extensions/object.rb
40
45
  - lib/core_extensions/string.rb
41
46
  - lib/pseudo_date.rb
42
47
  - lib/pseudo_date/parser.rb
43
48
  - lib/pseudo_date/pseudo_date.rb
49
+ - lib/pseudo_date/version.rb
44
50
  - pseudo_date.gemspec
45
- - test/test_helper.rb
46
- - test/test_parser.rb
47
- - test/test_pseudo_date.rb
48
- has_rdoc: true
51
+ - spec/parser_spec.rb
52
+ - spec/pseudo_date_spec.rb
53
+ - spec/spec_helper.rb
49
54
  homepage: http://github.com/PatrickTulskie/pseudo_date
50
55
  licenses: []
51
-
52
56
  post_install_message:
53
- rdoc_options:
54
- - --line-numbers
55
- - --inline-source
56
- - --title
57
- - Pseudo_date
58
- - --main
59
- - README.mdown
60
- require_paths:
57
+ rdoc_options: []
58
+ require_paths:
61
59
  - lib
62
- required_ruby_version: !ruby/object:Gem::Requirement
60
+ required_ruby_version: !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- hash: 3
68
- segments:
69
- - 0
70
- version: "0"
71
- required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
67
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 11
77
- segments:
78
- - 1
79
- - 2
80
- version: "1.2"
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
81
72
  requirements: []
82
-
83
- rubyforge_project: pseudo_date
84
- rubygems_version: 1.5.3
73
+ rubyforge_project:
74
+ rubygems_version: 1.8.24
85
75
  signing_key:
86
76
  specification_version: 3
87
77
  summary: Date parser and container for partial or incomplete dates.
88
- test_files:
89
- - test/test_helper.rb
90
- - test/test_parser.rb
91
- - test/test_pseudo_date.rb
78
+ test_files:
79
+ - spec/parser_spec.rb
80
+ - spec/pseudo_date_spec.rb
81
+ - spec/spec_helper.rb
data/test/test_parser.rb DELETED
@@ -1,153 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TestParser < Test::Unit::TestCase
4
-
5
- context "Date formats" do
6
-
7
- setup do
8
- @day = '25'
9
- @month = '06'
10
- @year = '1985'
11
- @string_date = 'Jun 25, 1985'
12
- end
13
-
14
- context "date hash" do
15
- should "parse an exact hash" do
16
- pd = PseudoDate.new(:year => @year, :day => @day, :month => @month)
17
- assert_equal @day, pd.day
18
- assert_equal @month, pd.month
19
- assert_equal @year, pd.year
20
- end
21
-
22
- should "parse a hash inexact keys" do
23
- pd = PseudoDate.new('Year' => @year, 'day' => @day, :Month => @month)
24
- assert_equal @day, pd.day
25
- assert_equal @month, pd.month
26
- assert_equal @year, pd.year
27
- end
28
- end
29
-
30
- # 19850625
31
- context "yearmonthday" do
32
- should 'be exact precision' do
33
- assert_equal PseudoDate.new("#{@year}#{@month}#{@day}").precision, 'exact'
34
- end
35
-
36
- should 'match original input' do
37
- pd = PseudoDate.new("#{@year}#{@month}#{@day}")
38
- assert_equal @day, pd.day
39
- assert_equal @month, pd.month
40
- assert_equal @year, pd.year
41
- end
42
- end
43
-
44
- # 1985-25-06
45
- context "year-day-month" do
46
- should 'be exact precision' do
47
- assert_equal PseudoDate.new("#{@year}-#{@day}-#{@month}").precision, 'exact'
48
- end
49
-
50
- should 'match original input' do
51
- pd = PseudoDate.new("#{@year}-#{@day}-#{@month}")
52
- assert_equal @day, pd.day
53
- assert_equal @month, pd.month
54
- assert_equal @year, pd.year
55
- end
56
- end
57
-
58
- # 06-25-1985
59
- context "month-day-year" do
60
- should 'be exact precision' do
61
- assert_equal PseudoDate.new("#{@month}-#{@day}-#{@year}").precision, 'exact'
62
- end
63
-
64
- should 'match original input' do
65
- pd = PseudoDate.new("#{@month}-#{@day}-#{@year}")
66
- assert_equal @day, pd.day
67
- assert_equal @month, pd.month
68
- assert_equal @year, pd.year
69
- end
70
- end
71
-
72
- # 25-06-1985
73
- context "day-month-year" do
74
- should 'be exact precision' do
75
- assert_equal PseudoDate.new("#{@day}-#{@month}-#{@year}").precision, 'exact'
76
- end
77
-
78
- should 'match original input' do
79
- pd = PseudoDate.new("#{@day}-#{@month}-#{@year}")
80
- assert_equal @day, pd.day
81
- assert_equal @month, pd.month
82
- assert_equal @year, pd.year
83
- end
84
- end
85
-
86
- # 06/25/1985
87
- context "month/day/year" do
88
- should 'be exact precision' do
89
- assert_equal PseudoDate.new("#{@month}/#{@day}/#{@year}").precision, 'exact'
90
- end
91
-
92
- should 'match original input' do
93
- pd = PseudoDate.new("#{@month}/#{@day}/#{@year}")
94
- assert_equal @day, pd.day
95
- assert_equal @month, pd.month
96
- assert_equal @year, pd.year
97
- end
98
- end
99
-
100
- # 06/1985
101
- context "month/year" do
102
- should 'be partial precision' do
103
- assert_equal PseudoDate.new("#{@month}/#{@year}").precision, 'year_month'
104
- end
105
-
106
- should 'match original input' do
107
- pd = PseudoDate.new("#{@month}/#{@year}")
108
- assert_equal @month, pd.month
109
- assert_equal @year, pd.year
110
- end
111
- end
112
-
113
- # 85
114
- context "two digit year" do
115
- should 'be year precision' do
116
- assert_equal PseudoDate.new("85").precision, 'year'
117
- end
118
-
119
- should 'match original input' do
120
- pd = PseudoDate.new("85")
121
- assert_equal @year, pd.year
122
- end
123
- end
124
-
125
- # 1985
126
- context "four digit year" do
127
- should 'be year precision' do
128
- assert_equal PseudoDate.new(@year).precision, 'year'
129
- end
130
-
131
- should 'match original input' do
132
- pd = PseudoDate.new(@year)
133
- assert_equal @year, pd.year
134
- end
135
- end
136
-
137
- # Jun 25, 1985
138
- context "string date" do
139
- should 'be exact precision' do
140
- assert_equal PseudoDate.new(@string_date).precision, 'exact'
141
- end
142
-
143
- should 'match original input' do
144
- pd = PseudoDate.new(@string_date)
145
- assert_equal @day, pd.day
146
- assert_equal @month, pd.month
147
- assert_equal @year, pd.year
148
- end
149
- end
150
-
151
- end
152
-
153
- end
@@ -1,83 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TestPseudoDate < Test::Unit::TestCase
4
-
5
- context "PseudoDate" do
6
-
7
- setup do
8
- @day = '25'
9
- @month = '06'
10
- @year = '1985'
11
- @string_date = 'Jun 25, 1985'
12
- end
13
-
14
- context "partial date types" do
15
- should "demonstrate later dates as greater than older dates" do
16
- old_date = PseudoDate.new(:year => @year, :month => @month)
17
- new_date = PseudoDate.new(:year => 1996, :month => @month)
18
- assert old_date < new_date
19
- end
20
- should "respond properly with the spaceship operator" do
21
- old_date = PseudoDate.new(:year => @year, :month => @month)
22
- new_date = PseudoDate.new(:year => 1996, :month => @month)
23
- assert_equal -1, (old_date <=> new_date)
24
- assert_equal 1, (new_date <=> old_date)
25
- assert_equal 0, (new_date <=> new_date)
26
- end
27
- end
28
-
29
- context "complete date types" do
30
- should "demonstrate later dates as greater than older dates" do
31
- old_date = PseudoDate.new(:year => @year, :month => @month, :day => @day)
32
- new_date = PseudoDate.new(:year => 1996, :month => @month, :day => @day)
33
- assert old_date < new_date
34
- end
35
- should "respond properly with the spaceship operator" do
36
- old_date = PseudoDate.new(:year => @year, :month => @month, :day => @day)
37
- new_date = PseudoDate.new(:year => 1996, :month => @month, :day => @day)
38
- assert_equal -1, (old_date <=> new_date)
39
- assert_equal 1, (new_date <=> old_date)
40
- assert_equal 0, (new_date <=> new_date)
41
- end
42
- end
43
-
44
- context "mixed date types" do
45
- should "demonstrate later dates as greater than older dates" do
46
- old_date = PseudoDate.new(:year => @year, :month => @month)
47
- new_date = PseudoDate.new(:year => 1996, :month => @month, :day => @day)
48
- assert old_date < new_date
49
- end
50
- should "demonstrate invalid dates as less than complete dates" do
51
- complete = PseudoDate.new(:year => @year, :month => @month)
52
- invalid = PseudoDate.new("")
53
- assert complete > invalid
54
- end
55
- should "respond properly with the spaceship operator" do
56
- old_date = PseudoDate.new(:year => @year, :month => @month)
57
- new_date = PseudoDate.new(:year => 1996, :month => @month, :day => @day)
58
- assert_equal -1, (old_date <=> new_date)
59
- assert_equal 1, (new_date <=> old_date)
60
- assert_equal 0, (new_date <=> new_date)
61
- end
62
- end
63
-
64
- context "date sorting" do
65
- should "work for mixed date types" do
66
- dates = [{ :year => 2011, :month => 5 }, '1985', nil].map { |d| PseudoDate.new(d) }
67
- sorted = dates.sort
68
- assert_equal '0000', sorted.first.year
69
- assert_equal '2011', sorted.last.year
70
- end
71
- end
72
-
73
- context "converting to a hash" do
74
- should "use double digit strings for day and month" do
75
- date = PseudoDate.new(:day => '1', :month => '2', :year => '1980')
76
- assert_equal '01', date.to_hash[:day]
77
- assert_equal '02', date.to_hash[:month]
78
- end
79
- end
80
-
81
- end
82
-
83
- end