#!perl
use strict;
use utf8;
use Test::More;
use Encode;
BEGIN
{
use_ok("Text::MeCab");
}
my $data = {
taro => encode(Text::MeCab::ENCODING, "太郎は次郎が持っている本を花子に渡した。"),
sumomo => encode(Text::MeCab::ENCODING, "すもももももももものうち。"),
};
my $mecab = Text::MeCab->new;
my ($node_A, $node_B);
{
my $node_A_orig = $mecab->parse($data->{taro});
ok($node_A_orig, "Original node A OK");
$node_A = $node_A_orig->dclone;
ok $node_A, "Clone Node A successful";
my $node = $node_A;
while ( $node_A_orig ) {
check_node( $node, $node_A_orig );
$node = $node->next;
$node_A_orig = $node_A_orig->next;
}
}
{
my $node_B_orig = $mecab->parse($data->{sumomo});
ok($node_B_orig, "Original node B OK");
$node_B = $node_B_orig->dclone;
ok $node_B, "Clone Node B successful";
my $node = $node_B;
while ( $node_B_orig ) {
check_node( $node, $node_B_orig );
$node = $node->next;
$node_B_orig = $node_B_orig->next;
}
}
# finally, make sure that node_A, node_B are NOT identical
ok $node_A;
ok $node_B;
isnt $node_A->surface, $node_B->surface;
done_testing();
sub check_node {
my ($clone, $orig) = @_;
if (ok($clone, "Deep clone node OK")) {
note $clone->surface;
}
isa_ok($clone, "Text::MeCab::Node::Cloned", "Deep clone node isa OK");
is $clone->surface, $orig->surface;
}