linguistics 1.0.9 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.gemtest +0 -0
  3. data/ChangeLog +849 -342
  4. data/History.rdoc +11 -0
  5. data/LICENSE +9 -9
  6. data/Manifest.txt +44 -0
  7. data/README.rdoc +226 -0
  8. data/Rakefile +32 -349
  9. data/examples/endocs.rb +272 -0
  10. data/examples/generalize_sentence.rb +2 -1
  11. data/examples/klingon.rb +22 -0
  12. data/lib/linguistics.rb +130 -292
  13. data/lib/linguistics/en.rb +337 -1628
  14. data/lib/linguistics/en/articles.rb +138 -0
  15. data/lib/linguistics/en/conjugation.rb +2245 -0
  16. data/lib/linguistics/en/conjunctions.rb +202 -0
  17. data/lib/linguistics/en/{infinitive.rb → infinitives.rb} +41 -55
  18. data/lib/linguistics/en/linkparser.rb +41 -49
  19. data/lib/linguistics/en/numbers.rb +483 -0
  20. data/lib/linguistics/en/participles.rb +33 -0
  21. data/lib/linguistics/en/pluralization.rb +810 -0
  22. data/lib/linguistics/en/stemmer.rb +75 -0
  23. data/lib/linguistics/en/titlecase.rb +121 -0
  24. data/lib/linguistics/en/wordnet.rb +63 -97
  25. data/lib/linguistics/inflector.rb +89 -0
  26. data/lib/linguistics/iso639.rb +534 -448
  27. data/lib/linguistics/languagebehavior.rb +36 -0
  28. data/lib/linguistics/monkeypatches.rb +42 -0
  29. data/spec/lib/constants.rb +15 -0
  30. data/spec/lib/helpers.rb +38 -0
  31. data/spec/linguistics/en/articles_spec.rb +797 -0
  32. data/spec/linguistics/en/conjugation_spec.rb +2083 -0
  33. data/spec/linguistics/en/conjunctions_spec.rb +154 -0
  34. data/spec/linguistics/en/infinitives_spec.rb +518 -0
  35. data/spec/linguistics/en/linkparser_spec.rb +66 -0
  36. data/spec/linguistics/en/numbers_spec.rb +1295 -0
  37. data/spec/linguistics/en/participles_spec.rb +55 -0
  38. data/spec/linguistics/en/pluralization_spec.rb +4636 -0
  39. data/spec/linguistics/en/stemmer_spec.rb +72 -0
  40. data/spec/linguistics/en/titlecase_spec.rb +841 -0
  41. data/spec/linguistics/en/wordnet_spec.rb +85 -0
  42. data/spec/linguistics/en_spec.rb +45 -167
  43. data/spec/linguistics/inflector_spec.rb +40 -0
  44. data/spec/linguistics/iso639_spec.rb +49 -53
  45. data/spec/linguistics/monkeypatches_spec.rb +40 -0
  46. data/spec/linguistics_spec.rb +46 -76
  47. metadata +241 -113
  48. metadata.gz.sig +0 -0
  49. data/README +0 -166
  50. data/README.english +0 -245
  51. data/rake/191_compat.rb +0 -26
  52. data/rake/dependencies.rb +0 -76
  53. data/rake/documentation.rb +0 -123
  54. data/rake/helpers.rb +0 -502
  55. data/rake/hg.rb +0 -318
  56. data/rake/manual.rb +0 -787
  57. data/rake/packaging.rb +0 -129
  58. data/rake/publishing.rb +0 -341
  59. data/rake/style.rb +0 -62
  60. data/rake/svn.rb +0 -668
  61. data/rake/testing.rb +0 -152
  62. data/rake/verifytask.rb +0 -64
  63. data/tests/en/infinitive.tests.rb +0 -207
  64. data/tests/en/inflect.tests.rb +0 -1389
  65. data/tests/en/lafcadio.tests.rb +0 -77
  66. data/tests/en/linkparser.tests.rb +0 -42
  67. data/tests/en/lprintf.tests.rb +0 -77
  68. data/tests/en/titlecase.tests.rb +0 -73
  69. data/tests/en/wordnet.tests.rb +0 -95
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/env spec -cfs
2
+
3
+ BEGIN {
4
+ require 'pathname'
5
+ basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
6
+
7
+ libdir = basedir + "lib"
8
+
9
+ $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
10
+ $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
11
+ }
12
+
13
+ require 'rspec'
14
+ require 'spec/lib/helpers'
15
+
16
+ require 'linguistics'
17
+ require 'linguistics/en'
18
+ require 'linguistics/en/conjunctions'
19
+
20
+
21
+ describe Linguistics::EN::Conjunctions do
22
+
23
+ before( :all ) do
24
+ Linguistics.use( :en )
25
+ setup_logging( :fatal )
26
+ end
27
+
28
+
29
+ TEST_ITEMS = %w[cow chicken dog goat dog dog duck duck goose goose goose dog goat]
30
+
31
+ it "don't use a penultimate separator if it's turned off" do
32
+ TEST_ITEMS.en.conjunction( :penultimate => false ).should ==
33
+ "four dogs, three geese, two goats, two ducks, a cow and a chicken"
34
+ end
35
+
36
+ it "honors the penultimate setting even if there are only three items (bugfix)" do
37
+ %w[duck cow dog].en.conjunction( :penultimate => false ).should ==
38
+ "a duck, a cow and a dog"
39
+ end
40
+
41
+ it "uses the supplied block for transformation before building the conjunction" do
42
+ TEST_ITEMS.en.conjunction {|item| "'%s' animal" % [item[0]] }.should ==
43
+ "six 'd' animals, five 'g' animals, and two 'c' animals"
44
+ end
45
+
46
+ it "uses the alternative separator if one or more phrases include the primary one" do
47
+ scene_items = [
48
+ "desk with stamps, paper, and envelopes on it",
49
+ "basket containing milk, eggs, and broccoli",
50
+ "chair", "chair", "chair",
51
+ "wooden chest",
52
+ "hat rack",
53
+ ]
54
+
55
+ scene_items.en.conjunction.should ==
56
+ "three chairs; a desk with stamps, paper, and envelopes on it; " +
57
+ "a basket containing milk, eggs, and broccoli; " +
58
+ "a wooden chest; and a hat rack"
59
+ end
60
+
61
+
62
+ describe "with an Array of a single element" do
63
+
64
+ before( :each ) do
65
+ @array = ['cat']
66
+ end
67
+
68
+ it "results in a phrase with indefinite article" do
69
+ @array.en.conjunction.should == "a cat"
70
+ end
71
+
72
+ end
73
+
74
+
75
+ describe "with an Array of two different words" do
76
+
77
+ before( :each ) do
78
+ @array = ['cat', 'dog']
79
+ end
80
+
81
+ it "results in a phrase joined with 'and' with default options" do
82
+ @array.en.conjunction.should == "a cat and a dog"
83
+ end
84
+
85
+ it "results in a phrase joined with 'plus' if 'plus' is set as the conjunctive" do
86
+ @array.en.conjunction(:conjunctive => 'plus').should == "a cat plus a dog"
87
+ end
88
+
89
+ it "results in a phrase joined with a space if an empty string is set as the conjunctive" do
90
+ @array.en.conjunction(:conjunctive => '').should == "a cat a dog"
91
+ end
92
+
93
+ end
94
+
95
+
96
+ describe "with an Array of two words that differ only in case" do
97
+
98
+ before( :each ) do
99
+ @array = ['cat', 'Cat']
100
+ end
101
+
102
+ it "combines them into their downcased equivalents with default options" do
103
+ @array.en.conjunction.should == "two cats"
104
+ end
105
+
106
+ it "lists them separately if :combine is set to false" do
107
+ @array.en.conjunction(:combine => false).should == "a cat and a Cat"
108
+ end
109
+
110
+ it "doesn't combine them if :casefold is turned off" do
111
+ @array.en.conjunction(:casefold => false).should == "a cat and a Cat"
112
+ end
113
+
114
+ it "combines and lists them with a non-specific count if :generalize is set" do
115
+ @array.en.conjunction(:generalize => true).should == "several cats"
116
+ end
117
+
118
+ end
119
+
120
+
121
+ describe "with an Array of many (more than two) words of varying cases" do
122
+
123
+ before( :each ) do
124
+ @array = %w{cat dog fox dog chicken chicken Fox chicken goose Dog goose}
125
+ end
126
+
127
+ it "combines them into their downcased equivalents and lists them in order of amount " +
128
+ "with default options" do
129
+ @array.en.conjunction.should ==
130
+ 'three dogs, three chickens, two foxes, two geese, and a cat'
131
+ end
132
+
133
+ it "lists them separately if :combine is set to false" do
134
+ @array.en.conjunction(:combine => false).should ==
135
+ 'a cat, a dog, a fox, a dog, a chicken, a chicken, a Fox, a '\
136
+ 'chicken, a goose, a Dog, and a goose'
137
+ end
138
+
139
+ it "doesn't combine the differently-cased ones if :casefold is turned off" do
140
+ @array.en.conjunction(:casefold => false).should ==
141
+ 'three chickens, two dogs, two geese, a cat, a fox, a Fox, '\
142
+ 'and a Dog'
143
+ end
144
+
145
+ it "combines and lists them with a non-specific count if :generalize is set" do
146
+ @array.en.conjunction(:generalize => true).should ==
147
+ 'several dogs, several chickens, several foxes, several '\
148
+ 'geese, and a cat'
149
+ end
150
+
151
+ end
152
+
153
+
154
+ end
@@ -0,0 +1,518 @@
1
+ #!/usr/bin/env spec -cfs
2
+
3
+ BEGIN {
4
+ require 'pathname'
5
+ basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
6
+
7
+ libdir = basedir + "lib"
8
+
9
+ $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
10
+ $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
11
+ }
12
+
13
+ require 'rspec'
14
+ require 'spec/lib/helpers'
15
+
16
+ require 'linguistics'
17
+ require 'linguistics/en/infinitives'
18
+
19
+
20
+ describe Linguistics::EN::Infinitives do
21
+
22
+ before( :all ) do
23
+ setup_logging( :fatal )
24
+ Linguistics.use( :en, :proxy => true )
25
+ include Linguistics::EN
26
+ end
27
+
28
+ after( :all ) do
29
+ reset_logging()
30
+ end
31
+
32
+
33
+ describe "Infinitive object class" do
34
+ it "compares as equal if its primary word is equal" do
35
+ Linguistics::EN::Infinitives::Infinitive.new( 'basse', 'bass', 's', '2' ).should ==
36
+ 'basse'
37
+ end
38
+
39
+ it "compares as equal if its secondary word is equal" do
40
+ Linguistics::EN::Infinitives::Infinitive.new( 'basse', 'bass', 's', '2' ).should ==
41
+ 'bass'
42
+ end
43
+
44
+ end
45
+
46
+
47
+ it "uses rule 1 when calculating the infinitive of 'aches'" do
48
+ "aches".en.infinitive.should == 'ache'
49
+ "aches".en.infinitive.rule.should == '1'
50
+ end
51
+
52
+ it "uses rule 2 when calculating the infinitive of 'vases'" do
53
+ "vases".en.infinitive.should == 'vase'
54
+ "vases".en.infinitive.rule.should == '2'
55
+ end
56
+
57
+ it "uses rule 2 when calculating the infinitive of 'basses'" do
58
+ "basses".en.infinitive.should == 'bass'
59
+ "basses".en.infinitive.rule.should == '2'
60
+ end
61
+
62
+ it "uses rule 3 when calculating the infinitive of 'axes'" do
63
+ "axes".en.infinitive.should == 'axe'
64
+ "axes".en.infinitive.rule.should == '3'
65
+ end
66
+
67
+ it "uses rule 3 when calculating the infinitive of 'fixes'" do
68
+ "fixes".en.infinitive.should == 'fix'
69
+ "fixes".en.infinitive.rule.should == '3'
70
+ end
71
+
72
+ it "uses rule 4 when calculating the infinitive of 'hazes'" do
73
+ "hazes".en.infinitive.should == 'haze'
74
+ "hazes".en.infinitive.rule.should == '4'
75
+ end
76
+
77
+ it "uses rule 4 when calculating the infinitive of 'buzzes'" do
78
+ "buzzes".en.infinitive.should == 'buzz'
79
+ "buzzes".en.infinitive.rule.should == '4'
80
+ end
81
+
82
+ it "uses rule 6a when calculating the infinitive of 'caress'" do
83
+ "caress".en.infinitive.should == 'caress'
84
+ "caress".en.infinitive.rule.should == '6a'
85
+ end
86
+
87
+ it "uses rule 6b when calculating the infinitive of 'bans'" do
88
+ "bans".en.infinitive.should == 'ban'
89
+ "bans".en.infinitive.rule.should == '6b'
90
+ end
91
+
92
+ it "uses rule 7 when calculating the infinitive of 'Jones's'" do
93
+ "Jones's".en.infinitive.should == 'Jones'
94
+ "Jones's".en.infinitive.rule.should == '7'
95
+ end
96
+
97
+ it "uses rule 8 when calculating the infinitive of 'creater'" do
98
+ "creater".en.infinitive.should == 'creater'
99
+ "creater".en.infinitive.rule.should == '8'
100
+ end
101
+
102
+ it "uses rule 9 when calculating the infinitive of 'reacter'" do
103
+ "reacter".en.infinitive.should == 'reacter'
104
+ "reacter".en.infinitive.rule.should == '9'
105
+ end
106
+
107
+ it "uses rule 10 when calculating the infinitive of 'copier'" do
108
+ "copier".en.infinitive.should == 'copy'
109
+ "copier".en.infinitive.rule.should == '10'
110
+ end
111
+
112
+ it "uses rule 11 when calculating the infinitive of 'baker'" do
113
+ "baker".en.infinitive.should == 'bake'
114
+ "baker".en.infinitive.rule.should == '11'
115
+ end
116
+
117
+ it "uses rule 11 when calculating the infinitive of 'smaller'" do
118
+ "smaller".en.infinitive.should == 'small'
119
+ "smaller".en.infinitive.rule.should == '11'
120
+ end
121
+
122
+ it "uses rule 12a when calculating the infinitive of 'curried'" do
123
+ "curried".en.infinitive.should == 'curry'
124
+ "curried".en.infinitive.rule.should == '12a'
125
+ end
126
+
127
+ it "uses rule 12b when calculating the infinitive of 'bored'" do
128
+ "bored".en.infinitive.should == 'bore'
129
+ "bored".en.infinitive.rule.should == '12b'
130
+ end
131
+
132
+ it "uses rule 12b when calculating the infinitive of 'seated'" do
133
+ "seated".en.infinitive.should == 'seat'
134
+ "seated".en.infinitive.rule.should == '12b'
135
+ end
136
+
137
+ it "uses rule 12b when calculating the infinitive of 'tipped'" do
138
+ "tipped".en.infinitive.should == 'tip'
139
+ "tipped".en.infinitive.rule.should == '12b'
140
+ end
141
+
142
+ it "uses rule 12b when calculating the infinitive of 'kitted'" do
143
+ "kitted".en.infinitive.should == 'kit'
144
+ "kitted".en.infinitive.rule.should == '12b'
145
+ end
146
+
147
+ it "uses rule 12b when calculating the infinitive of 'capped'" do
148
+ "capped".en.infinitive.should == 'cap'
149
+ "capped".en.infinitive.rule.should == '12b'
150
+ end
151
+
152
+ it "uses rule 12b when calculating the infinitive of 'chopped'" do
153
+ "chopped".en.infinitive.should == 'chop'
154
+ "chopped".en.infinitive.rule.should == '12b'
155
+ end
156
+
157
+ it "uses rule 13a when calculating the infinitive of 'flies'" do
158
+ "flies".en.infinitive.should == 'fly'
159
+ "flies".en.infinitive.rule.should == '13a'
160
+ end
161
+
162
+ it "uses rule 13b when calculating the infinitive of 'palates'" do
163
+ "palates".en.infinitive.should == 'palate'
164
+ "palates".en.infinitive.rule.should == '13b'
165
+ end
166
+
167
+ it "uses rule 14a when calculating the infinitive of 'liveliest'" do
168
+ "liveliest".en.infinitive.should == 'lively'
169
+ "liveliest".en.infinitive.rule.should == '14a'
170
+ end
171
+
172
+ it "uses rule 14b when calculating the infinitive of 'wisest'" do
173
+ "wisest".en.infinitive.should == 'wise'
174
+ "wisest".en.infinitive.rule.should == '14b'
175
+ end
176
+
177
+ it "uses rule 14b when calculating the infinitive of 'strongest'" do
178
+ "strongest".en.infinitive.should == 'strong'
179
+ "strongest".en.infinitive.rule.should == '14b'
180
+ end
181
+
182
+ it "uses rule 15 when calculating the infinitive of 'living'" do
183
+ "living".en.infinitive.should == 'live'
184
+ "living".en.infinitive.rule.should == '15'
185
+ end
186
+
187
+ it "uses rule 15 when calculating the infinitive of 'laughing'" do
188
+ "laughing".en.infinitive.should == 'laugh'
189
+ "laughing".en.infinitive.rule.should == '15'
190
+ end
191
+
192
+ it "uses rule 15 when calculating the infinitive of 'swaying'" do
193
+ "swaying".en.infinitive.should == 'sway'
194
+ "swaying".en.infinitive.rule.should == '15'
195
+ end
196
+
197
+ it "uses rule 15 when calculating the infinitive of 'catching'" do
198
+ "catching".en.infinitive.should == 'catch'
199
+ "catching".en.infinitive.rule.should == '15'
200
+ end
201
+
202
+ it "uses rule 15 when calculating the infinitive of 'smiling'" do
203
+ "smiling".en.infinitive.should == 'smile'
204
+ "smiling".en.infinitive.rule.should == '15'
205
+ end
206
+
207
+ it "uses rule 15 when calculating the infinitive of 'swimming'" do
208
+ "swimming".en.infinitive.should == 'swim'
209
+ "swimming".en.infinitive.rule.should == '15'
210
+ end
211
+
212
+ it "uses rule 15 when calculating the infinitive of 'running'" do
213
+ "running".en.infinitive.should == 'run'
214
+ "running".en.infinitive.rule.should == '15'
215
+ end
216
+
217
+ it "uses rule 15 when calculating the infinitive of 'floating'" do
218
+ "floating".en.infinitive.should == 'float'
219
+ "floating".en.infinitive.rule.should == '15'
220
+ end
221
+
222
+ it "uses rule 15 when calculating the infinitive of 'keyboarding'" do
223
+ "keyboarding".en.infinitive.should == 'keyboard'
224
+ "keyboarding".en.infinitive.rule.should == '15'
225
+ end
226
+
227
+ it "uses rule 15 when calculating the infinitive of 'wrestling'" do
228
+ "wrestling".en.infinitive.should == 'wrestle'
229
+ "wrestling".en.infinitive.rule.should == '15'
230
+ end
231
+
232
+ it "uses rule 15 when calculating the infinitive of 'traveling'" do
233
+ "traveling".en.infinitive.should == 'travel'
234
+ "traveling".en.infinitive.rule.should == '15'
235
+ end
236
+
237
+ it "uses rule 15 when calculating the infinitive of 'traipsing'" do
238
+ "traipsing".en.infinitive.should == 'traipse'
239
+ "traipsing".en.infinitive.rule.should == '15'
240
+ end
241
+
242
+ it "uses rule 16 when calculating the infinitive of 'stylist'" do
243
+ "stylist".en.infinitive.should == 'style'
244
+ "stylist".en.infinitive.rule.should == '16'
245
+ end
246
+
247
+ it "uses rule 16 when calculating the infinitive of 'dentist'" do
248
+ "dentist".en.infinitive.should == 'dent'
249
+ "dentist".en.infinitive.rule.should == '16'
250
+ end
251
+
252
+ it "uses rule 17 when calculating the infinitive of 'cubism'" do
253
+ "cubism".en.infinitive.should == 'cube'
254
+ "cubism".en.infinitive.rule.should == '17'
255
+ end
256
+
257
+ it "uses rule 17 when calculating the infinitive of 'socialism'" do
258
+ "socialism".en.infinitive.should == 'social'
259
+ "socialism".en.infinitive.rule.should == '17'
260
+ end
261
+
262
+ it "uses rule 18 when calculating the infinitive of 'scarcity'" do
263
+ "scarcity".en.infinitive.should == 'scarce'
264
+ "scarcity".en.infinitive.rule.should == '18'
265
+ end
266
+
267
+ it "uses rule 18 when calculating the infinitive of 'rapidity'" do
268
+ "rapidity".en.infinitive.should == 'rapid'
269
+ "rapidity".en.infinitive.rule.should == '18'
270
+ end
271
+
272
+ it "uses rule 19 when calculating the infinitive of 'immunize'" do
273
+ "immunize".en.infinitive.should == 'immune'
274
+ "immunize".en.infinitive.rule.should == '19'
275
+ end
276
+
277
+ it "uses rule 19 when calculating the infinitive of 'lionize'" do
278
+ "lionize".en.infinitive.should == 'lion'
279
+ "lionize".en.infinitive.rule.should == '19'
280
+ end
281
+
282
+ it "uses rule 20c when calculating the infinitive of 'livable'" do
283
+ "livable".en.infinitive.should == 'live'
284
+ "livable".en.infinitive.rule.should == '20c'
285
+ end
286
+
287
+ it "uses rule 20c when calculating the infinitive of 'portable'" do
288
+ "portable".en.infinitive.should == 'port'
289
+ "portable".en.infinitive.rule.should == '20c'
290
+ end
291
+
292
+ it "uses rule 22 when calculating the infinitive of 'nobility'" do
293
+ "nobility".en.infinitive.should == 'noble'
294
+ "nobility".en.infinitive.rule.should == '22'
295
+ end
296
+
297
+ it "uses rule 23 when calculating the infinitive of 'identifiable'" do
298
+ "identifiable".en.infinitive.should == 'identify'
299
+ "identifiable".en.infinitive.rule.should == '23'
300
+ end
301
+
302
+ it "uses rule 24 when calculating the infinitive of 'psychologist'" do
303
+ "psychologist".en.infinitive.should == 'psychology'
304
+ "psychologist".en.infinitive.rule.should == '24'
305
+ end
306
+
307
+ it "uses rule 25 when calculating the infinitive of 'photographic'" do
308
+ "photographic".en.infinitive.should == 'photography'
309
+ "photographic".en.infinitive.rule.should == '25'
310
+ end
311
+
312
+ it "uses rule 26 when calculating the infinitive of 'stylistic'" do
313
+ "stylistic".en.infinitive.should == 'stylist'
314
+ "stylistic".en.infinitive.rule.should == '26'
315
+ end
316
+
317
+ it "uses rule 27 when calculating the infinitive of 'martensitic'" do
318
+ "martensitic".en.infinitive.should == 'martensite'
319
+ "martensitic".en.infinitive.rule.should == '27'
320
+ end
321
+
322
+ it "uses rule 27 when calculating the infinitive of 'politic'" do
323
+ "politic".en.infinitive.should == 'polite'
324
+ "politic".en.infinitive.rule.should == '27'
325
+ end
326
+
327
+ it "uses rule 28 when calculating the infinitive of 'ladylike'" do
328
+ "ladylike".en.infinitive.should == 'lady'
329
+ "ladylike".en.infinitive.rule.should == '28'
330
+ end
331
+
332
+ it "uses rule 29 when calculating the infinitive of 'biologic'" do
333
+ "biologic".en.infinitive.should == 'biology'
334
+ "biologic".en.infinitive.rule.should == '29'
335
+ end
336
+
337
+ it "uses rule 30 when calculating the infinitive of 'battlement'" do
338
+ "battlement".en.infinitive.should == 'battle'
339
+ "battlement".en.infinitive.rule.should == '30'
340
+ end
341
+
342
+ it "uses rule 31 when calculating the infinitive of 'supplemental'" do
343
+ "supplemental".en.infinitive.should == 'supplement'
344
+ "supplemental".en.infinitive.rule.should == '31'
345
+ end
346
+
347
+ it "uses rule 32 when calculating the infinitive of 'thermometry'" do
348
+ "thermometry".en.infinitive.should == 'thermometer'
349
+ "thermometry".en.infinitive.rule.should == '32'
350
+ end
351
+
352
+ it "uses rule 33 when calculating the infinitive of 'inadvertence'" do
353
+ "inadvertence".en.infinitive.should == 'inadvertent'
354
+ "inadvertence".en.infinitive.rule.should == '33'
355
+ end
356
+
357
+ it "uses rule 34 when calculating the infinitive of 'potency'" do
358
+ "potency".en.infinitive.should == 'potent'
359
+ "potency".en.infinitive.rule.should == '34'
360
+ end
361
+
362
+ it "uses rule 35 when calculating the infinitive of 'discipleship'" do
363
+ "discipleship".en.infinitive.should == 'disciple'
364
+ "discipleship".en.infinitive.rule.should == '35'
365
+ end
366
+
367
+ it "uses rule 36 when calculating the infinitive of 'mystical'" do
368
+ "mystical".en.infinitive.should == 'mystic'
369
+ "mystical".en.infinitive.rule.should == '36'
370
+ end
371
+
372
+ it "uses rule 37 when calculating the infinitive of 'regional'" do
373
+ "regional".en.infinitive.should == 'region'
374
+ "regional".en.infinitive.rule.should == '37'
375
+ end
376
+
377
+ it "uses rule 37 when calculating the infinitive of 'national'" do
378
+ "national".en.infinitive.should == 'nation'
379
+ "national".en.infinitive.rule.should == '37'
380
+ end
381
+
382
+ it "uses rule 38 when calculating the infinitive of 'horribly'" do
383
+ "horribly".en.infinitive.should == 'horrible'
384
+ "horribly".en.infinitive.rule.should == '38'
385
+ end
386
+
387
+ it "uses rule 39 when calculating the infinitive of 'scantily'" do
388
+ "scantily".en.infinitive.should == 'scanty'
389
+ "scantily".en.infinitive.rule.should == '39'
390
+ end
391
+
392
+ it "uses rule 40 when calculating the infinitive of 'partly'" do
393
+ "partly".en.infinitive.should == 'part'
394
+ "partly".en.infinitive.rule.should == '40'
395
+ end
396
+
397
+ it "uses rule 41a when calculating the infinitive of 'dutiful'" do
398
+ "dutiful".en.infinitive.should == 'duty'
399
+ "dutiful".en.infinitive.rule.should == '41a'
400
+ end
401
+
402
+ it "uses rule 41b when calculating the infinitive of 'harmful'" do
403
+ "harmful".en.infinitive.should == 'harm'
404
+ "harmful".en.infinitive.rule.should == '41b'
405
+ end
406
+
407
+ it "uses rule 42a when calculating the infinitive of 'likelihood'" do
408
+ "likelihood".en.infinitive.should == 'likely'
409
+ "likelihood".en.infinitive.rule.should == '42a'
410
+ end
411
+
412
+ it "uses rule 42b when calculating the infinitive of 'neighborhood'" do
413
+ "neighborhood".en.infinitive.should == 'neighbor'
414
+ "neighborhood".en.infinitive.rule.should == '42b'
415
+ end
416
+
417
+ it "uses rule 42b when calculating the infinitive of 'neighbourhood'" do
418
+ "neighbourhood".en.infinitive.should == 'neighbour'
419
+ "neighbourhood".en.infinitive.rule.should == '42b'
420
+ end
421
+
422
+ it "uses rule 43a when calculating the infinitive of 'penniless'" do
423
+ "penniless".en.infinitive.should == 'penny'
424
+ "penniless".en.infinitive.rule.should == '43a'
425
+ end
426
+
427
+ it "uses rule 43b when calculating the infinitive of 'listless'" do
428
+ "listless".en.infinitive.should == 'list'
429
+ "listless".en.infinitive.rule.should == '43b'
430
+ end
431
+
432
+ it "uses rule 44a when calculating the infinitive of 'heartiness'" do
433
+ "heartiness".en.infinitive.should == 'hearty'
434
+ "heartiness".en.infinitive.rule.should == '44a'
435
+ end
436
+
437
+ it "uses rule 44b when calculating the infinitive of 'coolness'" do
438
+ "coolness".en.infinitive.should == 'cool'
439
+ "coolness".en.infinitive.rule.should == '44b'
440
+ end
441
+
442
+ it "uses rule 45 when calculating the infinitive of 'specification'" do
443
+ "specification".en.infinitive.should == 'specify'
444
+ "specification".en.infinitive.rule.should == '45'
445
+ end
446
+
447
+ it "uses rule 46 when calculating the infinitive of 'rationalization'" do
448
+ "rationalization".en.infinitive.should == 'rationalize'
449
+ "rationalization".en.infinitive.rule.should == '46'
450
+ end
451
+
452
+ it "uses rule 47 when calculating the infinitive of 'detection'" do
453
+ "detection".en.infinitive.should == 'detect'
454
+ "detection".en.infinitive.rule.should == '47'
455
+ end
456
+
457
+ it "uses rule 48 when calculating the infinitive of 'exertion'" do
458
+ "exertion".en.infinitive.should == 'exert'
459
+ "exertion".en.infinitive.rule.should == '48'
460
+ end
461
+
462
+ it "uses rule 49 when calculating the infinitive of 'creation'" do
463
+ "creation".en.infinitive.should == 'create'
464
+ "creation".en.infinitive.rule.should == '49'
465
+ end
466
+
467
+ it "uses rule 50 when calculating the infinitive of 'creator'" do
468
+ "creator".en.infinitive.should == 'create'
469
+ "creator".en.infinitive.rule.should == '50'
470
+ end
471
+
472
+ it "uses rule 51 when calculating the infinitive of 'detector'" do
473
+ "detector".en.infinitive.should == 'detect'
474
+ "detector".en.infinitive.rule.should == '51'
475
+ end
476
+
477
+ it "uses rule 52 when calculating the infinitive of 'creative'" do
478
+ "creative".en.infinitive.should == 'creation'
479
+ "creative".en.infinitive.rule.should == '52'
480
+ end
481
+
482
+ it "uses rule 52 when calculating the infinitive of 'decisive'" do
483
+ "decisive".en.infinitive.should == 'decision'
484
+ "decisive".en.infinitive.rule.should == '52'
485
+ end
486
+
487
+ it "uses rule 53 when calculating the infinitive of 'Australian'" do
488
+ "Australian".en.infinitive.should == 'Australia'
489
+ "Australian".en.infinitive.rule.should == '53'
490
+ end
491
+
492
+ it "uses rule 54 when calculating the infinitive of 'Jeffersonian'" do
493
+ "Jeffersonian".en.infinitive.should == 'Jefferson'
494
+ "Jeffersonian".en.infinitive.rule.should == '54'
495
+ end
496
+
497
+ it "uses irregular rule when calculating the infinitive of 'rove'" do
498
+ "rove".en.infinitive.should == 'reeve'
499
+ "rove".en.infinitive.rule.should == 'irregular'
500
+ end
501
+
502
+ it "uses irregular rule when calculating the infinitive of 'dove'" do
503
+ "dove".en.infinitive.should == 'dive'
504
+ "dove".en.infinitive.rule.should == 'irregular'
505
+ end
506
+
507
+ it "uses irregular rule when calculating the infinitive of 'snuck'" do
508
+ "snuck".en.infinitive.should == 'sneak'
509
+ "snuck".en.infinitive.rule.should == 'irregular'
510
+ end
511
+
512
+ it "uses irregular rule when calculating the infinitive of 'wot'" do
513
+ "wot".en.infinitive.should == 'wit'
514
+ "wot".en.infinitive.rule.should == 'irregular'
515
+ end
516
+
517
+ end
518
+