require 'test/unit' $KCODE = 'none' class TestStringchar < Test::Unit::TestCase def test_string assert_equal("abcd", "abcd") assert("abcd" =~ /abcd/) assert("abcd" === "abcd") # compile time string concatenation assert_equal("ab" "cd", "abcd") assert_equal("#{22}aa" "cd#{44}", "22aacd44") assert_equal("#{22}aa" "cd#{44}" "55" "#{66}", "22aacd445566") assert("abc" !~ /^$/) assert("abc\n" !~ /^$/) assert("abc" !~ /^d*$/) assert_equal(("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 = <'), "") end def test_char # character constants(assumes ASCII) assert_equal("a"[0], ?a) assert_equal(?a, ?a) assert_equal(?\C-a, 1) assert_equal(?\M-a, 225) assert_equal(?\M-\C-a, 129) assert_equal("a".upcase![0], ?A) assert_equal("A".downcase![0], ?a) assert_equal("abc".tr!("a-z", "A-Z"), "ABC") assert_equal("aabbcccc".tr_s!("a-z", "A-Z"), "ABC") assert_equal("abcc".squeeze!("a-z"), "abc") assert_equal("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_equal(s, "another string") s = <