1 # Copyright (C) 2016 all contributors <meta@public-inbox.org>
2 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
6 use_ok('PublicInbox::SearchMsg');
7 use_ok('PublicInbox::SearchThread');
12 $Mail::Thread::nosubject = 1;
13 $Mail::Thread::noprune = 1;
18 $msg->{references} =~ s/\s+/ /sg if $msg->{references};
19 my $simple = Email::Simple->create(header => [
20 'Message-Id' => "<$msg->{mid}>",
21 'References' => $msg->{references},
24 bless $msg, 'PublicInbox::SearchMsg'
27 # data from t/testbox-6 in Mail::Thread 2.55:
28 { mid => '20021124145312.GA1759@nlin.net' },
29 { mid => 'slrnau448m.7l4.markj+0111@cloaked.freeserve.co.uk',
30 references => '<20021124145312.GA1759@nlin.net>',
32 { mid => '15842.10677.577458.656565@jupiter.akutech-local.de',
33 references => '<20021124145312.GA1759@nlin.net>
34 <slrnau448m.7l4.markj+0111@cloaked.freeserve.co.uk>',
36 { mid => '20021125171807.GK8236@somanetworks.com',
37 references => '<20021124145312.GA1759@nlin.net>
38 <slrnau448m.7l4.markj+0111@cloaked.freeserve.co.uk>
39 <15842.10677.577458.656565@jupiter.akutech-local.de>',
41 { mid => '15843.12163.554914.469248@jupiter.akutech-local.de',
42 references => '<20021124145312.GA1759@nlin.net>
43 <slrnau448m.7l4.markj+0111@cloaked.freeserve.co.uk>
44 <15842.10677.577458.656565@jupiter.akutech-local.de>
45 <E18GPHf-0000zp-00@cloaked.freeserve.co.uk>',
47 { mid => 'E18GPHf-0000zp-00@cloaked.freeserve.co.uk',
48 references => '<20021124145312.GA1759@nlin.net>
49 <slrnau448m.7l4.markj+0111@cloaked.freeserve.co.uk>
50 <15842.10677.577458.656565@jupiter.akutech-local.de>'
54 my $th = PublicInbox::SearchThread->new(\@msgs);
56 $th->order(sub { [ sort { $a->{id} cmp $b->{id} } @{$_[0]} ] });
58 my @q = map { (0, $_) } @{$th->{rootset}};
61 my $node = shift @q or next;
62 $st .= (" "x$level). "$node->{id}\n";
64 unshift @q, map { ($cl, $_) } @{$node->{children}}
68 skip 'Mail::Thread missing', 1 unless $mt;
69 $mt = Mail::Thread->new(@check);
71 $mt->order(sub { sort { $a->messageid cmp $b->messageid } @_ });
74 @q = map { (0, $_) } $mt->rootset;
77 my $node = shift @q or next;
78 $check .= (" "x$level) . $node->messageid . "\n";
79 unshift @q, $level + 1, $node->child, $level, $node->next;
81 is($check, $st, 'Mail::Thread output matches');