blob: 2a4cfe6f8845be1d7898ea9fd075678024c706c6 [file] [log] [blame]
/*
* Utilities: A classic collection of JavaScript utilities
* Copyright 2112 Matthew Eernisse (mde@fleegix.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
var inflection = require('../lib/inflection')
, assert = require('assert')
, esInflections
, sInflections
, iesInflections
, vesInflections
, icesInflections
, renInflections
, oesInflections
, iInflections
, genInflections
, irregularInflections
, noInflections
, tests;
/**
* Most test inflections are from Ruby on Rails:
* https://github.com/rails/rails/blob/master/activesupport/test/inflector_test_cases.rb
*
* Ruby on Rails is MIT licensed: http://www.opensource.org/licenses/MIT
*/
esInflections = [
["search", "searches"]
, ["switch", "switches"]
, ["fix", "fixes"]
, ["box", "boxes"]
, ["process", "processes"]
, ["address", "addresses"]
, ["wish", "wishes"]
, ["status", "statuses"]
, ["alias", "aliases"]
, ["basis", "bases"]
, ["diagnosis", "diagnoses"]
, ["bus", "buses"]
];
sInflections = [
["stack", "stacks"]
, ["shoe", "shoes"]
, ["status_code", "status_codes"]
, ["case", "cases"]
, ["edge", "edges"]
, ["archive", "archives"]
, ["experience", "experiences"]
, ["day", "days"]
, ["comment", "comments"]
, ["foobar", "foobars"]
, ["newsletter", "newsletters"]
, ["old_news", "old_news"]
, ["perspective", "perspectives"]
, ["diagnosis_a", "diagnosis_as"]
, ["horse", "horses"]
, ["prize", "prizes"]
];
iesInflections = [
["category", "categories"]
, ["query", "queries"]
, ["ability", "abilities"]
, ["agency", "agencies"]
];
vesInflections = [
["wife", "wives"]
, ["safe", "saves"]
, ["half", "halves"]
, ["elf", "elves"]
, ["dwarf", "dwarves"]
];
icesInflections = [
["index", "indices"]
, ["vertex", "vertices"]
, ["matrix", "matrices"]
];
renInflections = [
["node_child", "node_children"]
, ["child", "children"]
];
oesInflections = [
["buffalo", "buffaloes"]
, ["tomato", "tomatoes"]
];
iInflections = [
["octopus", "octopi"]
, ["virus", "viri"]
];
genInflections = [
["salesperson", "salespeople"]
, ["person", "people"]
, ["spokesman", "spokesmen"]
, ["man", "men"]
, ["woman", "women"]
];
irregularInflections = [
["datum", "data"]
, ["medium", "media"]
, ["ox", "oxen"]
, ["cow", "kine"]
, ["mouse", "mice"]
, ["louse", "lice"]
, ["axis", "axes"]
, ["testis", "testes"]
, ["crisis", "crises"]
, ["analysis", "analyses"]
, ["quiz", "quizzes"]
];
noInflections = [
["fish", "fish"]
, ["news", "news"]
, ["series", "series"]
, ["species", "species"]
, ["rice", "rice"]
, ["information", "information"]
, ["equipment", "equipment"]
];
tests = {
'test es plural words for inflection': function () {
var i = esInflections.length
, value;
while (--i >= 0) {
value = esInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test es singular words for inflection': function () {
var i = esInflections.length
, value;
while (--i >= 0) {
value = esInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test s plural words for inflection': function () {
var i = sInflections.length
, value;
while (--i >= 0) {
value = sInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test s singular words for inflection': function () {
var i = sInflections.length
, value;
while (--i >= 0) {
value = sInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test ies plural words for inflection': function () {
var i = iesInflections.length
, value;
while (--i >= 0) {
value = iesInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test ies singular words for inflection': function () {
var i = iesInflections.length
, value;
while (--i >= 0) {
value = iesInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test ves plural words for inflection': function () {
var i = vesInflections.length
, value;
while (--i >= 0) {
value = vesInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test ves singular words for inflection': function () {
var i = vesInflections.length
, value;
while (--i >= 0) {
value = vesInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test ices plural words for inflection': function () {
var i = icesInflections.length
, value;
while (--i >= 0) {
value = icesInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test ices singular words for inflection': function () {
var i = icesInflections.length
, value;
while (--i >= 0) {
value = icesInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test ren plural words for inflection': function () {
var i = renInflections.length
, value;
while (--i >= 0) {
value = renInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test ren singular words for inflection': function () {
var i = renInflections.length
, value;
while (--i >= 0) {
value = renInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test oes plural words for inflection': function () {
var i = oesInflections.length
, value;
while (--i >= 0) {
value = oesInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test oes singular words for inflection': function () {
var i = oesInflections.length
, value;
while (--i >= 0) {
value = oesInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test i plural words for inflection': function () {
var i = iInflections.length
, value;
while (--i >= 0) {
value = iInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test i singular words for inflection': function () {
var i = iInflections.length
, value;
while (--i >= 0) {
value = iInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test gender and people plural words for inflection': function () {
var i = genInflections.length
, value;
while (--i >= 0) {
value = genInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test gender and people singular words for inflection': function () {
var i = genInflections.length
, value;
while (--i >= 0) {
value = genInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test irregular plural words for inflection': function () {
var i = irregularInflections.length
, value;
while (--i >= 0) {
value = irregularInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test irregular singular words for inflection': function () {
var i = irregularInflections.length
, value;
while (--i >= 0) {
value = irregularInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
, 'test no change plural words for inflection': function () {
var i = noInflections.length
, value;
while (--i >= 0) {
value = noInflections[i];
assert.equal(value[1], inflection.pluralize(value[0]))
}
}
, 'test no change singular words for inflection': function () {
var i = noInflections.length
, value;
while (--i >= 0) {
value = noInflections[i];
assert.equal(value[0], inflection.singularize(value[1]))
}
}
};
module.exports = tests;