File: 03_clone.t

package info (click to toggle)
libtext-mecab-perl 0.20013-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 520 kB
  • sloc: perl: 2,637; ansic: 572; makefile: 4
file content (62 lines) | stat: -rw-r--r-- 1,459 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!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;
}