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