instiki/vendor/rails/activesupport/test/core_ext/string_ext_test.rb
Jacques Distler c358389f25 TeX and CSS tweaks.
Sync with latest Instiki Trunk
(Updates Rails to 1.2.2)
2007-02-09 02:04:31 -06:00

153 lines
3.8 KiB
Ruby

require 'date'
require File.dirname(__FILE__) + '/../abstract_unit'
class StringInflectionsTest < Test::Unit::TestCase
def test_pluralize
InflectorTest::SingularToPlural.each do |singular, plural|
assert_equal(plural, singular.pluralize)
end
assert_equal("plurals", "plurals".pluralize)
end
def test_singularize
InflectorTest::SingularToPlural.each do |singular, plural|
assert_equal(singular, plural.singularize)
end
end
def test_titleize
InflectorTest::MixtureToTitleCase.each do |before, titleized|
assert_equal(titleized, before.titleize)
end
end
def test_camelize
InflectorTest::CamelToUnderscore.each do |camel, underscore|
assert_equal(camel, underscore.camelize)
end
end
def test_underscore
InflectorTest::CamelToUnderscore.each do |camel, underscore|
assert_equal(underscore, camel.underscore)
end
assert_equal "html_tidy", "HTMLTidy".underscore
assert_equal "html_tidy_generator", "HTMLTidyGenerator".underscore
end
def test_underscore_to_lower_camel
InflectorTest::UnderscoreToLowerCamel.each do |underscored, lower_camel|
assert_equal(lower_camel, underscored.camelize(:lower))
end
end
def test_demodulize
assert_equal "Account", "MyApplication::Billing::Account".demodulize
end
def test_foreign_key
InflectorTest::ClassNameToForeignKeyWithUnderscore.each do |klass, foreign_key|
assert_equal(foreign_key, klass.foreign_key)
end
InflectorTest::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|
assert_equal(table_name, class_name.tableize)
end
end
def test_classify
InflectorTest::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|
assert_equal(human, underscore.humanize)
end
end
def test_string_to_time
assert_equal Time.utc(2005, 2, 27, 23, 50), "2005-02-27 23:50".to_time
assert_equal Time.local(2005, 2, 27, 23, 50), "2005-02-27 23:50".to_time(:local)
assert_equal Date.new(2005, 2, 27), "2005-02-27".to_date
end
def test_access
s = "hello"
assert_equal "h", s.at(0)
assert_equal "llo", s.from(2)
assert_equal "hel", s.to(2)
assert_equal "h", s.first
assert_equal "he", s.first(2)
assert_equal "o", s.last
assert_equal "llo", s.last(3)
assert_equal "hello", s.last(10)
assert_equal 'x', 'x'.first
assert_equal 'x', 'x'.first(4)
assert_equal 'x', 'x'.last
assert_equal 'x', 'x'.last(4)
end
def test_access_returns_a_real_string
hash = {}
hash["h"] = true
hash["hello123".at(0)] = true
assert_equal %w(h), hash.keys
hash = {}
hash["llo"] = true
hash["hello".from(2)] = true
assert_equal %w(llo), hash.keys
hash = {}
hash["hel"] = true
hash["hello".to(2)] = true
assert_equal %w(hel), hash.keys
hash = {}
hash["hello"] = true
hash["123hello".last(5)] = true
assert_equal %w(hello), hash.keys
hash = {}
hash["hello"] = true
hash["hello123".first(5)] = true
assert_equal %w(hello), hash.keys
end
def test_starts_ends_with
s = "hello"
assert s.starts_with?('h')
assert s.starts_with?('hel')
assert !s.starts_with?('el')
assert s.ends_with?('o')
assert s.ends_with?('lo')
assert !s.ends_with?('el')
end
def test_each_char_with_utf8_string_when_kcode_is_utf8
old_kcode, $KCODE = $KCODE, 'UTF8'
'€2.99'.each_char do |char|
assert_not_equal 1, char.length
break
end
ensure
$KCODE = old_kcode
end
end