17e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki/*
27e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * Copyright (C) 2010 The Android Open Source Project
37e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki *
47e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * Licensed under the Apache License, Version 2.0 (the "License");
57e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * you may not use this file except in compliance with the License.
67e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * You may obtain a copy of the License at
77e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki *
87e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki *      http://www.apache.org/licenses/LICENSE-2.0
97e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki *
107e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * Unless required by applicable law or agreed to in writing, software
117e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * distributed under the License is distributed on an "AS IS" BASIS,
127e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * See the License for the specific language governing permissions and
147e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki * limitations under the License.
157e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki */
167e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
177e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onukipackage com.android.email.mail.store.imap;
187e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
197e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onukiimport static com.android.email.mail.store.imap.ImapTestUtils.*;
207e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
217e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onukiimport com.android.email.mail.store.imap.ImapConstants;
227e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onukiimport com.android.email.mail.store.imap.ImapResponse;
237e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onukiimport com.android.email.mail.store.imap.ImapSimpleString;
247e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
257e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onukiimport android.test.suitebuilder.annotation.SmallTest;
267e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
277e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onukiimport junit.framework.TestCase;
287e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
297e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki@SmallTest
307e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onukipublic class ImapResponseTest extends TestCase {
317e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
327e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    public void testIsTagged() {
337e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertTrue(buildResponse("a", false).isTagged());
347e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertFalse(buildResponse(null, false).isTagged());
357e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    }
367e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
377e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    public void testIsOk() {
387e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertTrue(buildResponse(null, false, new ImapSimpleString("OK")).isOk());
397e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertFalse(buildResponse(null, false, new ImapSimpleString("NO")).isOk());
407e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    }
417e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
427e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    public void testIsDataResponse() {
437e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        final ImapResponse OK = buildResponse("tag", false, new ImapSimpleString("OK"));
447e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        final ImapResponse SEARCH = buildResponse(null, false, new ImapSimpleString("SEARCH"),
457e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                new ImapSimpleString("1"));
467e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        final ImapResponse EXISTS = buildResponse(null, false, new ImapSimpleString("3"),
477e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                new ImapSimpleString("EXISTS"));
487e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
497e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        final ImapResponse TAGGED_EXISTS = buildResponse("tag", false, new ImapSimpleString("1"),
507e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                new ImapSimpleString("EXISTS"));
517e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
527e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertTrue(SEARCH.isDataResponse(0, ImapConstants.SEARCH));
537e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertTrue(EXISTS.isDataResponse(1, ImapConstants.EXISTS));
547e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
557e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        // Falses...
567e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertFalse(SEARCH.isDataResponse(1, ImapConstants.SEARCH));
577e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertFalse(EXISTS.isDataResponse(0, ImapConstants.EXISTS));
587e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
597e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertFalse(EXISTS.isDataResponse(1, ImapConstants.FETCH));
607e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
617e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        // It's tagged, so can't be a data response
627e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertFalse(TAGGED_EXISTS.isDataResponse(1, ImapConstants.EXISTS));
637e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    }
647e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
657e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    public void testGetResponseCodeOrEmpty() {
667e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertEquals(
677e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                "rescode",
687e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                buildResponse("tag", false,
697e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("OK"),
707e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        buildList(new ImapSimpleString("rescode"))
717e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        ).getResponseCodeOrEmpty().getString()
727e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                );
737e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
747e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertEquals(
757e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                "",
767e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                buildResponse("tag", false,
777e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("STATUS"), // Not a status response
787e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        buildList(new ImapSimpleString("rescode"))
797e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        ).getResponseCodeOrEmpty().getString()
807e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                );
817e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
827e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertEquals(
837e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                "",
847e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                buildResponse("tag", false,
857e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("OK"),
867e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("XXX"), // Second element not a list.
877e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        buildList(new ImapSimpleString("rescode"))
887e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        ).getResponseCodeOrEmpty().getString()
897e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                );
907e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    }
917e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
927e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    public void testGetAlertTextOrEmpty() {
937e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertEquals(
947e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                "alert text",
957e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                buildResponse("tag", false,
967e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("OK"),
977e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        buildList(new ImapSimpleString("ALERT")),
987e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("alert text")
997e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        ).getAlertTextOrEmpty().getString()
1007e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                );
1017e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
1027e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        // Not alert
1037e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertEquals(
1047e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                "",
1057e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                buildResponse("tag", false,
1067e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("OK"),
1077e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        buildList(new ImapSimpleString("X")),
1087e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("alert text")
1097e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        ).getAlertTextOrEmpty().getString()
1107e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                );
1117e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    }
1127e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
1137e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    public void testGetStatusResponseTextOrEmpty() {
1147e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        // Not a status response
1157e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertEquals(
1167e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                "",
1177e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                buildResponse("tag", false,
1187e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("XXX"),
1197e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("!text!")
1207e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        ).getStatusResponseTextOrEmpty().getString()
1217e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                );
1227e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
1237e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        // Second element isn't a list.
1247e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertEquals(
1257e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                "!text!",
1267e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                buildResponse("tag", false,
1277e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("OK"),
1287e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("!text!")
1297e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        ).getStatusResponseTextOrEmpty().getString()
1307e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                );
1317e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki
1327e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        // Second element is a list.
1337e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki        assertEquals(
1347e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                "!text!",
1357e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                buildResponse("tag", false,
1367e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("OK"),
1377e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        buildList(new ImapSimpleString("XXX")),
1387e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        new ImapSimpleString("!text!")
1397e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                        ).getStatusResponseTextOrEmpty().getString()
1407e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki                );
1417e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki    }
1427e5ba0e1eaee76ab6e6c7ea9362348f660796596Makoto Onuki}
143