#!perl
use Cassandane::Tiny;

#
# Test that
#  - more than 32 flags can be searched for
#  - no more can be used
#
sub test_search_allflags ($self)
{
    my $talk = $self->{store}->get_client();
    $self->{store}->_select();
    $self->assert_num_equals(1, $talk->uid());
    $self->{store}->set_fetch_attributes(qw(uid flags));

    xlog $self, "Add messages and flags";

    my %msg;
    for (my $i = 1 ; $i <= MAX_USER_FLAGS ; $i++)
    {
        my $flag = "flag$i";
        $msg{$i} = $self->make_message("Message $i");
        xlog $self, "Set $flag on message $i";
        my $res = $talk->store($i, '+flags', "($flag)");
        $self->assert_deep_equals({ "$i" => { 'flags' => [
                                        '\\Recent', $flag
                                  ]}}, $res);
    }

    # for debugging
    $talk->fetch('1:*', '(uid flags)');

    for (my $i = 1 ; $i <= MAX_USER_FLAGS ; $i++) {
        xlog $self, "Can search for flag $i";
        my $uids = $talk->search("keyword", "flag$i");
        $self->assert_equals(1, scalar(@$uids));
        $self->assert_equals($i, $uids->[0]);
    }
}
