rats 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +2 -18
- data/.rspec +1 -0
- data/.travis.yml +9 -0
- data/Gemfile +9 -0
- data/LICENSE +1 -1
- data/{README.rdoc → README.md} +59 -64
- data/Rakefile +5 -39
- data/lib/rats.rb +3 -8
- data/lib/rats/base.rb +29 -30
- data/lib/rats/boundaries.rb +7 -7
- data/lib/rats/data.rb +6 -10
- data/lib/rats/data/base.rb +14 -14
- data/lib/rats/data/meridian.rb +8 -8
- data/lib/rats/data/quarter.rb +10 -10
- data/lib/rats/data/range.rb +8 -8
- data/lib/rats/data/section.rb +8 -8
- data/lib/rats/data/township.rb +8 -8
- data/lib/rats/version.rb +3 -0
- data/rats.gemspec +17 -66
- data/spec/data/data_spec.rb +29 -44
- data/spec/data/meridian_spec.rb +15 -23
- data/spec/data/quarter_spec.rb +7 -11
- data/spec/data/range_spec.rb +11 -19
- data/spec/data/section_spec.rb +11 -19
- data/spec/data/township_spec.rb +11 -19
- data/spec/rats_spec.rb +76 -120
- data/spec/spec_helper.rb +3 -8
- metadata +48 -43
- data/.document +0 -5
- data/VERSION +0 -1
- data/spec/spec.opts +0 -1
data/spec/data/meridian_spec.rb
CHANGED
@@ -1,84 +1,76 @@
|
|
1
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
2
|
|
3
3
|
describe Rats::Meridian do
|
4
|
-
|
5
4
|
it "initializes" do
|
6
5
|
data = Rats::Meridian.new
|
7
6
|
data.is_a?(Rats::Meridian).should be_true
|
8
7
|
end
|
9
|
-
|
8
|
+
|
10
9
|
describe "boundaries" do
|
11
|
-
|
12
10
|
it "knows valid data" do
|
13
11
|
data = Rats::Meridian.new(6)
|
14
12
|
data.valid?.should be_true
|
15
13
|
end
|
16
|
-
|
14
|
+
|
17
15
|
it "knows invalid data" do
|
18
16
|
data = Rats::Meridian.new(3)
|
19
17
|
data.valid?.should be_false
|
20
18
|
data.error.should == "not allowed"
|
21
19
|
end
|
22
|
-
|
20
|
+
|
23
21
|
it "raises error with invalid data" do
|
24
22
|
data = Rats::Meridian.new
|
25
23
|
data.raise_errors!
|
26
24
|
lambda { data.value = 3 }.should raise_error(ArgumentError)
|
27
25
|
end
|
28
|
-
|
29
26
|
end
|
30
|
-
|
27
|
+
|
31
28
|
describe "read/write" do
|
32
|
-
|
33
29
|
it "returns a padded value" do
|
34
30
|
data = Rats::Meridian.new('4')
|
35
31
|
data.to_p.should == '4'
|
36
32
|
end
|
37
|
-
|
33
|
+
|
38
34
|
it "returns the integer" do
|
39
35
|
data = Rats::Meridian.new('4')
|
40
36
|
data.v.should == 4
|
41
37
|
end
|
42
|
-
|
38
|
+
|
43
39
|
it "returns a string" do
|
44
40
|
data = Rats::Meridian.new('4')
|
45
41
|
data.to_s.should == 'W4'
|
46
42
|
end
|
47
|
-
|
43
|
+
|
48
44
|
it "writes just the integer" do
|
49
45
|
data = Rats::Meridian.new('W4')
|
50
46
|
data.v.should == 4
|
51
47
|
end
|
52
|
-
|
48
|
+
|
53
49
|
it "writes the fullname" do
|
54
50
|
data = Rats::Meridian.new('W4')
|
55
51
|
data.fullname.should == 'West of the Fourth Meridian'
|
56
52
|
end
|
57
|
-
|
53
|
+
|
58
54
|
describe "transforming" do
|
59
|
-
|
60
55
|
it "accepts integers" do
|
61
56
|
Rats::Meridian.transform(4).should == 4
|
62
57
|
end
|
63
|
-
|
58
|
+
|
64
59
|
it "accepts strings" do
|
65
60
|
Rats::Meridian.transform('4').should == 4
|
66
61
|
end
|
67
|
-
|
62
|
+
|
68
63
|
it "accepts string prepended W" do
|
69
64
|
Rats::Meridian.transform('W4').should == 4
|
70
65
|
end
|
71
|
-
|
66
|
+
|
72
67
|
it "accepts string prepended w" do
|
73
68
|
Rats::Meridian.transform('w4').should == 4
|
74
69
|
end
|
75
|
-
|
70
|
+
|
76
71
|
it "doesn't accept other data" do
|
77
72
|
Rats::Meridian.transform('E4').should be_nil
|
78
73
|
end
|
79
|
-
|
80
74
|
end
|
81
|
-
|
82
75
|
end
|
83
|
-
|
84
|
-
end
|
76
|
+
end
|
data/spec/data/quarter_spec.rb
CHANGED
@@ -1,43 +1,39 @@
|
|
1
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
2
|
|
3
3
|
describe Rats::Quarter do
|
4
|
-
|
5
4
|
it "initializes" do
|
6
5
|
data = Rats::Quarter.new
|
7
6
|
data.is_a?(Rats::Quarter).should be_true
|
8
7
|
end
|
9
|
-
|
8
|
+
|
10
9
|
it "returns the full_name" do
|
11
10
|
data = Rats::Quarter.new('NE')
|
12
11
|
data.fullname.should == "the Northeast Quarter"
|
13
12
|
end
|
14
|
-
|
13
|
+
|
15
14
|
it "detects half" do
|
16
15
|
Rats::Quarter.half?('NE').should be_false
|
17
16
|
Rats::Quarter.half?('N').should be_true
|
18
17
|
Rats::Quarter.half?('North').should be_true
|
19
18
|
end
|
20
|
-
|
19
|
+
|
21
20
|
it "transform input" do
|
22
21
|
Rats::Quarter.transform('ne').should == 'NE'
|
23
22
|
Rats::Quarter.transform('north').should == 'N'
|
24
23
|
Rats::Quarter.transform('n').should == 'N'
|
25
24
|
end
|
26
|
-
|
25
|
+
|
27
26
|
describe "boundaries" do
|
28
|
-
|
29
27
|
it "knows valid data" do
|
30
28
|
data = Rats::Quarter.new('NE')
|
31
29
|
data.valid?.should be_true
|
32
30
|
data.error.should be_nil
|
33
31
|
end
|
34
|
-
|
32
|
+
|
35
33
|
it "knows invalid data" do
|
36
34
|
data = Rats::Quarter.new('bad')
|
37
35
|
data.valid?.should be_false
|
38
36
|
data.error.should == "not allowed"
|
39
37
|
end
|
40
|
-
|
41
38
|
end
|
42
|
-
|
43
|
-
end
|
39
|
+
end
|
data/spec/data/range_spec.rb
CHANGED
@@ -1,66 +1,58 @@
|
|
1
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
2
|
|
3
3
|
describe Rats::Range do
|
4
|
-
|
5
4
|
it "initializes" do
|
6
5
|
data = Rats::Range.new
|
7
6
|
data.is_a?(Rats::Range).should be_true
|
8
7
|
end
|
9
|
-
|
8
|
+
|
10
9
|
describe "boundaries" do
|
11
|
-
|
12
10
|
it "knows valid data" do
|
13
11
|
data = Rats::Range.new(6)
|
14
12
|
data.valid?.should be_true
|
15
13
|
data.error.should be_nil
|
16
14
|
end
|
17
|
-
|
15
|
+
|
18
16
|
it "knows invalid data" do
|
19
17
|
data = Rats::Range.new(31)
|
20
18
|
data.valid?.should be_false
|
21
19
|
data.error.should == "not allowed"
|
22
20
|
end
|
23
|
-
|
24
21
|
end
|
25
|
-
|
22
|
+
|
26
23
|
describe "read/write" do
|
27
|
-
|
28
24
|
it "returns a padded value" do
|
29
25
|
data = Rats::Range.new('4')
|
30
26
|
data.to_p.should == '04'
|
31
27
|
end
|
32
|
-
|
28
|
+
|
33
29
|
it "returns the integer" do
|
34
30
|
data = Rats::Range.new('4')
|
35
31
|
data.v.should == 4
|
36
32
|
end
|
37
|
-
|
33
|
+
|
38
34
|
it "returns a string" do
|
39
35
|
data = Rats::Range.new('4')
|
40
36
|
data.to_s.should == '4'
|
41
37
|
end
|
42
|
-
|
38
|
+
|
43
39
|
it "writes the fullname" do
|
44
40
|
data = Rats::Range.new('4')
|
45
41
|
data.fullname.should == 'Range 4'
|
46
42
|
end
|
47
|
-
|
43
|
+
|
48
44
|
describe "transforming" do
|
49
|
-
|
50
45
|
it "accepts integers" do
|
51
46
|
Rats::Range.transform(4).should == 4
|
52
47
|
end
|
53
|
-
|
48
|
+
|
54
49
|
it "accepts strings" do
|
55
50
|
Rats::Range.transform('4').should == 4
|
56
51
|
end
|
57
|
-
|
52
|
+
|
58
53
|
it "doesn't accept other data" do
|
59
54
|
Rats::Range.transform('E4').should be_nil
|
60
55
|
end
|
61
|
-
|
62
56
|
end
|
63
|
-
|
64
57
|
end
|
65
|
-
|
66
|
-
end
|
58
|
+
end
|
data/spec/data/section_spec.rb
CHANGED
@@ -1,66 +1,58 @@
|
|
1
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
2
|
|
3
3
|
describe Rats::Section do
|
4
|
-
|
5
4
|
it "initializes" do
|
6
5
|
data = Rats::Section.new
|
7
6
|
data.is_a?(Rats::Section).should be_true
|
8
7
|
end
|
9
|
-
|
8
|
+
|
10
9
|
describe "boundaries" do
|
11
|
-
|
12
10
|
it "knows valid data" do
|
13
11
|
data = Rats::Section.new(6)
|
14
12
|
data.valid?.should be_true
|
15
13
|
data.error.should be_nil
|
16
14
|
end
|
17
|
-
|
15
|
+
|
18
16
|
it "knows invalid data" do
|
19
17
|
data = Rats::Section.new(37)
|
20
18
|
data.valid?.should be_false
|
21
19
|
data.error.should == "not allowed"
|
22
20
|
end
|
23
|
-
|
24
21
|
end
|
25
|
-
|
22
|
+
|
26
23
|
describe "read/write" do
|
27
|
-
|
28
24
|
it "returns a padded value" do
|
29
25
|
data = Rats::Section.new('4')
|
30
26
|
data.to_p.should == '04'
|
31
27
|
end
|
32
|
-
|
28
|
+
|
33
29
|
it "returns the integer" do
|
34
30
|
data = Rats::Section.new('4')
|
35
31
|
data.v.should == 4
|
36
32
|
end
|
37
|
-
|
33
|
+
|
38
34
|
it "returns a string" do
|
39
35
|
data = Rats::Section.new('4')
|
40
36
|
data.to_s.should == '4'
|
41
37
|
end
|
42
|
-
|
38
|
+
|
43
39
|
it "writes the fullname" do
|
44
40
|
data = Rats::Section.new('4')
|
45
41
|
data.fullname.should == 'Section 4'
|
46
42
|
end
|
47
|
-
|
43
|
+
|
48
44
|
describe "transforming" do
|
49
|
-
|
50
45
|
it "accepts integers" do
|
51
46
|
Rats::Section.transform(4).should == 4
|
52
47
|
end
|
53
|
-
|
48
|
+
|
54
49
|
it "accepts strings" do
|
55
50
|
Rats::Section.transform('4').should == 4
|
56
51
|
end
|
57
|
-
|
52
|
+
|
58
53
|
it "doesn't accept other data" do
|
59
54
|
Rats::Section.transform('E4').should be_nil
|
60
55
|
end
|
61
|
-
|
62
56
|
end
|
63
|
-
|
64
57
|
end
|
65
|
-
|
66
|
-
end
|
58
|
+
end
|
data/spec/data/township_spec.rb
CHANGED
@@ -1,66 +1,58 @@
|
|
1
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
2
|
|
3
3
|
describe Rats::Township do
|
4
|
-
|
5
4
|
it "initializes" do
|
6
5
|
data = Rats::Township.new
|
7
6
|
data.is_a?(Rats::Township).should be_true
|
8
7
|
end
|
9
|
-
|
8
|
+
|
10
9
|
describe "boundaries" do
|
11
|
-
|
12
10
|
it "knows valid data" do
|
13
11
|
data = Rats::Township.new(6)
|
14
12
|
data.valid?.should be_true
|
15
13
|
data.error.should be_nil
|
16
14
|
end
|
17
|
-
|
15
|
+
|
18
16
|
it "knows invalid data" do
|
19
17
|
data = Rats::Township.new(130)
|
20
18
|
data.valid?.should be_false
|
21
19
|
data.error.should == "not allowed"
|
22
20
|
end
|
23
|
-
|
24
21
|
end
|
25
|
-
|
22
|
+
|
26
23
|
describe "read/write" do
|
27
|
-
|
28
24
|
it "returns a padded value" do
|
29
25
|
data = Rats::Township.new('4')
|
30
26
|
data.to_p.should == '004'
|
31
27
|
end
|
32
|
-
|
28
|
+
|
33
29
|
it "returns the integer" do
|
34
30
|
data = Rats::Township.new('4')
|
35
31
|
data.v.should == 4
|
36
32
|
end
|
37
|
-
|
33
|
+
|
38
34
|
it "returns a string" do
|
39
35
|
data = Rats::Township.new('4')
|
40
36
|
data.to_s.should == '4'
|
41
37
|
end
|
42
|
-
|
38
|
+
|
43
39
|
it "writes the fullname" do
|
44
40
|
data = Rats::Township.new('4')
|
45
41
|
data.fullname.should == 'Township 4'
|
46
42
|
end
|
47
|
-
|
43
|
+
|
48
44
|
describe "transforming" do
|
49
|
-
|
50
45
|
it "accepts integers" do
|
51
46
|
Rats::Township.transform(4).should == 4
|
52
47
|
end
|
53
|
-
|
48
|
+
|
54
49
|
it "accepts strings" do
|
55
50
|
Rats::Township.transform('4').should == 4
|
56
51
|
end
|
57
|
-
|
52
|
+
|
58
53
|
it "doesn't accept other data" do
|
59
54
|
Rats::Township.transform('E4').should be_nil
|
60
55
|
end
|
61
|
-
|
62
56
|
end
|
63
|
-
|
64
57
|
end
|
65
|
-
|
66
|
-
end
|
58
|
+
end
|
data/spec/rats_spec.rb
CHANGED
@@ -1,51 +1,43 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
3
|
+
describe Rats do
|
5
4
|
it "initializes the class" do
|
6
5
|
land = Rats.new
|
7
6
|
land.is_a?(Rats::Base).should be_true
|
8
7
|
end
|
9
|
-
|
8
|
+
|
10
9
|
describe "attributes" do
|
11
|
-
|
12
|
-
|
13
|
-
@land = Rats.new
|
14
|
-
end
|
15
|
-
|
10
|
+
let(:land) { Rats.new }
|
11
|
+
|
16
12
|
describe "writing and reading" do
|
17
|
-
|
18
13
|
it "writes quarter" do
|
19
|
-
|
20
|
-
|
14
|
+
land.quarter = "NE"
|
15
|
+
land.quarter.should == "NE"
|
21
16
|
end
|
22
|
-
|
17
|
+
|
23
18
|
it "writes section" do
|
24
|
-
|
25
|
-
|
19
|
+
land.section = 1
|
20
|
+
land.section.should == 1
|
26
21
|
end
|
27
|
-
|
22
|
+
|
28
23
|
it "writes township" do
|
29
|
-
|
30
|
-
|
24
|
+
land.township = 1
|
25
|
+
land.township.should == 1
|
31
26
|
end
|
32
|
-
|
27
|
+
|
33
28
|
it "writes range" do
|
34
|
-
|
35
|
-
|
29
|
+
land.range = 1
|
30
|
+
land.range.should == 1
|
36
31
|
end
|
37
|
-
|
32
|
+
|
38
33
|
it "writes meridian" do
|
39
|
-
|
40
|
-
|
34
|
+
land.meridian = 4
|
35
|
+
land.meridian.should == 4
|
41
36
|
end
|
42
|
-
|
43
37
|
end
|
44
|
-
|
45
38
|
end
|
46
|
-
|
39
|
+
|
47
40
|
describe "parsing locations" do
|
48
|
-
|
49
41
|
it "understands NE 1-2-3 W4" do
|
50
42
|
land = Rats.new("NE 1-2-3 W4")
|
51
43
|
land.quarter.should == "NE"
|
@@ -55,7 +47,7 @@ describe "Rats" do
|
|
55
47
|
land.meridian.should == 4
|
56
48
|
land.scope.should == :quarter
|
57
49
|
end
|
58
|
-
|
50
|
+
|
59
51
|
it "understands NE-1-2-3-W4" do
|
60
52
|
land = Rats.new("NE-1-2-3-W4")
|
61
53
|
land.quarter.should == "NE"
|
@@ -65,7 +57,7 @@ describe "Rats" do
|
|
65
57
|
land.meridian.should == 4
|
66
58
|
land.scope.should == :quarter
|
67
59
|
end
|
68
|
-
|
60
|
+
|
69
61
|
it "understands NE-1-2-3-4" do
|
70
62
|
land = Rats.new("NE-1-2-3-4")
|
71
63
|
land.quarter.should == "NE"
|
@@ -75,7 +67,7 @@ describe "Rats" do
|
|
75
67
|
land.meridian.should == 4
|
76
68
|
land.scope.should == :quarter
|
77
69
|
end
|
78
|
-
|
70
|
+
|
79
71
|
it "understands NE 1-1-1-4" do
|
80
72
|
land = Rats.new("NE 1-2-3-4")
|
81
73
|
land.quarter.should == "NE"
|
@@ -85,7 +77,7 @@ describe "Rats" do
|
|
85
77
|
land.meridian.should == 4
|
86
78
|
land.scope.should == :quarter
|
87
79
|
end
|
88
|
-
|
80
|
+
|
89
81
|
it "understands NE 1 2 3 4" do
|
90
82
|
land = Rats.new("NE 1 2 3 4")
|
91
83
|
land.quarter.should == "NE"
|
@@ -95,7 +87,7 @@ describe "Rats" do
|
|
95
87
|
land.meridian.should == 4
|
96
88
|
land.scope.should == :quarter
|
97
89
|
end
|
98
|
-
|
90
|
+
|
99
91
|
it "understands N 1-2-3 W4" do
|
100
92
|
land = Rats.new("N 1-2-3 W4")
|
101
93
|
land.quarter.should == "N"
|
@@ -105,7 +97,7 @@ describe "Rats" do
|
|
105
97
|
land.meridian.should == 4
|
106
98
|
land.scope.should == :half
|
107
99
|
end
|
108
|
-
|
100
|
+
|
109
101
|
it "understands North 1-2-3 W4" do
|
110
102
|
land = Rats.new("North 1-2-3 W4")
|
111
103
|
land.quarter.should == "N"
|
@@ -115,7 +107,7 @@ describe "Rats" do
|
|
115
107
|
land.meridian.should == 4
|
116
108
|
land.scope.should == :half
|
117
109
|
end
|
118
|
-
|
110
|
+
|
119
111
|
it "understands 40300201NE" do
|
120
112
|
land = Rats.new("40300201NE")
|
121
113
|
land.quarter.should == "NE"
|
@@ -125,7 +117,7 @@ describe "Rats" do
|
|
125
117
|
land.meridian.should == 4
|
126
118
|
land.scope.should == :quarter
|
127
119
|
end
|
128
|
-
|
120
|
+
|
129
121
|
it "understands 40300201" do
|
130
122
|
land = Rats.new("40300201")
|
131
123
|
land.quarter.should be_nil
|
@@ -135,7 +127,7 @@ describe "Rats" do
|
|
135
127
|
land.meridian.should == 4
|
136
128
|
land.scope.should == :section
|
137
129
|
end
|
138
|
-
|
130
|
+
|
139
131
|
it "understands 1-2-3 W4" do
|
140
132
|
land = Rats.new("1-2-3 W4")
|
141
133
|
land.quarter.should be_nil
|
@@ -145,7 +137,7 @@ describe "Rats" do
|
|
145
137
|
land.meridian.should == 4
|
146
138
|
land.scope.should == :section
|
147
139
|
end
|
148
|
-
|
140
|
+
|
149
141
|
it "understands 2-3 W4" do
|
150
142
|
land = Rats.new("2-3 W4")
|
151
143
|
land.quarter.should be_nil
|
@@ -155,7 +147,7 @@ describe "Rats" do
|
|
155
147
|
land.meridian.should == 4
|
156
148
|
land.scope.should == :township
|
157
149
|
end
|
158
|
-
|
150
|
+
|
159
151
|
it "understands 3 W4" do
|
160
152
|
land = Rats.new("3 W4")
|
161
153
|
land.quarter.should be_nil
|
@@ -165,7 +157,7 @@ describe "Rats" do
|
|
165
157
|
land.meridian.should == 4
|
166
158
|
land.scope.should == :unknown
|
167
159
|
end
|
168
|
-
|
160
|
+
|
169
161
|
it "understands W4" do
|
170
162
|
land = Rats.new("W4")
|
171
163
|
land.quarter.should be_nil
|
@@ -175,7 +167,7 @@ describe "Rats" do
|
|
175
167
|
land.meridian.should == 4
|
176
168
|
land.scope.should == :unknown
|
177
169
|
end
|
178
|
-
|
170
|
+
|
179
171
|
it "understands individual values" do
|
180
172
|
land = Rats.new(4, 3, 2, 1, "NE")
|
181
173
|
land.quarter.should == "NE"
|
@@ -185,7 +177,7 @@ describe "Rats" do
|
|
185
177
|
land.meridian.should == 4
|
186
178
|
land.scope.should == :quarter
|
187
179
|
end
|
188
|
-
|
180
|
+
|
189
181
|
it "understands SE 1-119-24 W4" do
|
190
182
|
land = Rats.new("SE 1-119-24 W4")
|
191
183
|
land.quarter.should == "SE"
|
@@ -195,9 +187,9 @@ describe "Rats" do
|
|
195
187
|
land.meridian.should == 4
|
196
188
|
land.scope.should == :quarter
|
197
189
|
end
|
198
|
-
|
190
|
+
|
199
191
|
describe "alternate method" do
|
200
|
-
|
192
|
+
|
201
193
|
it "using location and a string" do
|
202
194
|
land = Rats.new
|
203
195
|
land.location = "NE 1-2-3 W4"
|
@@ -217,46 +209,36 @@ describe "Rats" do
|
|
217
209
|
land.range.should == 3
|
218
210
|
land.meridian.should == 4
|
219
211
|
end
|
220
|
-
|
221
212
|
end
|
222
|
-
|
223
213
|
end
|
224
|
-
|
214
|
+
|
225
215
|
describe "validation (does it exist)" do
|
226
|
-
|
227
|
-
# each individual field has already been tested to know what is a valid field
|
228
|
-
# here, I am testing the location as a whole, as a location can be valid
|
229
|
-
# in respect to its individual components, but not as a whole
|
230
|
-
|
231
216
|
it "knows a valid and existing location" do
|
232
217
|
land = Rats.new("SE 1-2-3 W4")
|
233
218
|
land.location.should == "SE 1-2-3 W4"
|
234
219
|
land.exists?.should be_true
|
235
220
|
end
|
236
|
-
|
221
|
+
|
237
222
|
it "knows an non-existing section (in a valid township)" do
|
238
223
|
land = Rats.new("SE 2-119-24 W4")
|
239
224
|
land.exists?.should be_false
|
240
|
-
|
241
|
-
# but it neightbour does
|
225
|
+
|
242
226
|
land = Rats.new("SE 1-119-24 W4")
|
243
227
|
land.exists?.should be_true
|
244
228
|
end
|
245
|
-
|
229
|
+
|
246
230
|
it "knows an non-existing township (in a valid range)" do
|
247
231
|
land = Rats.new("SE 1-19-30 W4")
|
248
232
|
land.exists?.should be_false
|
249
233
|
end
|
250
|
-
|
234
|
+
|
251
235
|
it "knows an non-existing range (in a valid township)" do
|
252
236
|
land = Rats.new("SE 1-20-30 W4")
|
253
237
|
land.exists?.should be_false
|
254
238
|
end
|
255
|
-
|
256
239
|
end
|
257
|
-
|
240
|
+
|
258
241
|
describe "boundaries" do
|
259
|
-
|
260
242
|
it "knows when a township is North of Alberta" do
|
261
243
|
land = Rats.new("SE 1-127-1 W4")
|
262
244
|
land.valid?.should be_false
|
@@ -264,7 +246,7 @@ describe "Rats" do
|
|
264
246
|
land.errors.has_key?(:township).should be_true
|
265
247
|
land.errors[:township].first.should == 'not allowed'
|
266
248
|
end
|
267
|
-
|
249
|
+
|
268
250
|
it "knows when a township is East of Alberta" do
|
269
251
|
land = Rats.new("SE 1-1-1 W3")
|
270
252
|
land.valid?.should be_false
|
@@ -272,7 +254,7 @@ describe "Rats" do
|
|
272
254
|
land.errors.has_key?(:meridian).should be_true
|
273
255
|
land.errors[:meridian].first.should == 'not allowed'
|
274
256
|
end
|
275
|
-
|
257
|
+
|
276
258
|
it "knows when a township is West of Alberta" do
|
277
259
|
land = Rats.new("SE 1-1-1 W7")
|
278
260
|
land.valid?.should be_false
|
@@ -280,7 +262,7 @@ describe "Rats" do
|
|
280
262
|
land.errors.has_key?(:meridian).should be_true
|
281
263
|
land.errors[:meridian].first.should == 'not allowed'
|
282
264
|
end
|
283
|
-
|
265
|
+
|
284
266
|
it "knows when a township has been squeezed out" do
|
285
267
|
land = Rats.new("SE 1-126-25 W4")
|
286
268
|
land.valid?.should be_false
|
@@ -288,7 +270,7 @@ describe "Rats" do
|
|
288
270
|
land.errors.has_key?(:land).should be_true
|
289
271
|
land.errors[:land].first.should == 'does not exist'
|
290
272
|
end
|
291
|
-
|
273
|
+
|
292
274
|
it "knows when a section has been squeezed out" do
|
293
275
|
land = Rats.new("SE 6-119-24 W4")
|
294
276
|
land.valid?.should be_false
|
@@ -296,40 +278,32 @@ describe "Rats" do
|
|
296
278
|
land.errors.has_key?(:land).should be_true
|
297
279
|
land.errors[:land].first.should == 'does not exist'
|
298
280
|
end
|
299
|
-
|
300
|
-
# it "knows when a quarter has been squeezed out" do
|
301
|
-
# end
|
302
|
-
|
303
281
|
end
|
304
|
-
|
282
|
+
|
305
283
|
describe "formatting" do
|
306
|
-
|
307
284
|
describe ":default" do
|
308
|
-
|
309
285
|
it "returns NE 1-2-3 W4" do
|
310
286
|
land = Rats.new("NE 1-2-3 W4")
|
311
287
|
land.location.should == "NE 1-2-3 W4"
|
312
288
|
end
|
313
|
-
|
289
|
+
|
314
290
|
it "returns 1-2-3 W4" do
|
315
291
|
land = Rats.new("1-2-3 W4")
|
316
292
|
land.location.should == "1-2-3 W4"
|
317
293
|
end
|
318
|
-
|
294
|
+
|
319
295
|
it "returns 2-3 W4" do
|
320
296
|
land = Rats.new("2-3 W4")
|
321
297
|
land.location.should == "2-3 W4"
|
322
298
|
end
|
323
|
-
|
324
299
|
end
|
325
|
-
|
300
|
+
|
326
301
|
describe ":short" do
|
327
|
-
|
328
302
|
it "returns NE01002034" do
|
329
303
|
land = Rats.new("NE 1-2-3 W4")
|
330
304
|
land.location(:short).should == "40300201NE"
|
331
305
|
end
|
332
|
-
|
306
|
+
|
333
307
|
it "returns 01001014" do
|
334
308
|
land = Rats.new("1-2-3 W4")
|
335
309
|
land.location(:short).should == "40300201"
|
@@ -339,122 +313,107 @@ describe "Rats" do
|
|
339
313
|
land = Rats.new("2-3 W4")
|
340
314
|
land.location(:short).should == "403002"
|
341
315
|
end
|
342
|
-
|
343
316
|
end
|
344
|
-
|
317
|
+
|
345
318
|
describe ":padded" do
|
346
|
-
|
347
319
|
it "returns NE 01-002-03 W4" do
|
348
320
|
land = Rats.new("NE 1-2-3 W4")
|
349
321
|
land.location(:padded).should == "NE 01-002-03 W4"
|
350
322
|
end
|
351
|
-
|
323
|
+
|
352
324
|
it "returns 01-002-03 W4" do
|
353
325
|
land = Rats.new("1-2-3 W4")
|
354
326
|
land.location(:padded).should == "01-002-03 W4"
|
355
327
|
end
|
356
|
-
|
328
|
+
|
357
329
|
it "returns 002-03 W4" do
|
358
330
|
land = Rats.new("2-3 W4")
|
359
331
|
land.location(:padded).should == "002-03 W4"
|
360
332
|
end
|
361
|
-
|
362
333
|
end
|
363
|
-
|
334
|
+
|
364
335
|
describe ":long" do
|
365
|
-
|
366
336
|
it "returns the long version with Quarter" do
|
367
337
|
land = Rats.new("NE 1-2-3 W4")
|
368
338
|
land.location(:long).should == "the Northeast Quarter of Section 1, Township 2, Range 3, West of the Fourth Meridian"
|
369
339
|
end
|
370
|
-
|
340
|
+
|
371
341
|
it "returns the long version with Half" do
|
372
342
|
land = Rats.new("N 1-2-3 W4")
|
373
343
|
land.location(:long).should == "the North Half of Section 1, Township 2, Range 3, West of the Fourth Meridian"
|
374
344
|
end
|
375
|
-
|
345
|
+
|
376
346
|
it "returns the long version with Section" do
|
377
347
|
land = Rats.new("1-2-3 W4")
|
378
|
-
#puts land.inspect
|
379
348
|
land.location(:long).should == "Section 1, Township 2, Range 3, West of the Fourth Meridian"
|
380
349
|
end
|
381
|
-
|
350
|
+
|
382
351
|
it "returns the long version with Township" do
|
383
352
|
land = Rats.new("2-3 W4")
|
384
|
-
#puts land.inspect
|
385
353
|
land.location(:long).should == "Township 2, Range 3, West of the Fourth Meridian"
|
386
354
|
end
|
387
|
-
|
388
355
|
end
|
389
|
-
|
390
356
|
end
|
391
|
-
|
357
|
+
|
392
358
|
describe "scope" do
|
393
|
-
|
394
359
|
it "knows quarter" do
|
395
360
|
land = Rats.new("NE 1-2-3 W4")
|
396
361
|
land.scope.should == :quarter
|
397
362
|
end
|
398
|
-
|
363
|
+
|
399
364
|
it "knows half" do
|
400
365
|
land = Rats.new("E 1-2-3 W4")
|
401
366
|
land.scope.should == :half
|
402
367
|
end
|
403
|
-
|
368
|
+
|
404
369
|
it "knows half" do
|
405
370
|
land = Rats.new("East 1-2-3 W4")
|
406
371
|
land.scope.should == :half
|
407
372
|
end
|
408
|
-
|
373
|
+
|
409
374
|
it "knows section" do
|
410
375
|
land = Rats.new("1-2-3 W4")
|
411
376
|
land.scope.should == :section
|
412
377
|
end
|
413
|
-
|
378
|
+
|
414
379
|
it "knows township" do
|
415
380
|
land = Rats.new("2-3 W4")
|
416
381
|
land.scope.should == :township
|
417
382
|
end
|
418
|
-
|
383
|
+
|
419
384
|
it "anything else is unknown" do
|
420
385
|
land = Rats.new("3 W4")
|
421
386
|
land.scope.should == :unknown
|
422
387
|
end
|
423
|
-
|
424
388
|
end
|
425
|
-
|
389
|
+
|
426
390
|
describe "methods" do
|
427
|
-
|
428
391
|
describe "validity" do
|
429
|
-
|
430
392
|
it "knows when it is valid" do
|
431
393
|
land = Rats.new("NE 1-2-3 W4")
|
432
394
|
land.valid?.should be_true
|
433
395
|
end
|
434
|
-
|
396
|
+
|
435
397
|
it "knows when it isn't valid"do
|
436
398
|
land = Rats.new("3 W4")
|
437
|
-
#puts land.inspect
|
438
399
|
land.valid?.should be_false
|
439
400
|
end
|
440
|
-
|
441
401
|
end
|
442
|
-
|
402
|
+
|
443
403
|
it "responds_to :to_s" do
|
444
404
|
land = Rats.new("NE 1-2-3 W4")
|
445
405
|
land.to_s.should == land.location
|
446
406
|
end
|
447
|
-
|
407
|
+
|
448
408
|
it "responds_to :to_a" do
|
449
409
|
land = Rats.new("NE 1-2-3 W4")
|
450
410
|
land.to_a.should == ['NE', 1, 2, 3, 4]
|
451
|
-
|
411
|
+
|
452
412
|
land = Rats.new("1-2-3 W4")
|
453
413
|
land.to_a.should == [1, 2, 3, 4]
|
454
414
|
end
|
455
|
-
|
415
|
+
|
456
416
|
describe "expansion" do
|
457
|
-
|
458
417
|
it "is divisible" do
|
459
418
|
Rats.new("N 1-2-3 W4").is_divisible?.should be_true
|
460
419
|
Rats.new("NSE 1-2-3 W4").is_divisible?.should be_true
|
@@ -462,20 +421,20 @@ describe "Rats" do
|
|
462
421
|
Rats.new("1-2-3 W4").is_divisible?.should be_true
|
463
422
|
Rats.new("2-3 W4").is_divisible?.should be_true
|
464
423
|
end
|
465
|
-
|
424
|
+
|
466
425
|
it "is not divisible" do
|
467
426
|
Rats.new("NE 1-2-3 W4").is_divisible?.should be_false
|
468
427
|
Rats.new("3 W4").is_divisible?.should be_false
|
469
428
|
Rats.new("W4").is_divisible?.should be_false
|
470
429
|
end
|
471
|
-
|
430
|
+
|
472
431
|
describe "half -> 2 quarters" do
|
473
432
|
quarters = Rats.new("N 1-2-3 W4").divide
|
474
433
|
quarters.size.should == 2
|
475
434
|
quarters.first.quarter.should == 'NE'
|
476
435
|
quarters.last.quarter.should == 'NW'
|
477
436
|
end
|
478
|
-
|
437
|
+
|
479
438
|
describe "3/4 -> 3 quarters" do
|
480
439
|
quarters = Rats.new("NSE 1-2-3 W4").divide
|
481
440
|
quarters.size.should == 3
|
@@ -483,7 +442,7 @@ describe "Rats" do
|
|
483
442
|
quarters[1].quarter.should == 'NW'
|
484
443
|
quarters[2].quarter.should == 'SE'
|
485
444
|
end
|
486
|
-
|
445
|
+
|
487
446
|
describe "section -> 4 quarters" do
|
488
447
|
quarters = Rats.new("1-2-3 W4").divide
|
489
448
|
quarters.size.should == 4
|
@@ -492,7 +451,7 @@ describe "Rats" do
|
|
492
451
|
quarters[2].quarter.should == 'SE'
|
493
452
|
quarters[3].quarter.should == 'SW'
|
494
453
|
end
|
495
|
-
|
454
|
+
|
496
455
|
describe "ALL -> 4 quarters" do
|
497
456
|
quarters = Rats.new("ALL 1-2-3 W4").divide
|
498
457
|
quarters.size.should == 4
|
@@ -501,14 +460,11 @@ describe "Rats" do
|
|
501
460
|
quarters[2].quarter.should == 'SE'
|
502
461
|
quarters[3].quarter.should == 'SW'
|
503
462
|
end
|
504
|
-
|
463
|
+
|
505
464
|
describe "township -> 144 quarters" do
|
506
465
|
quarters = Rats.new("2-3 W4").divide
|
507
466
|
quarters.size.should == 144
|
508
467
|
end
|
509
|
-
|
510
468
|
end
|
511
|
-
|
512
469
|
end
|
513
|
-
|
514
470
|
end
|