180d3875d306c60da83e547c573427627911f8a99Makoto Onuki/*
280d3875d306c60da83e547c573427627911f8a99Makoto Onuki * Copyright (C) 2011 The Android Open Source Project
380d3875d306c60da83e547c573427627911f8a99Makoto Onuki *
480d3875d306c60da83e547c573427627911f8a99Makoto Onuki * Licensed under the Apache License, Version 2.0 (the "License");
580d3875d306c60da83e547c573427627911f8a99Makoto Onuki * you may not use this file except in compliance with the License.
680d3875d306c60da83e547c573427627911f8a99Makoto Onuki * You may obtain a copy of the License at
780d3875d306c60da83e547c573427627911f8a99Makoto Onuki *
880d3875d306c60da83e547c573427627911f8a99Makoto Onuki *      http://www.apache.org/licenses/LICENSE-2.0
980d3875d306c60da83e547c573427627911f8a99Makoto Onuki *
1080d3875d306c60da83e547c573427627911f8a99Makoto Onuki * Unless required by applicable law or agreed to in writing, software
1180d3875d306c60da83e547c573427627911f8a99Makoto Onuki * distributed under the License is distributed on an "AS IS" BASIS,
1280d3875d306c60da83e547c573427627911f8a99Makoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1380d3875d306c60da83e547c573427627911f8a99Makoto Onuki * See the License for the specific language governing permissions and
1480d3875d306c60da83e547c573427627911f8a99Makoto Onuki * limitations under the License.
1580d3875d306c60da83e547c573427627911f8a99Makoto Onuki */
1680d3875d306c60da83e547c573427627911f8a99Makoto Onuki
1780d3875d306c60da83e547c573427627911f8a99Makoto Onukipackage com.android.email;
1880d3875d306c60da83e547c573427627911f8a99Makoto Onuki
1980d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport com.android.emailcommon.provider.EmailContent.MailboxColumns;
2080d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport com.android.emailcommon.provider.Mailbox;
2180d3875d306c60da83e547c573427627911f8a99Makoto Onuki
2280d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport android.content.Context;
2380d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport android.database.Cursor;
2480d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport android.database.MatrixCursor;
2580d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport android.graphics.drawable.Drawable;
2680d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport android.test.AndroidTestCase;
2780d3875d306c60da83e547c573427627911f8a99Makoto Onuki
2880d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport java.util.HashSet;
2980d3875d306c60da83e547c573427627911f8a99Makoto Onukiimport java.util.Set;
3080d3875d306c60da83e547c573427627911f8a99Makoto Onuki
3180d3875d306c60da83e547c573427627911f8a99Makoto Onukipublic class FolderPropertiesTests extends AndroidTestCase {
3280d3875d306c60da83e547c573427627911f8a99Makoto Onuki
3380d3875d306c60da83e547c573427627911f8a99Makoto Onuki    private static Cursor buildCursor(String[] columns, Object... values) {
3480d3875d306c60da83e547c573427627911f8a99Makoto Onuki        MatrixCursor c = new MatrixCursor(columns, 1);
3580d3875d306c60da83e547c573427627911f8a99Makoto Onuki        c.addRow(values);
3680d3875d306c60da83e547c573427627911f8a99Makoto Onuki        c.moveToFirst();
3780d3875d306c60da83e547c573427627911f8a99Makoto Onuki        return c;
3880d3875d306c60da83e547c573427627911f8a99Makoto Onuki    }
3980d3875d306c60da83e547c573427627911f8a99Makoto Onuki
4080d3875d306c60da83e547c573427627911f8a99Makoto Onuki    /**
4180d3875d306c60da83e547c573427627911f8a99Makoto Onuki     * Tests of the syncronization of array and types of the display folder names
4280d3875d306c60da83e547c573427627911f8a99Makoto Onuki     */
4380d3875d306c60da83e547c573427627911f8a99Makoto Onuki    public void testGetDisplayName() {
4480d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Context context = getContext();
4580d3875d306c60da83e547c573427627911f8a99Makoto Onuki        FolderProperties fp = FolderProperties.getInstance(context);
4680d3875d306c60da83e547c573427627911f8a99Makoto Onuki
4780d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
4880d3875d306c60da83e547c573427627911f8a99Makoto Onuki                    context.getString(R.string.mailbox_name_display_inbox),
4980d3875d306c60da83e547c573427627911f8a99Makoto Onuki                        fp.getDisplayName(Mailbox.TYPE_INBOX, 0, "ignored"));
5080d3875d306c60da83e547c573427627911f8a99Makoto Onuki
5180d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
5280d3875d306c60da83e547c573427627911f8a99Makoto Onuki                "*name*",
5380d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(Mailbox.TYPE_MAIL, 0, "*name*"));
5480d3875d306c60da83e547c573427627911f8a99Makoto Onuki
5580d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
5680d3875d306c60da83e547c573427627911f8a99Makoto Onuki                "*name2*",
5780d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(Mailbox.TYPE_PARENT, 0, "*name2*"));
5880d3875d306c60da83e547c573427627911f8a99Makoto Onuki
5980d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
6080d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.mailbox_name_display_drafts),
6180d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(Mailbox.TYPE_DRAFTS, 0, "ignored"));
6280d3875d306c60da83e547c573427627911f8a99Makoto Onuki
6380d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
6480d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.mailbox_name_display_outbox),
6580d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(Mailbox.TYPE_OUTBOX, 0, "ignored"));
6680d3875d306c60da83e547c573427627911f8a99Makoto Onuki
6780d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
6880d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.mailbox_name_display_sent),
6980d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(Mailbox.TYPE_SENT, 0, "ignored"));
7080d3875d306c60da83e547c573427627911f8a99Makoto Onuki
7180d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
7280d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.mailbox_name_display_trash),
7380d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(Mailbox.TYPE_TRASH, 0, "ignored"));
7480d3875d306c60da83e547c573427627911f8a99Makoto Onuki
7580d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
7680d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.mailbox_name_display_junk),
7780d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(Mailbox.TYPE_JUNK, 0, "ignored"));
7880d3875d306c60da83e547c573427627911f8a99Makoto Onuki
7980d3875d306c60da83e547c573427627911f8a99Makoto Onuki        // Testing illegal index
8080d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
8180d3875d306c60da83e547c573427627911f8a99Makoto Onuki                "some name",
8280d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(8, 12345678890L, "some name"));
8380d3875d306c60da83e547c573427627911f8a99Makoto Onuki
8480d3875d306c60da83e547c573427627911f8a99Makoto Onuki
8580d3875d306c60da83e547c573427627911f8a99Makoto Onuki        // Combined mailboxes
8680d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
8780d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.account_folder_list_summary_inbox),
8880d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(0, Mailbox.QUERY_ALL_INBOXES, "ignored"));
8980d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
9080d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.account_folder_list_summary_starred),
9180d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(0, Mailbox.QUERY_ALL_FAVORITES, "ignored"));
9280d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
9380d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.account_folder_list_summary_drafts),
9480d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(0, Mailbox.QUERY_ALL_DRAFTS, "ignored"));
9580d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
9680d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.account_folder_list_summary_outbox),
9780d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(0, Mailbox.QUERY_ALL_OUTBOX, "ignored"));
9880d3875d306c60da83e547c573427627911f8a99Makoto Onuki    }
9980d3875d306c60da83e547c573427627911f8a99Makoto Onuki
10080d3875d306c60da83e547c573427627911f8a99Makoto Onuki    public void testGetDisplayNameWithCursor() {
10180d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Context context = getContext();
10280d3875d306c60da83e547c573427627911f8a99Makoto Onuki        FolderProperties fp = FolderProperties.getInstance(context);
10380d3875d306c60da83e547c573427627911f8a99Makoto Onuki        String[] columns = new String[] {MailboxColumns.ID, MailboxColumns.TYPE,
10480d3875d306c60da83e547c573427627911f8a99Makoto Onuki                MailboxColumns.DISPLAY_NAME};
10580d3875d306c60da83e547c573427627911f8a99Makoto Onuki
10680d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
10780d3875d306c60da83e547c573427627911f8a99Makoto Onuki                context.getString(R.string.mailbox_name_display_inbox),
10880d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(buildCursor(columns, 1, Mailbox.TYPE_INBOX, "ignored"))
10980d3875d306c60da83e547c573427627911f8a99Makoto Onuki                );
11080d3875d306c60da83e547c573427627911f8a99Makoto Onuki
11180d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
11280d3875d306c60da83e547c573427627911f8a99Makoto Onuki                "name",
11380d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getDisplayName(buildCursor(columns, 1, Mailbox.TYPE_MAIL, "name"))
11480d3875d306c60da83e547c573427627911f8a99Makoto Onuki                );
11580d3875d306c60da83e547c573427627911f8a99Makoto Onuki    }
11680d3875d306c60da83e547c573427627911f8a99Makoto Onuki
11780d3875d306c60da83e547c573427627911f8a99Makoto Onuki    /**
11880d3875d306c60da83e547c573427627911f8a99Makoto Onuki     * Confirm that all of the special icons are available and unique
11980d3875d306c60da83e547c573427627911f8a99Makoto Onuki     */
12080d3875d306c60da83e547c573427627911f8a99Makoto Onuki    public void testSpecialIcons() {
12180d3875d306c60da83e547c573427627911f8a99Makoto Onuki        FolderProperties fp = FolderProperties.getInstance(mContext);
12280d3875d306c60da83e547c573427627911f8a99Makoto Onuki
12380d3875d306c60da83e547c573427627911f8a99Makoto Onuki        // Make sure they're available
12480d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Drawable inbox = fp.getIcon(Mailbox.TYPE_INBOX, -1, 0);
12580d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Drawable mail = fp.getIcon(Mailbox.TYPE_MAIL, -1, 0);
12680d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Drawable parent = fp.getIcon(Mailbox.TYPE_PARENT, -1, 0);
12780d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Drawable drafts = fp.getIcon(Mailbox.TYPE_DRAFTS, -1, 0);
12880d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Drawable outbox = fp.getIcon(Mailbox.TYPE_OUTBOX, -1, 0);
12980d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Drawable sent = fp.getIcon(Mailbox.TYPE_SENT, -1, 0);
13080d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Drawable trash = fp.getIcon(Mailbox.TYPE_TRASH, -1, 0);
13180d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Drawable junk = fp.getIcon(Mailbox.TYPE_JUNK, -1, 0);
13280d3875d306c60da83e547c573427627911f8a99Makoto Onuki
13380d3875d306c60da83e547c573427627911f8a99Makoto Onuki        // Make sure they're unique
13480d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Set<Drawable> set = new HashSet<Drawable>();
13580d3875d306c60da83e547c573427627911f8a99Makoto Onuki        set.add(inbox);
13680d3875d306c60da83e547c573427627911f8a99Makoto Onuki        set.add(parent);
13780d3875d306c60da83e547c573427627911f8a99Makoto Onuki        set.add(drafts);
13880d3875d306c60da83e547c573427627911f8a99Makoto Onuki        set.add(outbox);
13980d3875d306c60da83e547c573427627911f8a99Makoto Onuki        set.add(sent);
14080d3875d306c60da83e547c573427627911f8a99Makoto Onuki        set.add(trash);
14180d3875d306c60da83e547c573427627911f8a99Makoto Onuki        set.add(junk);
14280d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(7, set.size());
14380d3875d306c60da83e547c573427627911f8a99Makoto Onuki
14480d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertNull(mail);
14580d3875d306c60da83e547c573427627911f8a99Makoto Onuki    }
14680d3875d306c60da83e547c573427627911f8a99Makoto Onuki
14780d3875d306c60da83e547c573427627911f8a99Makoto Onuki    public void testGetMessageCountWithCursor() {
14880d3875d306c60da83e547c573427627911f8a99Makoto Onuki        Context context = getContext();
14980d3875d306c60da83e547c573427627911f8a99Makoto Onuki        FolderProperties fp = FolderProperties.getInstance(context);
15080d3875d306c60da83e547c573427627911f8a99Makoto Onuki        String[] columns = new String[] {MailboxColumns.TYPE, MailboxColumns.UNREAD_COUNT,
15180d3875d306c60da83e547c573427627911f8a99Makoto Onuki                MailboxColumns.MESSAGE_COUNT};
15280d3875d306c60da83e547c573427627911f8a99Makoto Onuki
15380d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
15480d3875d306c60da83e547c573427627911f8a99Makoto Onuki                1,
15580d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getMessageCount(buildCursor(columns, Mailbox.TYPE_INBOX, 1, 2))
15680d3875d306c60da83e547c573427627911f8a99Makoto Onuki                );
15780d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
15880d3875d306c60da83e547c573427627911f8a99Makoto Onuki                1,
15980d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getMessageCount(buildCursor(columns, Mailbox.TYPE_MAIL, 1, 2))
16080d3875d306c60da83e547c573427627911f8a99Makoto Onuki                );
16180d3875d306c60da83e547c573427627911f8a99Makoto Onuki
16280d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
16380d3875d306c60da83e547c573427627911f8a99Makoto Onuki                2,
16480d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getMessageCount(buildCursor(columns, Mailbox.TYPE_DRAFTS, 1, 2))
16580d3875d306c60da83e547c573427627911f8a99Makoto Onuki                );
16680d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
16780d3875d306c60da83e547c573427627911f8a99Makoto Onuki                2,
16880d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getMessageCount(buildCursor(columns, Mailbox.TYPE_OUTBOX, 1, 2))
16980d3875d306c60da83e547c573427627911f8a99Makoto Onuki                );
17080d3875d306c60da83e547c573427627911f8a99Makoto Onuki
17180d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
17280d3875d306c60da83e547c573427627911f8a99Makoto Onuki                0,
17380d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getMessageCount(buildCursor(columns, Mailbox.TYPE_TRASH, 1, 2))
17480d3875d306c60da83e547c573427627911f8a99Makoto Onuki                );
17580d3875d306c60da83e547c573427627911f8a99Makoto Onuki
17680d3875d306c60da83e547c573427627911f8a99Makoto Onuki        assertEquals(
17780d3875d306c60da83e547c573427627911f8a99Makoto Onuki                0,
17880d3875d306c60da83e547c573427627911f8a99Makoto Onuki                fp.getMessageCount(buildCursor(columns, Mailbox.TYPE_SENT, 1, 2))
17980d3875d306c60da83e547c573427627911f8a99Makoto Onuki                );
18080d3875d306c60da83e547c573427627911f8a99Makoto Onuki    }
18180d3875d306c60da83e547c573427627911f8a99Makoto Onuki}
182