rats 0.4.1 → 0.5.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 +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
|