robsharp-extlib 0.9.15

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.
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