+$ibx->with_umask(sub {
+ my $s = 'foo://'. ('Circle' x 15).'/foo';
+ my $doc_id = $rw->add_message(PublicInbox::MIME->new(<<EOF));
+Subject: $s
+Date: Sat, 02 Oct 2010 00:00:01 +0000
+Message-ID: <circle\@a>
+References: <circle\@a>
+In-Reply-To: <circle\@a>
+From: Circle <circle\@example.com>
+To: list\@example.com
+
+LOOP!
+EOF
+ ok($doc_id > 0, "doc_id defined with circular reference");
+ my $smsg = $rw->query('m:circle@a', {limit=>1})->[0];
+ is(defined($smsg), 1, 'found m:circl@a');
+ is($smsg->references, '', "no references created") if defined($smsg);
+ is($smsg->subject, $s, 'long subject not rewritten') if defined($smsg);
+});
+
+$ibx->with_umask(sub {
+ my $eml = 't/utf8.eml';
+ my $mime = PublicInbox::InboxWritable::mime_from_path($eml) or
+ die "open $eml: $!";
+ my $doc_id = $rw->add_message($mime);
+ ok($doc_id > 0, 'message indexed doc_id with UTF-8');
+ my $msg = $rw->query('m:testmessage@example.com', {limit => 1})->[0];
+ is(defined($msg), 1, 'found testmessage@example.com');
+ is($mime->header('Subject'), $msg->subject, 'UTF-8 subject preserved') if defined($msg);
+});
+
+{
+ my $msgs = $ro->query('d:19931002..20101002');
+ ok(scalar(@$msgs) > 0, 'got results within range');
+ $msgs = $ro->query('d:20101003..');
+ is(scalar(@$msgs), 0, 'nothing after 20101003');
+ $msgs = $ro->query('d:..19931001');
+ is(scalar(@$msgs), 0, 'nothing before 19931001');
+}
+
+# names and addresses
+{
+ my $mset = $ro->query('t:list@example.com', {mset => 1});
+ is($mset->size, 6, 'searched To: successfully');
+ foreach my $m ($mset->items) {
+ my $smsg = $ro->{over_ro}->get_art($m->get_docid);
+ like($smsg->to, qr/\blist\@example\.com\b/, 'to appears');
+ }
+
+ $mset = $ro->query('tc:list@example.com', {mset => 1});
+ is($mset->size, 6, 'searched To+Cc: successfully');
+ foreach my $m ($mset->items) {
+ my $smsg = $ro->{over_ro}->get_art($m->get_docid);
+ my $tocc = join("\n", $smsg->to, $smsg->cc);
+ like($tocc, qr/\blist\@example\.com\b/, 'tocc appears');
+ }
+
+ foreach my $pfx ('tcf:', 'c:') {
+ my $mset = $ro->query($pfx . 'foo@example.com', { mset => 1 });
+ is($mset->items, 1, "searched $pfx successfully for Cc:");
+ foreach my $m ($mset->items) {
+ my $smsg = $ro->{over_ro}->get_art($m->get_docid);
+ like($smsg->cc, qr/\bfoo\@example\.com\b/,
+ 'cc appears');
+ }
+ }
+
+ foreach my $pfx ('', 'tcf:', 'f:') {
+ my $res = $ro->query($pfx . 'Laggy');
+ is(scalar(@$res), 1,
+ "searched $pfx successfully for From:");
+ foreach my $smsg (@$res) {
+ like($smsg->from_name, qr/Laggy Sender/,
+ "From appears with $pfx");
+ }
+ }
+}
+