1/* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.email.mail.store.imap; 18 19import android.test.AndroidTestCase; 20import android.test.MoreAsserts; 21import android.test.suitebuilder.annotation.SmallTest; 22 23@SmallTest 24public class ImapUtilityTests extends AndroidTestCase { 25 public static final String[] EmptyArrayString = new String[0]; 26 27 /** 28 * Tests of the IMAP quoting rules function. 29 */ 30 public void testImapQuote() { 31 // Simple strings should come through with simple quotes 32 assertEquals("\"abcd\"", ImapUtility.imapQuoted("abcd")); 33 // Quoting internal double quotes with \ 34 assertEquals("\"ab\\\"cd\"", ImapUtility.imapQuoted("ab\"cd")); 35 // Quoting internal \ with \\ 36 assertEquals("\"ab\\\\cd\"", ImapUtility.imapQuoted("ab\\cd")); 37 } 38 39 /** 40 * Test getting elements of an IMAP sequence set. 41 */ 42 public void testGetImapSequenceValues() { 43 String[] expected; 44 String[] actual; 45 46 // Test valid sets 47 expected = new String[] {"1"}; 48 actual = ImapUtility.getImapSequenceValues("1"); 49 MoreAsserts.assertEquals(expected, actual); 50 51 expected = new String[] {"1", "3", "2"}; 52 actual = ImapUtility.getImapSequenceValues("1,3,2"); 53 MoreAsserts.assertEquals(expected, actual); 54 55 expected = new String[] {"4", "5", "6"}; 56 actual = ImapUtility.getImapSequenceValues("4:6"); 57 MoreAsserts.assertEquals(expected, actual); 58 59 expected = new String[] {"9", "8", "7"}; 60 actual = ImapUtility.getImapSequenceValues("9:7"); 61 MoreAsserts.assertEquals(expected, actual); 62 63 expected = new String[] {"1", "2", "3", "4", "9", "8", "7"}; 64 actual = ImapUtility.getImapSequenceValues("1,2:4,9:7"); 65 MoreAsserts.assertEquals(expected, actual); 66 67 // Test partially invalid sets 68 expected = new String[] { "1", "5" }; 69 actual = ImapUtility.getImapSequenceValues("1,x,5"); 70 MoreAsserts.assertEquals(expected, actual); 71 72 expected = new String[] { "1", "2", "3" }; 73 actual = ImapUtility.getImapSequenceValues("a:d,1:3"); 74 MoreAsserts.assertEquals(expected, actual); 75 76 // Test invalid sets 77 expected = EmptyArrayString; 78 actual = ImapUtility.getImapSequenceValues(""); 79 MoreAsserts.assertEquals(expected, actual); 80 81 expected = EmptyArrayString; 82 actual = ImapUtility.getImapSequenceValues(null); 83 MoreAsserts.assertEquals(expected, actual); 84 85 expected = EmptyArrayString; 86 actual = ImapUtility.getImapSequenceValues("a"); 87 MoreAsserts.assertEquals(expected, actual); 88 89 expected = EmptyArrayString; 90 actual = ImapUtility.getImapSequenceValues("1:x"); 91 MoreAsserts.assertEquals(expected, actual); 92 } 93 94 /** 95 * Test getting elements of an IMAP range. 96 */ 97 public void testGetImapRangeValues() { 98 String[] expected; 99 String[] actual; 100 101 // Test valid ranges 102 expected = new String[] {"1", "2", "3"}; 103 actual = ImapUtility.getImapRangeValues("1:3"); 104 MoreAsserts.assertEquals(expected, actual); 105 106 expected = new String[] {"16", "15", "14"}; 107 actual = ImapUtility.getImapRangeValues("16:14"); 108 MoreAsserts.assertEquals(expected, actual); 109 110 // Test in-valid ranges 111 expected = EmptyArrayString; 112 actual = ImapUtility.getImapRangeValues(""); 113 MoreAsserts.assertEquals(expected, actual); 114 115 expected = EmptyArrayString; 116 actual = ImapUtility.getImapRangeValues(null); 117 MoreAsserts.assertEquals(expected, actual); 118 119 expected = EmptyArrayString; 120 actual = ImapUtility.getImapRangeValues("a"); 121 MoreAsserts.assertEquals(expected, actual); 122 123 expected = EmptyArrayString; 124 actual = ImapUtility.getImapRangeValues("6"); 125 MoreAsserts.assertEquals(expected, actual); 126 127 expected = EmptyArrayString; 128 actual = ImapUtility.getImapRangeValues("1:3,6"); 129 MoreAsserts.assertEquals(expected, actual); 130 131 expected = EmptyArrayString; 132 actual = ImapUtility.getImapRangeValues("1:x"); 133 MoreAsserts.assertEquals(expected, actual); 134 135 expected = EmptyArrayString; 136 actual = ImapUtility.getImapRangeValues("1:*"); 137 MoreAsserts.assertEquals(expected, actual); 138 } 139} 140