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 com.android.email.mail.store.imap.ImapUtility;
     20 
     21 import android.test.AndroidTestCase;
     22 import android.test.MoreAsserts;
     23 
     24 import libcore.util.EmptyArray;
     25 
     26 public 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