The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use Test;

BEGIN { plan tests => 14 }

require Lingua::ZH::TaBE;
ok($Lingua::ZH::TaBE::VERSION) if $Lingua::ZH::TaBE::VERSION or 1;

my $tabe = Lingua::ZH::TaBE->new;

ok(ref($tabe), 'Lingua::ZH::TaBE', 'blessing TaBE object');

my $tsi = $tabe->Tsi("¨®");

ok( "$tsi", "¨®", 'Tsi stringification' );

ok(
    join(',', $tsi->yins),
    "£¥£­,£¡£º",
    'PossibleTsiYin()',
);

ok(
    $tsi->yins->[0] * 1,
    8216,
    'yins() overload',
);

my $chu = $tabe->Chu("¸¾¹D¤§Ãø¡AÃø©ó¤W«C¤Ñ¡C");
ok(
    join(",", $chu->chunks),
    "¸¾¹D¤§Ãø,¡A,Ãø©ó¤W«C¤Ñ,¡C",
    'PossibleTsiYin()',
);

my $chunk = $chu->chunks->[0];
ok(
    join(",", $chunk->tsis),
    "¸¾¹D,¤§,Ãø",
    'Segmentation',
);

ok(
    $tabe->Chu("¹D¥i¹D¡A«D±`¹D¡C")
        ->chunks->[2]       # «D±`¹D
        ->tsis->[0]         # «D±`
        ->zhis->[1]         # ±`
        ->yins->[0]         # £¥£µ£½
        ->zuyins->[0],      # £¥
    "£¥",
    'tsis->zhis',
);


# ¦Û°ÊÂ_µü
my @words = $tabe->split(
    "·í§Ú­Ì¦b¹q¸£¤¤³B²z¤¤¤å¸ê°T®É,¬Û«H¨ä¤¤³Ì´o¤Hªºª¬ªp¤§¤@,".
    "²ö¹L©ó·Q¥´ªº¦r¥´¤£¥X¨Ó¤F."
);

ok(
    join(",", @words),
    "·í,§Ú­Ì,¦b,¹q¸£,¤¤,³B²z,¤¤¤å,¸ê°T,®É,¬Û«H,¨ä¤¤,³Ì,´o¤H,ªº,ª¬ªp,¤§¤@,²ö¹L©ó,·Q¥´,ªº,¦r,¥´,¤£¥X¨Ó,¤F",
    'split($string)'
);

# ½ÆÂøÂ_µü
@words = $tabe->split(
    "·í§Ú­Ì¦b¹q¸£¤¤³B²z¤¤¤å¸ê°T®É,¬Û«H¨ä¤¤³Ì´o¤Hªºª¬ªp¤§¤@,".
    "²ö¹L©ó·Q¥´ªº¦r¥´¤£¥X¨Ó¤F.", "Complex"
);

ok(
    join(",", @words),
    "·í,§Ú­Ì,¦b,¹q¸£,¤¤,³B²z,¤¤¤å,¸ê°T,®É,¬Û«H,¨ä¤¤,³Ì,´o¤H,ªº,ª¬ªp,¤§¤@,²ö¹L©ó,·Q¥´,ªº,¦r,¥´,¤£¥X,¨Ó¤F",
    'split($string, "Complex")'
);

# °f¦VÂ_µü
@words = $tabe->split(
    "·í§Ú­Ì¦b¹q¸£¤¤³B²z¤¤¤å¸ê°T®É,¬Û«H¨ä¤¤³Ì´o¤Hªºª¬ªp¤§¤@,".
    "²ö¹L©ó·Q¥´ªº¦r¥´¤£¥X¨Ó¤F.", "Backward"
);

ok(
    join(",", @words),
    "·í,§Ú­Ì,¦b,¹q,¸£¤¤,³B²z,¤¤¤å,¸ê°T,®É,¬Û«H,¨ä¤¤,³Ì,´o¤H,ªº,ª¬ªp,¤§¤@,²ö¹L©ó,·Q,¥´ªº,¦r,¥´,¤£¥X,¨Ó¤F",
    'split($string, "Backward")'
);

# ¥i¥Î¼Æ¦r©Î¤å¦r«Ø¥ß Zhi ª«¥ó
ok(
    $tabe->Zhi(42056),
    $tabe->Zhi('¤H'),
    "Zhi() dualvar"
);

# §ä "º~" ªº¦P­µ¦r
ok(
    join(",", $tabe->Zhi('º~')->yins->[0]->zhis),
    "©M,º~,¦½,§ò,²k,¾Ñ,¿«,¾Ù,®«,ÀX,Éä,Ãv,ØF,®Â,åÃ,æc,Õ©,ÊC,Ú¾,Ûr,Óà,¾Z,×÷,ï_,ÑA,ÒT,Õö,àä,ãç,¾g,ë_,ïF,ñp,òF,òù,èu,ö¹",
    "Zhi->yins->zhis()"
);

ok(
    $tabe->ZuYin('£¦')->zhi->yins->[0]->zhis->[0],
    '¥¢',
    "Yin->zhis"
);

1;