1284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy/* 2284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * Copyright (C) 2011 The Android Open Source Project 3284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * 4284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * Licensed under the Apache License, Version 2.0 (the "License"); 5284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * you may not use this file except in compliance with the License. 6284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * You may obtain a copy of the License at 7284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * 8284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * http://www.apache.org/licenses/LICENSE-2.0 9284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * 10284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * Unless required by applicable law or agreed to in writing, software 11284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * distributed under the License is distributed on an "AS IS" BASIS, 12284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * See the License for the specific language governing permissions and 14284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * limitations under the License. 15284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy */ 16284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 17284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedypackage com.android.email.mail.store.imap; 18284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 19284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedyimport android.test.AndroidTestCase; 20284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedyimport android.test.MoreAsserts; 213555dc03bf2243dc275c9c832702abbee3b64387Jerry Xieimport android.test.suitebuilder.annotation.SmallTest; 22284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 233555dc03bf2243dc275c9c832702abbee3b64387Jerry Xie@SmallTest 24284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedypublic class ImapUtilityTests extends AndroidTestCase { 2517d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie public static final String[] EmptyArrayString = new String[0]; 26284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 27284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy /** 28284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * Tests of the IMAP quoting rules function. 29284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy */ 30284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy public void testImapQuote() { 31284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy // Simple strings should come through with simple quotes 32284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy assertEquals("\"abcd\"", ImapUtility.imapQuoted("abcd")); 33284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy // Quoting internal double quotes with \ 34284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy assertEquals("\"ab\\\"cd\"", ImapUtility.imapQuoted("ab\"cd")); 35284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy // Quoting internal \ with \\ 36284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy assertEquals("\"ab\\\\cd\"", ImapUtility.imapQuoted("ab\\cd")); 37284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy } 38284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 39284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy /** 40284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * Test getting elements of an IMAP sequence set. 41284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy */ 42284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy public void testGetImapSequenceValues() { 43284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy String[] expected; 44284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy String[] actual; 45284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 46284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy // Test valid sets 47284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] {"1"}; 48284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("1"); 49284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 50284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 51284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] {"1", "3", "2"}; 52284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("1,3,2"); 53284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 54284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 55284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] {"4", "5", "6"}; 56284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("4:6"); 57284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 58284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 59284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] {"9", "8", "7"}; 60284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("9:7"); 61284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 62284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 63284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] {"1", "2", "3", "4", "9", "8", "7"}; 64284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("1,2:4,9:7"); 65284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 66284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 67284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy // Test partially invalid sets 68284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] { "1", "5" }; 69284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("1,x,5"); 70284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 71284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 72284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] { "1", "2", "3" }; 73284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("a:d,1:3"); 74284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 75284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 76284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy // Test invalid sets 7717d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 78284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues(""); 79284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 80284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 8117d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 82284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues(null); 83284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 84284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 8517d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 86284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("a"); 87284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 88284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 8917d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 90284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapSequenceValues("1:x"); 91284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 92284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy } 93284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 94284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy /** 95284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy * Test getting elements of an IMAP range. 96284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy */ 97284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy public void testGetImapRangeValues() { 98284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy String[] expected; 99284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy String[] actual; 100284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 101284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy // Test valid ranges 102284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] {"1", "2", "3"}; 103284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues("1:3"); 104284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 105284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 106284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy expected = new String[] {"16", "15", "14"}; 107284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues("16:14"); 108284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 109284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 110284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy // Test in-valid ranges 11117d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 112284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues(""); 113284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 114284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 11517d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 116284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues(null); 117284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 118284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 11917d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 120284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues("a"); 121284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 122284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 12317d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 124284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues("6"); 125284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 126284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 12717d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 128284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues("1:3,6"); 129284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 130284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 13117d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 132284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues("1:x"); 133284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 134284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy 13517d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie expected = EmptyArrayString; 136284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy actual = ImapUtility.getImapRangeValues("1:*"); 137284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy MoreAsserts.assertEquals(expected, actual); 138284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy } 139284d8d7db5743d24b9aa246afe3d24139bdb0813Todd Kennedy} 140