Home | History | Annotate | Download | only in imap
      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 
     17 package com.android.email.mail.store.imap;
     18 
     19 import android.test.AndroidTestCase;
     20 import android.test.MoreAsserts;
     21 import android.test.suitebuilder.annotation.SmallTest;
     22 
     23 @SmallTest
     24 public 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