@@ -108,6 +108,53 @@ describe Cadmium::NounInflector do
108108 subject.singularize(" antennas" ).should eq(" antenna" )
109109 subject.singularize(" formulas" ).should eq(" formula" )
110110 end
111+
112+ it " should handle -SES to -SE cases" do
113+ subject.singularize(" impulses" ).should eq(" impulse" )
114+ subject.singularize(" responses" ).should eq(" response" )
115+ subject.singularize(" licenses" ).should eq(" license" )
116+ subject.singularize(" verses" ).should eq(" verse" )
117+ subject.singularize(" courses" ).should eq(" course" )
118+ end
119+
120+ it " should handle Latin -A to -UM cases" do
121+ subject.singularize(" data" ).should eq(" datum" )
122+ subject.singularize(" media" ).should eq(" medium" )
123+ subject.singularize(" curricula" ).should eq(" curriculum" )
124+ subject.singularize(" memoranda" ).should eq(" memorandum" )
125+ subject.singularize(" bacteria" ).should eq(" bacterium" )
126+ subject.singularize(" errata" ).should eq(" erratum" )
127+ subject.singularize(" ova" ).should eq(" ovum" )
128+ subject.singularize(" agenda" ).should eq(" agendum" )
129+ subject.singularize(" referenda" ).should eq(" referendum" )
130+ subject.singularize(" spectra" ).should eq(" spectrum" )
131+ subject.singularize(" strata" ).should eq(" stratum" )
132+ end
133+
134+ it " should handle Greek -A to -ON cases" do
135+ subject.singularize(" criteria" ).should eq(" criterion" )
136+ subject.singularize(" phenomena" ).should eq(" phenomenon" )
137+ subject.singularize(" automata" ).should eq(" automaton" )
138+ end
139+
140+ it " should handle extended -VES to -F cases" do
141+ subject.singularize(" wolves" ).should eq(" wolf" )
142+ subject.singularize(" calves" ).should eq(" calf" )
143+ subject.singularize(" scarves" ).should eq(" scarf" )
144+ subject.singularize(" leaves" ).should eq(" leaf" )
145+ subject.singularize(" hooves" ).should eq(" hoof" )
146+ end
147+
148+ it " should handle French -EAU to -EAUX cases" do
149+ subject.singularize(" bureaux" ).should eq(" bureau" )
150+ subject.singularize(" tableaux" ).should eq(" tableau" )
151+ subject.singularize(" chateaux" ).should eq(" chateau" )
152+ subject.singularize(" plateaux" ).should eq(" plateau" )
153+ end
154+
155+ it " should handle QUIZ cases" do
156+ subject.singularize(" quizzes" ).should eq(" quiz" )
157+ end
111158 end
112159
113160 describe " #pluralize" do
@@ -153,7 +200,6 @@ describe Cadmium::NounInflector do
153200 subject.pluralize(" church" ).should eq(" churches" )
154201 subject.pluralize(" appendix" ).should eq(" appendixes" )
155202 subject.pluralize(" mess" ).should eq(" messes" )
156- subject.pluralize(" quiz" ).should eq(" quizes" )
157203 subject.pluralize(" shoe" ).should eq(" shoes" )
158204 end
159205
@@ -220,5 +266,44 @@ describe Cadmium::NounInflector do
220266 subject.pluralize(" vertebra" ).should eq(" vertebrae" )
221267 subject.pluralize(" vita" ).should eq(" vitae" )
222268 end
269+
270+ it " should handle Latin -UM to -A cases" do
271+ subject.pluralize(" datum" ).should eq(" data" )
272+ subject.pluralize(" medium" ).should eq(" media" )
273+ subject.pluralize(" curriculum" ).should eq(" curricula" )
274+ subject.pluralize(" memorandum" ).should eq(" memoranda" )
275+ subject.pluralize(" bacterium" ).should eq(" bacteria" )
276+ subject.pluralize(" erratum" ).should eq(" errata" )
277+ subject.pluralize(" ovum" ).should eq(" ova" )
278+ subject.pluralize(" agendum" ).should eq(" agenda" )
279+ subject.pluralize(" referendum" ).should eq(" referenda" )
280+ subject.pluralize(" spectrum" ).should eq(" spectra" )
281+ subject.pluralize(" stratum" ).should eq(" strata" )
282+ end
283+
284+ it " should handle Greek -ON to -A cases" do
285+ subject.pluralize(" criterion" ).should eq(" criteria" )
286+ subject.pluralize(" phenomenon" ).should eq(" phenomena" )
287+ subject.pluralize(" automaton" ).should eq(" automata" )
288+ end
289+
290+ it " should handle extended -F to -VES cases" do
291+ subject.pluralize(" wolf" ).should eq(" wolves" )
292+ subject.pluralize(" calf" ).should eq(" calves" )
293+ subject.pluralize(" scarf" ).should eq(" scarves" )
294+ subject.pluralize(" leaf" ).should eq(" leaves" )
295+ subject.pluralize(" hoof" ).should eq(" hooves" )
296+ end
297+
298+ it " should handle French -EAU to -EAUX cases" do
299+ subject.pluralize(" bureau" ).should eq(" bureaux" )
300+ subject.pluralize(" tableau" ).should eq(" tableaux" )
301+ subject.pluralize(" chateau" ).should eq(" chateaux" )
302+ subject.pluralize(" plateau" ).should eq(" plateaux" )
303+ end
304+
305+ it " should handle QUIZ cases" do
306+ subject.pluralize(" quiz" ).should eq(" quizzes" )
307+ end
223308 end
224309end
0 commit comments