mirror of https://github.com/rails/rails
Extract InflectorTestCases so both inflector and string inflections tests can use them.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7655 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
935f821537
commit
db9b2f5c22
|
@ -1,6 +1,7 @@
|
|||
require 'test/unit'
|
||||
|
||||
$:.unshift "#{File.dirname(__FILE__)}/../lib"
|
||||
$:.unshift File.dirname(__FILE__)
|
||||
require 'active_support'
|
||||
|
||||
# Wrap tests that use Mocha and skip if unavailable.
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
require 'date'
|
||||
require File.dirname(__FILE__) + '/../abstract_unit'
|
||||
require 'inflector_test_cases'
|
||||
|
||||
class StringInflectionsTest < Test::Unit::TestCase
|
||||
include InflectorTestCases
|
||||
|
||||
def test_pluralize
|
||||
InflectorTest::SingularToPlural.each do |singular, plural|
|
||||
SingularToPlural.each do |singular, plural|
|
||||
assert_equal(plural, singular.pluralize)
|
||||
end
|
||||
|
||||
|
@ -11,25 +14,25 @@ class StringInflectionsTest < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_singularize
|
||||
InflectorTest::SingularToPlural.each do |singular, plural|
|
||||
SingularToPlural.each do |singular, plural|
|
||||
assert_equal(singular, plural.singularize)
|
||||
end
|
||||
end
|
||||
|
||||
def test_titleize
|
||||
InflectorTest::MixtureToTitleCase.each do |before, titleized|
|
||||
MixtureToTitleCase.each do |before, titleized|
|
||||
assert_equal(titleized, before.titleize)
|
||||
end
|
||||
end
|
||||
|
||||
def test_camelize
|
||||
InflectorTest::CamelToUnderscore.each do |camel, underscore|
|
||||
CamelToUnderscore.each do |camel, underscore|
|
||||
assert_equal(camel, underscore.camelize)
|
||||
end
|
||||
end
|
||||
|
||||
def test_underscore
|
||||
InflectorTest::CamelToUnderscore.each do |camel, underscore|
|
||||
CamelToUnderscore.each do |camel, underscore|
|
||||
assert_equal(underscore, camel.underscore)
|
||||
end
|
||||
|
||||
|
@ -38,7 +41,7 @@ class StringInflectionsTest < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_underscore_to_lower_camel
|
||||
InflectorTest::UnderscoreToLowerCamel.each do |underscored, lower_camel|
|
||||
UnderscoreToLowerCamel.each do |underscored, lower_camel|
|
||||
assert_equal(lower_camel, underscored.camelize(:lower))
|
||||
end
|
||||
end
|
||||
|
@ -48,29 +51,29 @@ class StringInflectionsTest < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_foreign_key
|
||||
InflectorTest::ClassNameToForeignKeyWithUnderscore.each do |klass, foreign_key|
|
||||
ClassNameToForeignKeyWithUnderscore.each do |klass, foreign_key|
|
||||
assert_equal(foreign_key, klass.foreign_key)
|
||||
end
|
||||
|
||||
InflectorTest::ClassNameToForeignKeyWithoutUnderscore.each do |klass, foreign_key|
|
||||
ClassNameToForeignKeyWithoutUnderscore.each do |klass, foreign_key|
|
||||
assert_equal(foreign_key, klass.foreign_key(false))
|
||||
end
|
||||
end
|
||||
|
||||
def test_tableize
|
||||
InflectorTest::ClassNameToTableName.each do |class_name, table_name|
|
||||
ClassNameToTableName.each do |class_name, table_name|
|
||||
assert_equal(table_name, class_name.tableize)
|
||||
end
|
||||
end
|
||||
|
||||
def test_classify
|
||||
InflectorTest::ClassNameToTableName.each do |class_name, table_name|
|
||||
ClassNameToTableName.each do |class_name, table_name|
|
||||
assert_equal(class_name, table_name.classify)
|
||||
end
|
||||
end
|
||||
|
||||
def test_humanize
|
||||
InflectorTest::UnderscoreToHuman.each do |underscore, human|
|
||||
UnderscoreToHuman.each do |underscore, human|
|
||||
assert_equal(human, underscore.humanize)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
require File.dirname(__FILE__) + '/abstract_unit'
|
||||
require 'inflector_test_cases'
|
||||
|
||||
module Ace
|
||||
module Base
|
||||
|
@ -8,212 +9,7 @@ module Ace
|
|||
end
|
||||
|
||||
class InflectorTest < Test::Unit::TestCase
|
||||
SingularToPlural = {
|
||||
"search" => "searches",
|
||||
"switch" => "switches",
|
||||
"fix" => "fixes",
|
||||
"box" => "boxes",
|
||||
"process" => "processes",
|
||||
"address" => "addresses",
|
||||
"case" => "cases",
|
||||
"stack" => "stacks",
|
||||
"wish" => "wishes",
|
||||
"fish" => "fish",
|
||||
|
||||
"category" => "categories",
|
||||
"query" => "queries",
|
||||
"ability" => "abilities",
|
||||
"agency" => "agencies",
|
||||
"movie" => "movies",
|
||||
|
||||
"archive" => "archives",
|
||||
|
||||
"index" => "indices",
|
||||
|
||||
"wife" => "wives",
|
||||
"safe" => "saves",
|
||||
"half" => "halves",
|
||||
|
||||
"move" => "moves",
|
||||
|
||||
"salesperson" => "salespeople",
|
||||
"person" => "people",
|
||||
|
||||
"spokesman" => "spokesmen",
|
||||
"man" => "men",
|
||||
"woman" => "women",
|
||||
|
||||
"basis" => "bases",
|
||||
"diagnosis" => "diagnoses",
|
||||
"diagnosis_a" => "diagnosis_as",
|
||||
|
||||
"datum" => "data",
|
||||
"medium" => "media",
|
||||
"analysis" => "analyses",
|
||||
|
||||
"node_child" => "node_children",
|
||||
"child" => "children",
|
||||
|
||||
"experience" => "experiences",
|
||||
"day" => "days",
|
||||
|
||||
"comment" => "comments",
|
||||
"foobar" => "foobars",
|
||||
"newsletter" => "newsletters",
|
||||
|
||||
"old_news" => "old_news",
|
||||
"news" => "news",
|
||||
|
||||
"series" => "series",
|
||||
"species" => "species",
|
||||
|
||||
"quiz" => "quizzes",
|
||||
|
||||
"perspective" => "perspectives",
|
||||
|
||||
"ox" => "oxen",
|
||||
"photo" => "photos",
|
||||
"buffalo" => "buffaloes",
|
||||
"tomato" => "tomatoes",
|
||||
"dwarf" => "dwarves",
|
||||
"elf" => "elves",
|
||||
"information" => "information",
|
||||
"equipment" => "equipment",
|
||||
"bus" => "buses",
|
||||
"status" => "statuses",
|
||||
"status_code" => "status_codes",
|
||||
"mouse" => "mice",
|
||||
|
||||
"louse" => "lice",
|
||||
"house" => "houses",
|
||||
"octopus" => "octopi",
|
||||
"virus" => "viri",
|
||||
"alias" => "aliases",
|
||||
"portfolio" => "portfolios",
|
||||
|
||||
"vertex" => "vertices",
|
||||
"matrix" => "matrices",
|
||||
"matrix_fu" => "matrix_fus",
|
||||
|
||||
"axis" => "axes",
|
||||
"testis" => "testes",
|
||||
"crisis" => "crises",
|
||||
|
||||
"rice" => "rice",
|
||||
"shoe" => "shoes",
|
||||
|
||||
"horse" => "horses",
|
||||
"prize" => "prizes",
|
||||
"edge" => "edges",
|
||||
|
||||
"cow" => "kine"
|
||||
}
|
||||
|
||||
CamelToUnderscore = {
|
||||
"Product" => "product",
|
||||
"SpecialGuest" => "special_guest",
|
||||
"ApplicationController" => "application_controller",
|
||||
"Area51Controller" => "area51_controller"
|
||||
}
|
||||
|
||||
UnderscoreToLowerCamel = {
|
||||
"product" => "product",
|
||||
"special_guest" => "specialGuest",
|
||||
"application_controller" => "applicationController",
|
||||
"area51_controller" => "area51Controller"
|
||||
}
|
||||
|
||||
CamelToUnderscoreWithoutReverse = {
|
||||
"HTMLTidy" => "html_tidy",
|
||||
"HTMLTidyGenerator" => "html_tidy_generator",
|
||||
"FreeBSD" => "free_bsd",
|
||||
"HTML" => "html",
|
||||
}
|
||||
|
||||
CamelWithModuleToUnderscoreWithSlash = {
|
||||
"Admin::Product" => "admin/product",
|
||||
"Users::Commission::Department" => "users/commission/department",
|
||||
"UsersSection::CommissionDepartment" => "users_section/commission_department",
|
||||
}
|
||||
|
||||
ClassNameToForeignKeyWithUnderscore = {
|
||||
"Person" => "person_id",
|
||||
"MyApplication::Billing::Account" => "account_id"
|
||||
}
|
||||
|
||||
ClassNameToForeignKeyWithoutUnderscore = {
|
||||
"Person" => "personid",
|
||||
"MyApplication::Billing::Account" => "accountid"
|
||||
}
|
||||
|
||||
ClassNameToTableName = {
|
||||
"PrimarySpokesman" => "primary_spokesmen",
|
||||
"NodeChild" => "node_children"
|
||||
}
|
||||
|
||||
UnderscoreToHuman = {
|
||||
"employee_salary" => "Employee salary",
|
||||
"employee_id" => "Employee",
|
||||
"underground" => "Underground"
|
||||
}
|
||||
|
||||
MixtureToTitleCase = {
|
||||
'active_record' => 'Active Record',
|
||||
'ActiveRecord' => 'Active Record',
|
||||
'action web service' => 'Action Web Service',
|
||||
'Action Web Service' => 'Action Web Service',
|
||||
'Action web service' => 'Action Web Service',
|
||||
'actionwebservice' => 'Actionwebservice',
|
||||
'Actionwebservice' => 'Actionwebservice'
|
||||
}
|
||||
|
||||
OrdinalNumbers = {
|
||||
"0" => "0th",
|
||||
"1" => "1st",
|
||||
"2" => "2nd",
|
||||
"3" => "3rd",
|
||||
"4" => "4th",
|
||||
"5" => "5th",
|
||||
"6" => "6th",
|
||||
"7" => "7th",
|
||||
"8" => "8th",
|
||||
"9" => "9th",
|
||||
"10" => "10th",
|
||||
"11" => "11th",
|
||||
"12" => "12th",
|
||||
"13" => "13th",
|
||||
"14" => "14th",
|
||||
"20" => "20th",
|
||||
"21" => "21st",
|
||||
"22" => "22nd",
|
||||
"23" => "23rd",
|
||||
"24" => "24th",
|
||||
"100" => "100th",
|
||||
"101" => "101st",
|
||||
"102" => "102nd",
|
||||
"103" => "103rd",
|
||||
"104" => "104th",
|
||||
"110" => "110th",
|
||||
"111" => "111th",
|
||||
"112" => "112th",
|
||||
"113" => "113th",
|
||||
"1000" => "1000th",
|
||||
"1001" => "1001st"
|
||||
}
|
||||
|
||||
UnderscoresToDashes = {
|
||||
"street" => "street",
|
||||
"street_address" => "street-address",
|
||||
"person_street_address" => "person-street-address"
|
||||
}
|
||||
|
||||
Irregularities = {
|
||||
'person' => 'people',
|
||||
'man' => 'men',
|
||||
'child' => 'children',
|
||||
'sex' => 'sexes',
|
||||
'move' => 'moves',
|
||||
}
|
||||
include InflectorTestCases
|
||||
|
||||
def test_pluralize_plurals
|
||||
assert_equal "plurals", Inflector.pluralize("plurals")
|
||||
|
|
|
@ -0,0 +1,208 @@
|
|||
module InflectorTestCases
|
||||
SingularToPlural = {
|
||||
"search" => "searches",
|
||||
"switch" => "switches",
|
||||
"fix" => "fixes",
|
||||
"box" => "boxes",
|
||||
"process" => "processes",
|
||||
"address" => "addresses",
|
||||
"case" => "cases",
|
||||
"stack" => "stacks",
|
||||
"wish" => "wishes",
|
||||
"fish" => "fish",
|
||||
|
||||
"category" => "categories",
|
||||
"query" => "queries",
|
||||
"ability" => "abilities",
|
||||
"agency" => "agencies",
|
||||
"movie" => "movies",
|
||||
|
||||
"archive" => "archives",
|
||||
|
||||
"index" => "indices",
|
||||
|
||||
"wife" => "wives",
|
||||
"safe" => "saves",
|
||||
"half" => "halves",
|
||||
|
||||
"move" => "moves",
|
||||
|
||||
"salesperson" => "salespeople",
|
||||
"person" => "people",
|
||||
|
||||
"spokesman" => "spokesmen",
|
||||
"man" => "men",
|
||||
"woman" => "women",
|
||||
|
||||
"basis" => "bases",
|
||||
"diagnosis" => "diagnoses",
|
||||
"diagnosis_a" => "diagnosis_as",
|
||||
|
||||
"datum" => "data",
|
||||
"medium" => "media",
|
||||
"analysis" => "analyses",
|
||||
|
||||
"node_child" => "node_children",
|
||||
"child" => "children",
|
||||
|
||||
"experience" => "experiences",
|
||||
"day" => "days",
|
||||
|
||||
"comment" => "comments",
|
||||
"foobar" => "foobars",
|
||||
"newsletter" => "newsletters",
|
||||
|
||||
"old_news" => "old_news",
|
||||
"news" => "news",
|
||||
|
||||
"series" => "series",
|
||||
"species" => "species",
|
||||
|
||||
"quiz" => "quizzes",
|
||||
|
||||
"perspective" => "perspectives",
|
||||
|
||||
"ox" => "oxen",
|
||||
"photo" => "photos",
|
||||
"buffalo" => "buffaloes",
|
||||
"tomato" => "tomatoes",
|
||||
"dwarf" => "dwarves",
|
||||
"elf" => "elves",
|
||||
"information" => "information",
|
||||
"equipment" => "equipment",
|
||||
"bus" => "buses",
|
||||
"status" => "statuses",
|
||||
"status_code" => "status_codes",
|
||||
"mouse" => "mice",
|
||||
|
||||
"louse" => "lice",
|
||||
"house" => "houses",
|
||||
"octopus" => "octopi",
|
||||
"virus" => "viri",
|
||||
"alias" => "aliases",
|
||||
"portfolio" => "portfolios",
|
||||
|
||||
"vertex" => "vertices",
|
||||
"matrix" => "matrices",
|
||||
"matrix_fu" => "matrix_fus",
|
||||
|
||||
"axis" => "axes",
|
||||
"testis" => "testes",
|
||||
"crisis" => "crises",
|
||||
|
||||
"rice" => "rice",
|
||||
"shoe" => "shoes",
|
||||
|
||||
"horse" => "horses",
|
||||
"prize" => "prizes",
|
||||
"edge" => "edges",
|
||||
|
||||
"cow" => "kine"
|
||||
}
|
||||
|
||||
CamelToUnderscore = {
|
||||
"Product" => "product",
|
||||
"SpecialGuest" => "special_guest",
|
||||
"ApplicationController" => "application_controller",
|
||||
"Area51Controller" => "area51_controller"
|
||||
}
|
||||
|
||||
UnderscoreToLowerCamel = {
|
||||
"product" => "product",
|
||||
"special_guest" => "specialGuest",
|
||||
"application_controller" => "applicationController",
|
||||
"area51_controller" => "area51Controller"
|
||||
}
|
||||
|
||||
CamelToUnderscoreWithoutReverse = {
|
||||
"HTMLTidy" => "html_tidy",
|
||||
"HTMLTidyGenerator" => "html_tidy_generator",
|
||||
"FreeBSD" => "free_bsd",
|
||||
"HTML" => "html",
|
||||
}
|
||||
|
||||
CamelWithModuleToUnderscoreWithSlash = {
|
||||
"Admin::Product" => "admin/product",
|
||||
"Users::Commission::Department" => "users/commission/department",
|
||||
"UsersSection::CommissionDepartment" => "users_section/commission_department",
|
||||
}
|
||||
|
||||
ClassNameToForeignKeyWithUnderscore = {
|
||||
"Person" => "person_id",
|
||||
"MyApplication::Billing::Account" => "account_id"
|
||||
}
|
||||
|
||||
ClassNameToForeignKeyWithoutUnderscore = {
|
||||
"Person" => "personid",
|
||||
"MyApplication::Billing::Account" => "accountid"
|
||||
}
|
||||
|
||||
ClassNameToTableName = {
|
||||
"PrimarySpokesman" => "primary_spokesmen",
|
||||
"NodeChild" => "node_children"
|
||||
}
|
||||
|
||||
UnderscoreToHuman = {
|
||||
"employee_salary" => "Employee salary",
|
||||
"employee_id" => "Employee",
|
||||
"underground" => "Underground"
|
||||
}
|
||||
|
||||
MixtureToTitleCase = {
|
||||
'active_record' => 'Active Record',
|
||||
'ActiveRecord' => 'Active Record',
|
||||
'action web service' => 'Action Web Service',
|
||||
'Action Web Service' => 'Action Web Service',
|
||||
'Action web service' => 'Action Web Service',
|
||||
'actionwebservice' => 'Actionwebservice',
|
||||
'Actionwebservice' => 'Actionwebservice'
|
||||
}
|
||||
|
||||
OrdinalNumbers = {
|
||||
"0" => "0th",
|
||||
"1" => "1st",
|
||||
"2" => "2nd",
|
||||
"3" => "3rd",
|
||||
"4" => "4th",
|
||||
"5" => "5th",
|
||||
"6" => "6th",
|
||||
"7" => "7th",
|
||||
"8" => "8th",
|
||||
"9" => "9th",
|
||||
"10" => "10th",
|
||||
"11" => "11th",
|
||||
"12" => "12th",
|
||||
"13" => "13th",
|
||||
"14" => "14th",
|
||||
"20" => "20th",
|
||||
"21" => "21st",
|
||||
"22" => "22nd",
|
||||
"23" => "23rd",
|
||||
"24" => "24th",
|
||||
"100" => "100th",
|
||||
"101" => "101st",
|
||||
"102" => "102nd",
|
||||
"103" => "103rd",
|
||||
"104" => "104th",
|
||||
"110" => "110th",
|
||||
"111" => "111th",
|
||||
"112" => "112th",
|
||||
"113" => "113th",
|
||||
"1000" => "1000th",
|
||||
"1001" => "1001st"
|
||||
}
|
||||
|
||||
UnderscoresToDashes = {
|
||||
"street" => "street",
|
||||
"street_address" => "street-address",
|
||||
"person_street_address" => "person-street-address"
|
||||
}
|
||||
|
||||
Irregularities = {
|
||||
'person' => 'people',
|
||||
'man' => 'men',
|
||||
'child' => 'children',
|
||||
'sex' => 'sexes',
|
||||
'move' => 'moves',
|
||||
}
|
||||
end
|
Loading…
Reference in New Issue