1 2BEGIN { $| = 1; print "1..13\n"; } 3END {print "not ok 1\n" unless $loaded;} 4use String::Multibyte; 5$^W = 1; 6$loaded = 1; 7print "ok 1\n"; 8 9$mb = String::Multibyte->new({ 10 charset => 'sjis_grapheme', 11 regexp => '[\xB3\xB6-\xC4]\xDE|[\xCA-\xCE][\xDE\xDF]|' . 12 '[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]', 13 }, 1); 14 15$NG = 0; 16for ("�����e�X�g", "abc", "�����", "�߰�=Perl", 17 "\001\002\003\000\n", "", " ", '�@') { 18 $NG++ unless $mb->islegal($_); 19} 20print !$NG ? "ok" : "not ok", " 2\n"; 21 22for ("�����������\xFF\xFF", "�ǂ��ɂ������ɂ�\x81\x39", 23 "\x91\x00", "�����\xFF�ǂ�����") { 24 $NG++ unless ! $mb->islegal($_); 25} 26print !$NG ? "ok" : "not ok", " 3\n"; 27 28print $mb->islegal("��", "P", "", "�ݼ� test") 29 && ! $mb->islegal("���{","��kanji","\xA0","PERL") 30 ? "ok" : "not ok", " 4\n"; 31 32print 0 eq $mb->length("") 33 && 3 eq $mb->length("abc") 34 && 4 eq $mb->length("abc\n") 35 && 5 eq $mb->length("�����") 36 && 3 eq $mb->length("�߰�") 37 && 6 eq $mb->length("��") 38 && 10 eq $mb->length("���������Ȃ͂܂���") 39 && 14 eq $mb->length("����������\n\n�͂܂���\n\n") 40 && 9 eq $mb->length('AIUEO���{����') 41 ? "ok" : "not ok", " 5\n"; 42 43$ref = '�����{�������OEUIAoeuia����������'; 44$str = '����������aiueoAIUEO��������{����'; 45 46print $ref eq $mb->strrev($str) 47 ? "ok" : "not ok", " 6\n"; 48 49$ref = '�߰ق��g���ı���ϼ��'; 50$str = '�������Ă��g��ٰ��'; 51 52print $ref eq $mb->strrev($str) 53 ? "ok" : "not ok", " 7\n"; 54 55print $mb->strspn ("XZ\0Z\0Y", "\0X\0YZ") == 6 56 && $mb->strcspn("Perl�͖ʔ����B", "XY\0r") == 2 57 && $mb->strspn ("+0.12345*12", "+-.0123456789") == 8 58 && $mb->strcspn("Perl�͖ʔ����B", "�Ԑ�����") == 6 59 && $mb->strspn ("", "123") == 0 60 && $mb->strcspn("", "123") == 0 61 && $mb->strspn ("����������", "") == 0 62 && $mb->strcspn("����������", "") == 5 63 && $mb->strspn ("���������", "����������") == 2 64 && $mb->strcspn("��ɺ����", "��") == 3 65 && $mb->strspn ("���������", "�����") == 0 66 && $mb->strcspn("���������", "�����") == 2 67 && $mb->strspn ("��ɺ����", "�����") == 1 68 && $mb->strcspn("��ɺ����", "�����") == 0 69 && $mb->strspn ("", "") == 0 70 && $mb->strcspn("", "") == 0 71 ? "ok" : "not ok", " 8\n"; 72 73$str = "�Ȃ�Ƃ�������"; 74print 3 eq $mb->strtr(\$str,"����������", "�A�C�E�G�I") 75 && $str eq "�Ȃ�ƃC�I�E��" 76 ? "ok" : "not ok", " 9\n"; 77 78$digit_tr = $mb->trclosure( 79 "1234567890-", "���O�l�ܘZ������Z�|"); 80 81$frstr1 = "TEL�F0124-45-6789\n"; 82$tostr1 = "TEL�F�Z���l�|�l�܁|�Z������\n"; 83$frstr2 = "FAX�F0124-51-5368\n"; 84$tostr2 = "FAX�F�Z���l�|�܈�|�O�Z��\n"; 85 86$restr1 = &$digit_tr($frstr1); 87$restr2 = &$digit_tr($frstr2); 88 89print $tostr1 eq $restr1 && $tostr2 eq $restr2 90 ? "ok" : "not ok", " 10\n"; 91 92print $mb->index("", "") == 0 93 && $mb->index("", "a") == -1 94 && $mb->index(" ", "") == 0 95 && $mb->index(" ", "", 1) == 1 96 && $mb->index("", " ", 1) == -1 97 && $mb->index(" ", "a", -1) == -1 98 && $mb->index("\x81\x81\x40\x81\x40", "\x81\x40") == 2 99 && $mb->index("�Ĥ���", "���") == 3 100 && $mb->index("�Ĥ��", "���") == -1 101 && $mb->index("�Ĥ���", "��") == 0 102 && $mb->index("��ޤ��", "��") == 3 103 && $mb->index("Ŷ�ޤŶ�", "Ŷ�") == 4 104 && $mb->index("Ŷ�ޤŶ�", "Ŷ��") == 0 105 ? "ok" : "not ok", " 11\n"; 106 107print $mb->rindex("", "") == 0 108 && $mb->rindex("", "a") == -1 109 && $mb->rindex(" ", "") == 1 110 && $mb->rindex(" ", "", 1) == 1 111 && $mb->rindex("", " ", 1) == -1 112 && $mb->rindex(" ", "a", -1) == -1 113 && $mb->rindex("\x81\x81\x40\x81\x40", "\x81\x40") == 2 114 && $mb->rindex("�Ĥ���", "���") == 3 115 && $mb->rindex("�Ĥ��", "���") == -1 116 && $mb->rindex("�Ĥ���", "��") == 0 117 && $mb->rindex("��ޤ��", "��") == 3 118 && $mb->rindex("Ŷ�ޤŶ�", "Ŷ�") == 4 119 && $mb->rindex("Ŷ�ޤŶ�", "Ŷ��") == 0 120 ? "ok" : "not ok", " 12\n"; 121 122print "��:��:��" eq 123 join(':', $mb->strsplit("�", "����")) 124 && "����" eq 125 join(':', $mb->strsplit("�", "����", 1)) 126 && "��:���" eq 127 join(':', $mb->strsplit("�", "����", 2)) 128 && "��:��:��" eq 129 join(':', $mb->strsplit("�", "����", 3)) 130 && "��:��:��" eq 131 join(':', $mb->strsplit("�", "����")) 132 && "��::��:��" eq 133 join(':', $mb->strsplit("�", "�����")) 134 && "��:�:��" eq 135 join(':', $mb->strsplit("�", "�����")) 136 ? "ok" : "not ok", " 13\n"; 137 1381; 139__END__ 140 141