+ 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');
+ }
+}
+if ('sorting by Date') {
+ is("\n".$backward, "\n".$forward, 'forward and backward matches');
+}
+
+done_testing();
+
+sub thread_to_s {
+ my ($msgs) = @_;
+ my $rootset = PublicInbox::SearchThread::thread($msgs, sub {
+ [ sort { $a->{mid} cmp $b->{mid} } @{$_[0]} ] });
+ my $st = '';
+ my @q = map { (0, $_) } @$rootset;
+ while (@q) {
+ my $level = shift @q;
+ my $node = shift @q or next;
+ $st .= (" "x$level). "$node->{mid}\n";
+ my $cl = $level + 1;
+ unshift @q, map { ($cl, $_) } @{$node->{children}};
+ }
+ $st;
+}
+
+sub check_mt {
+ my ($st, $simples, $msg) = @_;
+ my $mt = Mail::Thread->new(@$simples);