require 'test/unit' $KCODE = 'none' class TestStringchar < Test::Unit::TestCase def test_stringchar assert("abcd" == "abcd") assert("abcd" =~ /abcd/) assert("abcd" === "abcd") # compile time string concatenation assert("ab" "cd" == "abcd") assert("#{22}aa" "cd#{44}" == "22aacd44") assert("#{22}aa" "cd#{44}" "55" "#{66}" == "22aacd445566") assert("abc" !~ /^$/) assert("abc\n" !~ /^$/) assert("abc" !~ /^d*$/) assert(("abc" =~ /d*$/) == 3) assert("" =~ /^$/) assert("\n" =~ /^$/) assert("a\n\n" =~ /^$/) assert("abcabc" =~ /.*a/ && $& == "abca") assert("abcabc" =~ /.*c/ && $& == "abcabc") assert("abcabc" =~ /.*?a/ && $& == "a") assert("abcabc" =~ /.*?c/ && $& == "abc") assert(/(.|\n)*?\n(b|\n)/ =~ "a\nb\n\n" && $& == "a\nb") assert(/^(ab+)+b/ =~ "ababb" && $& == "ababb") assert(/^(?:ab+)+b/ =~ "ababb" && $& == "ababb") assert(/^(ab+)+/ =~ "ababb" && $& == "ababb") assert(/^(?:ab+)+/ =~ "ababb" && $& == "ababb") assert(/(\s+\d+){2}/ =~ " 1 2" && $& == " 1 2") assert(/(?:\s+\d+){2}/ =~ " 1 2" && $& == " 1 2") $x = <') == "") # character constants(assumes ASCII) assert("a"[0] == ?a) assert(?a == ?a) assert(?\C-a == 1) assert(?\M-a == 225) assert(?\M-\C-a == 129) assert("a".upcase![0] == ?A) assert("A".downcase![0] == ?a) assert("abc".tr!("a-z", "A-Z") == "ABC") assert("aabbcccc".tr_s!("a-z", "A-Z") == "ABC") assert("abcc".squeeze!("a-z") == "abc") assert("abcd".delete!("bc") == "ad") $x = "abcdef" $y = [ ?a, ?b, ?c, ?d, ?e, ?f ] $bad = false $x.each_byte {|i| if i != $y.shift $bad = true break end } assert(!$bad) s = "a string" s[0..s.size]="another string" assert(s == "another string") s = <