use v6.d;
use MaildirIndexer::Index;
unit class TestIndex does MaildirIndexer::Index;
has %.mails;
has $.name = 'test index';
has @.responses = ( Mailbox.new(:name('foo'),:1confidence) xx 10 );
has atomicint $!seen = 0;
has Int $.expect;
has $.seen-all;
has $!seen-all-vow;
method set-expect(Int:D $!expect) {
$!seen ⚛= 0;
$!seen-all = Promise.new;
$!seen-all-vow = $!seen-all.vow;
}
method add-mail(MaildirIndexer::Email:D $email, Str:D $mailbox --> Nil) {
%.mails{$mailbox}{$email.path}=1;
++⚛$!seen;
if ($!seen == $!expect) {
$!seen-all-vow.keep(True)
}
}
method del-path(IO:D $path, Str:D $mailbox --> Nil) {
%.mails{$mailbox}{$path}:delete;
}
method mailbox-for-email(MaildirIndexer::Email:D $email --> Mailbox) {
return @!responses.shift;
}