robsharp-extlib 0.9.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/.autotest +21 -0
  2. data/.document +5 -0
  3. data/.gitignore +22 -0
  4. data/LICENSE +47 -0
  5. data/README.rdoc +17 -0
  6. data/Rakefile +28 -0
  7. data/VERSION +1 -0
  8. data/extlib.gemspec +147 -0
  9. data/lib/extlib.rb +50 -0
  10. data/lib/extlib/array.rb +38 -0
  11. data/lib/extlib/assertions.rb +8 -0
  12. data/lib/extlib/blank.rb +89 -0
  13. data/lib/extlib/boolean.rb +11 -0
  14. data/lib/extlib/byte_array.rb +6 -0
  15. data/lib/extlib/class.rb +179 -0
  16. data/lib/extlib/datetime.rb +29 -0
  17. data/lib/extlib/dictionary.rb +433 -0
  18. data/lib/extlib/hash.rb +450 -0
  19. data/lib/extlib/hook.rb +407 -0
  20. data/lib/extlib/inflection.rb +442 -0
  21. data/lib/extlib/lazy_array.rb +453 -0
  22. data/lib/extlib/lazy_module.rb +18 -0
  23. data/lib/extlib/logger.rb +198 -0
  24. data/lib/extlib/mash.rb +157 -0
  25. data/lib/extlib/module.rb +51 -0
  26. data/lib/extlib/nil.rb +5 -0
  27. data/lib/extlib/numeric.rb +5 -0
  28. data/lib/extlib/object.rb +178 -0
  29. data/lib/extlib/object_space.rb +13 -0
  30. data/lib/extlib/pathname.rb +20 -0
  31. data/lib/extlib/pooling.rb +235 -0
  32. data/lib/extlib/rubygems.rb +38 -0
  33. data/lib/extlib/simple_set.rb +66 -0
  34. data/lib/extlib/string.rb +176 -0
  35. data/lib/extlib/struct.rb +17 -0
  36. data/lib/extlib/symbol.rb +21 -0
  37. data/lib/extlib/time.rb +44 -0
  38. data/lib/extlib/try_dup.rb +44 -0
  39. data/lib/extlib/virtual_file.rb +10 -0
  40. data/spec/array_spec.rb +40 -0
  41. data/spec/blank_spec.rb +86 -0
  42. data/spec/byte_array_spec.rb +8 -0
  43. data/spec/class_spec.rb +158 -0
  44. data/spec/datetime_spec.rb +22 -0
  45. data/spec/hash_spec.rb +536 -0
  46. data/spec/hook_spec.rb +1235 -0
  47. data/spec/inflection/plural_spec.rb +565 -0
  48. data/spec/inflection/singular_spec.rb +498 -0
  49. data/spec/inflection_extras_spec.rb +111 -0
  50. data/spec/lazy_array_spec.rb +1961 -0
  51. data/spec/lazy_module_spec.rb +38 -0
  52. data/spec/mash_spec.rb +312 -0
  53. data/spec/module_spec.rb +71 -0
  54. data/spec/object_space_spec.rb +10 -0
  55. data/spec/object_spec.rb +114 -0
  56. data/spec/pooling_spec.rb +511 -0
  57. data/spec/rcov.opts +6 -0
  58. data/spec/simple_set_spec.rb +58 -0
  59. data/spec/spec.opts +4 -0
  60. data/spec/spec_helper.rb +7 -0
  61. data/spec/string_spec.rb +222 -0
  62. data/spec/struct_spec.rb +13 -0
  63. data/spec/symbol_spec.rb +9 -0
  64. data/spec/time_spec.rb +31 -0
  65. data/spec/try_call_spec.rb +74 -0
  66. data/spec/try_dup_spec.rb +46 -0
  67. data/spec/virtual_file_spec.rb +22 -0
  68. data/tasks/ci.rake +1 -0
  69. data/tasks/metrics.rake +36 -0
  70. data/tasks/spec.rake +25 -0
  71. data/tasks/yard.rake +9 -0
  72. data/tasks/yardstick.rake +19 -0
  73. metadata +198 -0
@@ -0,0 +1,565 @@
1
+ require 'spec_helper'
2
+ require 'extlib/inflection'
3
+
4
+ describe Extlib::Inflection, "#singular" do
5
+ it "pluralizes equipment => equipment" do
6
+ "equipment".plural.should == "equipment"
7
+ end
8
+
9
+ it "pluralizes information => information" do
10
+ "information".plural.should == "information"
11
+ end
12
+
13
+ it "pluralizes money => money" do
14
+ "money".plural.should == "money"
15
+ end
16
+
17
+ it "pluralizes species => species" do
18
+ "species".plural.should == "species"
19
+ end
20
+
21
+ it "pluralizes series => series" do
22
+ "series".plural.should == "series"
23
+ end
24
+
25
+ it "pluralizes fish => fish" do
26
+ "fish".plural.should == "fish"
27
+ end
28
+
29
+ it "pluralizes sheep => sheep" do
30
+ "sheep".plural.should == "sheep"
31
+ end
32
+
33
+ it "pluralizes news => news" do
34
+ "news".plural.should == "news"
35
+ end
36
+
37
+ it "pluralizes rain => rain" do
38
+ "rain".plural.should == "rain"
39
+ end
40
+
41
+ it "pluralizes milk => milk" do
42
+ "milk".plural.should == "milk"
43
+ end
44
+
45
+ it "pluralizes moose => moose" do
46
+ "moose".plural.should == "moose"
47
+ end
48
+
49
+ it "pluralizes hovercraft => hovercraft" do
50
+ "hovercraft".plural.should == "hovercraft"
51
+ end
52
+
53
+ it "pluralizes cacti => cactus" do
54
+ "cactus".plural.should == "cacti"
55
+ end
56
+
57
+ it "pluralizes thesaurus => thesauri" do
58
+ "thesaurus".plural.should == "thesauri"
59
+ end
60
+
61
+ it "pluralizes matrix => matrices" do
62
+ "matrix".plural.should == "matrices"
63
+ end
64
+
65
+ it "pluralizes Swiss => Swiss" do
66
+ "Swiss".plural.should == "Swiss"
67
+ end
68
+
69
+ it "pluralizes life => lives" do
70
+ "life".plural.should == "lives"
71
+ end
72
+
73
+ it "pluralizes wife => wives" do
74
+ "wife".plural.should == "wives"
75
+ end
76
+
77
+ it "pluralizes goose => geese" do
78
+ "goose".plural.should == "geese"
79
+ end
80
+
81
+ it "pluralizes criterion => criteria" do
82
+ "criterion".plural.should == "criteria"
83
+ end
84
+
85
+ it "pluralizes alias => aliases" do
86
+ "alias".plural.should == "aliases"
87
+ end
88
+
89
+ it "pluralizes status => statuses" do
90
+ "status".plural.should == "statuses"
91
+ end
92
+
93
+ it "pluralizes axis => axes" do
94
+ "axis".plural.should == "axes"
95
+ end
96
+
97
+ it "pluralizes crisis => crises" do
98
+ "crisis".plural.should == "crises"
99
+ end
100
+
101
+ it "pluralizes testis => testes" do
102
+ "testis".plural.should == "testes"
103
+ end
104
+
105
+ it "pluralizes child => children" do
106
+ "child".plural.should == "children"
107
+ end
108
+
109
+ it "pluralizes person => people" do
110
+ "person".plural.should == "people"
111
+ end
112
+
113
+ it "pluralizes potato => potatoes" do
114
+ "potato".plural.should == "potatoes"
115
+ end
116
+
117
+ it "pluralizes tomato => tomatoes" do
118
+ "tomato".plural.should == "tomatoes"
119
+ end
120
+
121
+ it "pluralizes buffalo => buffaloes" do
122
+ "buffalo".plural.should == "buffaloes"
123
+ end
124
+
125
+ it "pluralizes torpedo => torpedoes" do
126
+ "torpedo".plural.should == "torpedoes"
127
+ end
128
+
129
+ it "pluralizes quiz => quizzes" do
130
+ "quiz".plural.should == "quizzes"
131
+ end
132
+
133
+ # used to be a bug exposed by this specs suite,
134
+ # this MUST pass or we've got regression
135
+ it "pluralizes vertex => vertices" do
136
+ "vertex".plural.should == "vertices"
137
+ end
138
+
139
+ it "pluralizes index => indices" do
140
+ "index".plural.should == "indices"
141
+ end
142
+
143
+ it "pluralizes ox => oxen" do
144
+ "ox".plural.should == "oxen"
145
+ end
146
+
147
+ it "pluralizes mouse => mice" do
148
+ "mouse".plural.should == "mice"
149
+ end
150
+
151
+ it "pluralizes louse => lice" do
152
+ "louse".plural.should == "lice"
153
+ end
154
+
155
+ it "pluralizes thesis => theses" do
156
+ "thesis".plural.should == "theses"
157
+ end
158
+
159
+ it "pluralizes thief => thieves" do
160
+ "thief".plural.should == "thieves"
161
+ end
162
+
163
+ it "pluralizes analysis => analyses" do
164
+ "analysis".plural.should == "analyses"
165
+ end
166
+
167
+ it "pluralizes octopus => octopi" do
168
+ "octopus".plural.should == "octopi"
169
+ end
170
+
171
+ it "pluralizes grass => grass" do
172
+ "grass".plural.should == "grass"
173
+ end
174
+
175
+ it "pluralizes phenomenon => phenomena" do
176
+ "phenomenon".plural.should == "phenomena"
177
+ end
178
+
179
+
180
+
181
+
182
+
183
+ # ==== bugs, typos and reported issues
184
+
185
+
186
+
187
+
188
+
189
+ # ==== rules and most common cases
190
+
191
+ it "pluralizes forum => forums" do
192
+ "forum".plural.should == "forums"
193
+ end
194
+
195
+ it "pluralizes hive => hives" do
196
+ "hive".plural.should == "hives"
197
+ end
198
+
199
+ it "pluralizes athlete => athletes" do
200
+ "athlete".plural.should == "athletes"
201
+ end
202
+
203
+ it "pluralizes dwarf => dwarves" do
204
+ "dwarf".plural.should == "dwarves"
205
+ end
206
+
207
+ it "pluralizes hero => heroes" do
208
+ "hero".plural.should == "heroes"
209
+ end
210
+
211
+ it "pluralizes zero => zeroes" do
212
+ "zero".plural.should == "zeroes"
213
+ end
214
+
215
+ it "pluralizes man => men" do
216
+ "man".plural.should == "men"
217
+ end
218
+
219
+ it "pluralizes woman => women" do
220
+ "woman".plural.should == "women"
221
+ end
222
+
223
+ it "pluralizes sportsman => sportsmen" do
224
+ "sportsman".plural.should == "sportsmen"
225
+ end
226
+
227
+ it "pluralizes branch => branches" do
228
+ "branch".plural.should == "branches"
229
+ end
230
+
231
+ it "pluralizes crunch => crunches" do
232
+ "crunch".plural.should == "crunches"
233
+ end
234
+
235
+ it "pluralizes trash => trashes" do
236
+ "trash".plural.should == "trashes"
237
+ end
238
+
239
+ it "pluralizes mash => mashes" do
240
+ "mash".plural.should == "mashes"
241
+ end
242
+
243
+ it "pluralizes cross => crosses" do
244
+ "cross".plural.should == "crosses"
245
+ end
246
+
247
+ it "pluralizes erratum => errata" do
248
+ "erratum".plural.should == "errata"
249
+ end
250
+
251
+ # FIXME: add -ia => -ium cases
252
+
253
+ # FIXME: add -ra => -rum cases
254
+
255
+ it "pluralizes ray => rays" do
256
+ "ray".plural.should == "rays"
257
+ end
258
+
259
+ it "pluralizes spray => sprays" do
260
+ "spray".plural.should == "sprays"
261
+ end
262
+
263
+ # Merriam-Webster dictionary says
264
+ # preys is correct, too.
265
+ it "pluralizes prey => preys" do
266
+ "prey".plural.should == "preys"
267
+ end
268
+
269
+ it "pluralizes toy => toys" do
270
+ "toy".plural.should == "toys"
271
+ end
272
+
273
+ it "pluralizes joy => joys" do
274
+ "joy".plural.should == "joys"
275
+ end
276
+
277
+ it "pluralizes buy => buys" do
278
+ "buy".plural.should == "buys"
279
+ end
280
+
281
+ it "pluralizes guy => guys" do
282
+ "guy".plural.should == "guys"
283
+ end
284
+
285
+ it "pluralizes cry => cries" do
286
+ "cry".plural.should == "cries"
287
+ end
288
+
289
+ it "pluralizes fly => flies" do
290
+ "fly".plural.should == "flies"
291
+ end
292
+
293
+ it "pluralizes fox => foxes" do
294
+ "fox".plural.should == "foxes"
295
+ end
296
+
297
+ it "pluralizes elf => elves" do
298
+ "elf".plural.should == "elves"
299
+ end
300
+
301
+ it "pluralizes shelf => shelves" do
302
+ "shelf".plural.should == "shelves"
303
+ end
304
+
305
+ it "pluralizes plus => plusses" do
306
+ "plus".plural.should == "plusses"
307
+ end
308
+
309
+ it "pluralizes cat => cats" do
310
+ "cat".plural.should == "cats"
311
+ end
312
+
313
+ it "pluralizes rat => rats" do
314
+ "rat".plural.should == "rats"
315
+ end
316
+
317
+ it "pluralizes rose => roses" do
318
+ "rose".plural.should == "roses"
319
+ end
320
+
321
+ it "pluralizes project => projects" do
322
+ "project".plural.should == "projects"
323
+ end
324
+
325
+ it "pluralizes post => posts" do
326
+ "post".plural.should == "posts"
327
+ end
328
+
329
+ it "pluralizes article => articles" do
330
+ "article".plural.should == "articles"
331
+ end
332
+
333
+ it "pluralizes location => locations" do
334
+ "location".plural.should == "locations"
335
+ end
336
+
337
+ it "pluralizes friend => friends" do
338
+ "friend".plural.should == "friends"
339
+ end
340
+
341
+ it "pluralizes link => links" do
342
+ "link".plural.should == "links"
343
+ end
344
+
345
+ it "pluralizes url => urls" do
346
+ "url".plural.should == "urls"
347
+ end
348
+
349
+ it "pluralizes account => accounts" do
350
+ "account".plural.should == "accounts"
351
+ end
352
+
353
+ it "pluralizes server => servers" do
354
+ "server".plural.should == "servers"
355
+ end
356
+
357
+ it "pluralizes fruit => fruits" do
358
+ "fruit".plural.should == "fruits"
359
+ end
360
+
361
+ it "pluralizes map => maps" do
362
+ "map".plural.should == "maps"
363
+ end
364
+
365
+ it "pluralizes income => incomes" do
366
+ "income".plural.should == "incomes"
367
+ end
368
+
369
+ it "pluralizes ping => pings" do
370
+ "ping".plural.should == "pings"
371
+ end
372
+
373
+ it "pluralizes event => events" do
374
+ "event".plural.should == "events"
375
+ end
376
+
377
+ it "pluralizes proof => proofs" do
378
+ "proof".plural.should == "proofs"
379
+ end
380
+
381
+ it "pluralizes typo => typos" do
382
+ "typo".plural.should == "typos"
383
+ end
384
+
385
+ it "pluralizes attachment => attachments" do
386
+ "attachment".plural.should == "attachments"
387
+ end
388
+
389
+ it "pluralizes download => downloads" do
390
+ "download".plural.should == "downloads"
391
+ end
392
+
393
+ it "pluralizes asset => assets" do
394
+ "asset".plural.should == "assets"
395
+ end
396
+
397
+ it "pluralizes job => jobs" do
398
+ "job".plural.should == "jobs"
399
+ end
400
+
401
+ it "pluralizes city => cities" do
402
+ "city".plural.should == "cities"
403
+ end
404
+
405
+ it "pluralizes package => packages" do
406
+ "package".plural.should == "packages"
407
+ end
408
+
409
+ it "pluralizes commit => commits" do
410
+ "commit".plural.should == "commits"
411
+ end
412
+
413
+ it "pluralizes version => versions" do
414
+ "version".plural.should == "versions"
415
+ end
416
+
417
+ it "pluralizes document => documents" do
418
+ "document".plural.should == "documents"
419
+ end
420
+
421
+ it "pluralizes edition => editions" do
422
+ "edition".plural.should == "editions"
423
+ end
424
+
425
+ it "pluralizes movie => movies" do
426
+ "movie".plural.should == "movies"
427
+ end
428
+
429
+ it "pluralizes song => songs" do
430
+ "song".plural.should == "songs"
431
+ end
432
+
433
+ it "pluralizes invoice => invoices" do
434
+ "invoice".plural.should == "invoices"
435
+ end
436
+
437
+ it "pluralizes product => products" do
438
+ "product".plural.should == "products"
439
+ end
440
+
441
+ it "pluralizes book => books" do
442
+ "book".plural.should == "books"
443
+ end
444
+
445
+ it "pluralizes ticket => tickets" do
446
+ "ticket".plural.should == "tickets"
447
+ end
448
+
449
+ it "pluralizes game => games" do
450
+ "game".plural.should == "games"
451
+ end
452
+
453
+ it "pluralizes tournament => tournaments" do
454
+ "tournament".plural.should == "tournaments"
455
+ end
456
+
457
+ it "pluralizes prize => prizes" do
458
+ "prize".plural.should == "prizes"
459
+ end
460
+
461
+ it "pluralizes price => prices" do
462
+ "price".plural.should == "prices"
463
+ end
464
+
465
+ it "pluralizes installation => installations" do
466
+ "installation".plural.should == "installations"
467
+ end
468
+
469
+ it "pluralizes date => dates" do
470
+ "date".plural.should == "dates"
471
+ end
472
+
473
+ it "pluralizes schedule => schedules" do
474
+ "schedule".plural.should == "schedules"
475
+ end
476
+
477
+ it "pluralizes arena => arenas" do
478
+ "arena".plural.should == "arenas"
479
+ end
480
+
481
+ it "pluralizes spam => spams" do
482
+ "spam".plural.should == "spams"
483
+ end
484
+
485
+ it "pluralizes bus => buses" do
486
+ "bus".plural.should == "buses"
487
+ end
488
+
489
+ it "pluralizes rice => rice" do
490
+ "rice".plural.should == "rice"
491
+ end
492
+
493
+ # Some specs from Rails
494
+ SingularToPlural = {
495
+ "search" => "searches",
496
+ "switch" => "switches",
497
+ "fix" => "fixes",
498
+ "box" => "boxes",
499
+ "process" => "processes",
500
+ "address" => "addresses",
501
+ "case" => "cases",
502
+ "stack" => "stacks",
503
+ "wish" => "wishes",
504
+
505
+ "category" => "categories",
506
+ "query" => "queries",
507
+ "ability" => "abilities",
508
+ "agency" => "agencies",
509
+
510
+ "archive" => "archives",
511
+
512
+ "safe" => "saves",
513
+ "half" => "halves",
514
+
515
+ "move" => "moves",
516
+
517
+ "salesperson" => "salespeople",
518
+
519
+ "spokesman" => "spokesmen",
520
+
521
+ "basis" => "bases",
522
+ "diagnosis" => "diagnoses",
523
+ "diagnosis_a" => "diagnosis_as",
524
+
525
+ "datum" => "data",
526
+ "medium" => "media",
527
+
528
+ "node_child" => "node_children",
529
+
530
+ "experience" => "experiences",
531
+ "day" => "days",
532
+
533
+ "comment" => "comments",
534
+ "foobar" => "foobars",
535
+ "newsletter" => "newsletters",
536
+
537
+ "old_news" => "old_news",
538
+
539
+ "perspective" => "perspectives",
540
+
541
+ "photo" => "photos",
542
+ "status_code" => "status_codes",
543
+
544
+ "house" => "houses",
545
+ "virus" => "viruses",
546
+ "portfolio" => "portfolios",
547
+
548
+ "matrix_fu" => "matrix_fus",
549
+
550
+ "axis" => "axes",
551
+
552
+ "shoe" => "shoes",
553
+
554
+ "horse" => "horses",
555
+ "edge" => "edges",
556
+
557
+ "cow" => "cows" # 'kine' is archaic and nobody uses it
558
+ }
559
+
560
+ SingularToPlural.each do |single_word, plural_word|
561
+ it "pluralizes #{single_word} => #{plural_word}" do
562
+ single_word.plural.should == plural_word
563
+ end
564
+ end
565
+ end