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 com.android.email.mail.store.imap.ImapUtility; 20 21import android.test.AndroidTestCase; 22import android.test.MoreAsserts; 23 24import libcore.util.EmptyArray; 25 26public class ImapUtilityTests extends AndroidTestCase { 27 28 /** 29 * Tests of the IMAP quoting rules function. 30 */ 31 public void testImapQuote() { 32 // Simple strings should come through with simple quotes 33 assertEquals("\"abcd\"", ImapUtility.imapQuoted("abcd")); 34 // Quoting internal double quotes with \ 35 assertEquals("\"ab\\\"cd\"", ImapUtility.imapQuoted("ab\"cd")); 36 // Quoting internal \ with \\ 37 assertEquals("\"ab\\\\cd\"", ImapUtility.imapQuoted("ab\\cd")); 38 } 39 40 /** 41 * Test getting elements of an IMAP sequence set. 42 */ 43 public void testGetImapSequenceValues() { 44 String[] expected; 45 String[] actual; 46 47 // Test valid sets 48 expected = new String[] {"1"}; 49 actual = ImapUtility.getImapSequenceValues("1"); 50 MoreAsserts.assertEquals(expected, actual); 51 52 expected = new String[] {"1", "3", "2"}; 53 actual = ImapUtility.getImapSequenceValues("1,3,2"); 54 MoreAsserts.assertEquals(expected, actual); 55 56 expected = new String[] {"4", "5", "6"}; 57 actual = ImapUtility.getImapSequenceValues("4:6"); 58 MoreAsserts.assertEquals(expected, actual); 59 60 expected = new String[] {"9", "8", "7"}; 61 actual = ImapUtility.getImapSequenceValues("9:7"); 62 MoreAsserts.assertEquals(expected, actual); 63 64 expected = new String[] {"1", "2", "3", "4", "9", "8", "7"}; 65 actual = ImapUtility.getImapSequenceValues("1,2:4,9:7"); 66 MoreAsserts.assertEquals(expected, actual); 67 68 // Test partially invalid sets 69 expected = new String[] { "1", "5" }; 70 actual = ImapUtility.getImapSequenceValues("1,x,5"); 71 MoreAsserts.assertEquals(expected, actual); 72 73 expected = new String[] { "1", "2", "3" }; 74 actual = ImapUtility.getImapSequenceValues("a:d,1:3"); 75 MoreAsserts.assertEquals(expected, actual); 76 77 // Test invalid sets 78 expected = EmptyArray.STRING; 79 actual = ImapUtility.getImapSequenceValues(""); 80 MoreAsserts.assertEquals(expected, actual); 81 82 expected = EmptyArray.STRING; 83 actual = ImapUtility.getImapSequenceValues(null); 84 MoreAsserts.assertEquals(expected, actual); 85 86 expected = EmptyArray.STRING; 87 actual = ImapUtility.getImapSequenceValues("a"); 88 MoreAsserts.assertEquals(expected, actual); 89 90 expected = EmptyArray.STRING; 91 actual = ImapUtility.getImapSequenceValues("1:x"); 92 MoreAsserts.assertEquals(expected, actual); 93 } 94 95 /** 96 * Test getting elements of an IMAP range. 97 */ 98 public void testGetImapRangeValues() { 99 String[] expected; 100 String[] actual; 101 102 // Test valid ranges 103 expected = new String[] {"1", "2", "3"}; 104 actual = ImapUtility.getImapRangeValues("1:3"); 105 MoreAsserts.assertEquals(expected, actual); 106 107 expected = new String[] {"16", "15", "14"}; 108 actual = ImapUtility.getImapRangeValues("16:14"); 109 MoreAsserts.assertEquals(expected, actual); 110 111 // Test in-valid ranges 112 expected = EmptyArray.STRING; 113 actual = ImapUtility.getImapRangeValues(""); 114 MoreAsserts.assertEquals(expected, actual); 115 116 expected = EmptyArray.STRING; 117 actual = ImapUtility.getImapRangeValues(null); 118 MoreAsserts.assertEquals(expected, actual); 119 120 expected = EmptyArray.STRING; 121 actual = ImapUtility.getImapRangeValues("a"); 122 MoreAsserts.assertEquals(expected, actual); 123 124 expected = EmptyArray.STRING; 125 actual = ImapUtility.getImapRangeValues("6"); 126 MoreAsserts.assertEquals(expected, actual); 127 128 expected = EmptyArray.STRING; 129 actual = ImapUtility.getImapRangeValues("1:3,6"); 130 MoreAsserts.assertEquals(expected, actual); 131 132 expected = EmptyArray.STRING; 133 actual = ImapUtility.getImapRangeValues("1:x"); 134 MoreAsserts.assertEquals(expected, actual); 135 136 expected = EmptyArray.STRING; 137 actual = ImapUtility.getImapRangeValues("1:*"); 138 MoreAsserts.assertEquals(expected, actual); 139 } 140} 141