- my @q = map { (0, $_) } $mt->rootset;
- while (@q) {
- my $level = shift @q;
- my $node = shift @q or next;
- $check .= (" "x$level) . $node->messageid . "\n";
- unshift @q, $level + 1, $node->child, $level, $node->next;
+my @backwards = (
+ { mid => 1, references => '<2> <3> <4>' },
+ { mid => 4, references => '<2> <3>' },
+ { mid => 5, references => '<6> <7> <8> <3> <2>' },
+ { mid => 9, references => '<6> <3>' },
+ { mid => 10, references => '<8> <7> <6>' },
+ { mid => 2, references => '<6> <7> <8> <3>' },
+ { mid => 3, references => '<6> <7> <8>' },
+ { mid => 6, references => '<8> <7>' },
+ { mid => 7, references => '<8>' },
+ { mid => 8, references => '' }
+);
+
+($simples, $smsgs) = make_objs(@backwards);
+my $backward = thread_to_s($smsgs);
+SKIP: {
+ skip 'Mail::Thread missing', 1 unless $mt;
+ check_mt($backward, $simples, 'matches Mail::Thread backwards');
+}
+($simples, $smsgs) = make_objs(reverse @backwards);
+my $forward = thread_to_s($smsgs);
+unless ('Mail::Thread sorts by Date') {
+ SKIP: {
+ skip 'Mail::Thread missing', 1 unless $mt;
+ check_mt($forward, $simples, 'matches Mail::Thread forwards');