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