15aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank/*
25aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * Copyright (C) 2010 The Android Open Source Project
35aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank *
45aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * Licensed under the Apache License, Version 2.0 (the "License");
55aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * you may not use this file except in compliance with the License.
65aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * You may obtain a copy of the License at
75aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank *
85aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank *      http://www.apache.org/licenses/LICENSE-2.0
95aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank *
105aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * Unless required by applicable law or agreed to in writing, software
115aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * distributed under the License is distributed on an "AS IS" BASIS,
125aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * See the License for the specific language governing permissions and
145aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * limitations under the License.
155aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank */
165aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank
175aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blankpackage com.android.exchange.provider;
185aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank
19c8e4352ea6cfa67f15140512e84af8ccede222d2Marc Blankimport com.android.emailcommon.mail.PackedString;
207372782488977df778a33d990401ce9e397f646bMarc Blankimport com.android.emailcommon.provider.Account;
215aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blankimport com.android.exchange.provider.GalResult.GalData;
22c8e4352ea6cfa67f15140512e84af8ccede222d2Marc Blankimport com.android.exchange.utility.ExchangeTestCase;
235aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank
247307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blankimport android.content.Context;
255aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blankimport android.database.Cursor;
265aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blankimport android.database.MatrixCursor;
2784519932a8245ce450af8be9ac3fbba5e89ec042Marc Blankimport android.net.Uri;
285aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blankimport android.provider.ContactsContract.CommonDataKinds;
295aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blankimport android.provider.ContactsContract.Contacts;
30604a1cf6f2401d78f57edcfb702d560d9c80dd14Marc Blankimport android.test.suitebuilder.annotation.SmallTest;
315aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank
325aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank/**
335aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank * You can run this entire test case with:
34c8e4352ea6cfa67f15140512e84af8ccede222d2Marc Blank *   runtest -c com.android.exchange.provider.ExchangeDirectoryProviderTests exchange
355aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank */
36604a1cf6f2401d78f57edcfb702d560d9c80dd14Marc Blank@SmallTest
37c8e4352ea6cfa67f15140512e84af8ccede222d2Marc Blankpublic class ExchangeDirectoryProviderTests extends ExchangeTestCase {
387307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank
397307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank    public ExchangeDirectoryProviderTests() {
407307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank    }
415aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank
425aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank    // Create a test projection; we should only get back values for display name and email address
435aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank    private static final String[] GAL_RESULT_PROJECTION =
44d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        new String[] {Contacts.DISPLAY_NAME, CommonDataKinds.Email.ADDRESS, Contacts.CONTENT_TYPE,
45d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            Contacts.LOOKUP_KEY};
46d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final int GAL_RESULT_COLUMN_DISPLAY_NAME = 0;
47d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final int GAL_RESULT_COLUMN_EMAIL_ADDRESS = 1;
48d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final int GAL_RESULT_COLUMN_CONTENT_TYPE = 2;
49d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final int GAL_RESULT_COLUMN_LOOKUP_KEY = 3;
505aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank
51d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    public void testBuildSimpleGalResultCursor() {
525aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        GalResult result = new GalResult();
535aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        result.addGalData(1, "Alice Aardvark", "alice@aardvark.com");
545aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        result.addGalData(2, "Bob Badger", "bob@badger.com");
555aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        result.addGalData(3, "Clark Cougar", "clark@cougar.com");
565aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        result.addGalData(4, "Dan Dolphin", "dan@dolphin.com");
575aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        // Make sure our returned cursor has the expected contents
585aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        ExchangeDirectoryProvider provider = new ExchangeDirectoryProvider();
59e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner        Cursor c = provider.buildGalResultCursor(GAL_RESULT_PROJECTION, result, null, 20, false, false);
605aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        assertNotNull(c);
615aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        assertEquals(MatrixCursor.class, c.getClass());
625aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        assertEquals(4, c.getCount());
635aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        for (int i = 0; i < 4; i++) {
645aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank            GalData data = result.galData.get(i);
655aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank            assertTrue(c.moveToNext());
66d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertEquals(data.displayName, c.getString(GAL_RESULT_COLUMN_DISPLAY_NAME));
67d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertEquals(data.emailAddress, c.getString(GAL_RESULT_COLUMN_EMAIL_ADDRESS));
68d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertNull(c.getString(GAL_RESULT_COLUMN_CONTENT_TYPE));
69d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        }
70d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    }
71d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov
72d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final String[][] DISPLAY_NAME_TEST_FIELDS = {
73d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        {"Alice", "Aardvark", "Another Name"},
74d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        {"Alice", "Aardvark", null},
75d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        {"Alice", null, null},
76d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        {null, "Aardvark", null},
77d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        {null, null, null}
78d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    };
79d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final int TEST_FIELD_FIRST_NAME = 0;
80d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final int TEST_FIELD_LAST_NAME = 1;
81d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final int TEST_FIELD_DISPLAY_NAME = 2;
82d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private static final String[] EXPECTED_DISPLAY_NAMES = new String[] {"Another Name",
83d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        "Alice Aardvark", "Alice", "Aardvark", null};
84d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov
85d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    private GalResult getTestDisplayNameResult() {
86d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        GalResult result = new GalResult();
87d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        for (int i = 0; i < DISPLAY_NAME_TEST_FIELDS.length; i++) {
88d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            GalData galData = new GalData();
89d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            String[] names = DISPLAY_NAME_TEST_FIELDS[i];
90d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            galData.put(GalData.FIRST_NAME, names[TEST_FIELD_FIRST_NAME]);
91d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            galData.put(GalData.LAST_NAME, names[TEST_FIELD_LAST_NAME]);
92d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            galData.put(GalData.DISPLAY_NAME, names[TEST_FIELD_DISPLAY_NAME]);
93d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            result.addGalData(galData);
94d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        }
95d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        return result;
96d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    }
97d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov
9870a8aecc56c2a0cfa0629a7b7d0716b1d2b527a5Jerry Xie    public void brokentestDisplayNameLogic() {
99d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        GalResult result = getTestDisplayNameResult();
100d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        // Make sure our returned cursor has the expected contents
101d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        ExchangeDirectoryProvider provider = new ExchangeDirectoryProvider();
102e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner        Cursor c = provider.buildGalResultCursor(GAL_RESULT_PROJECTION, result, null, 20, false, false);
103d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        assertNotNull(c);
104d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        assertEquals(MatrixCursor.class, c.getClass());
105d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        assertEquals(DISPLAY_NAME_TEST_FIELDS.length, c.getCount());
106d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        for (int i = 0; i < EXPECTED_DISPLAY_NAMES.length; i++) {
107d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertTrue(c.moveToNext());
108d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertEquals(EXPECTED_DISPLAY_NAMES[i], c.getString(GAL_RESULT_COLUMN_DISPLAY_NAME));
109d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        }
110d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov    }
111d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov
11270a8aecc56c2a0cfa0629a7b7d0716b1d2b527a5Jerry Xie    public void brokentestLookupKeyLogic() {
113d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        GalResult result = getTestDisplayNameResult();
114d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        // Make sure our returned cursor has the expected contents
115d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        ExchangeDirectoryProvider provider = new ExchangeDirectoryProvider();
116e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner        Cursor c = provider.buildGalResultCursor(GAL_RESULT_PROJECTION, result, null, 20, false, false);
117d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        assertNotNull(c);
118d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        assertEquals(MatrixCursor.class, c.getClass());
119d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        assertEquals(DISPLAY_NAME_TEST_FIELDS.length, c.getCount());
120d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov        for (int i = 0; i < EXPECTED_DISPLAY_NAMES.length; i++) {
121d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertTrue(c.moveToNext());
12284519932a8245ce450af8be9ac3fbba5e89ec042Marc Blank            PackedString ps =
12384519932a8245ce450af8be9ac3fbba5e89ec042Marc Blank                new PackedString(Uri.decode(c.getString(GAL_RESULT_COLUMN_LOOKUP_KEY)));
124d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            String[] testFields = DISPLAY_NAME_TEST_FIELDS[i];
125d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertEquals(testFields[TEST_FIELD_FIRST_NAME], ps.get(GalData.FIRST_NAME));
126d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertEquals(testFields[TEST_FIELD_LAST_NAME], ps.get(GalData.LAST_NAME));
127d41eaba645dcb4573c5dc33077fc87799ef06195Dmitri Plotnikov            assertEquals(EXPECTED_DISPLAY_NAMES[i], ps.get(GalData.DISPLAY_NAME));
1285aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank        }
1295aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank    }
1307307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank
13170a8aecc56c2a0cfa0629a7b7d0716b1d2b527a5Jerry Xie    public void brokentestGetAccountIdByName() {
132c8e4352ea6cfa67f15140512e84af8ccede222d2Marc Blank        Context context = getContext(); //getMockContext();
1337307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        ExchangeDirectoryProvider provider = new ExchangeDirectoryProvider();
1347307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        // Nothing up my sleeve
1357307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        assertNull(provider.mAccountIdMap.get("foo@android.com"));
1367307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        assertNull(provider.mAccountIdMap.get("bar@android.com"));
1377307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        // Create accounts; the email addresses will be the first argument + "@android.com"
138c8e4352ea6cfa67f15140512e84af8ccede222d2Marc Blank        Account acctFoo = setupTestAccount("foo", true);
139c8e4352ea6cfa67f15140512e84af8ccede222d2Marc Blank        Account acctBar = setupTestAccount("bar", true);
1407307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        // Make sure we can retrieve them, and that the map is populated
1417307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        assertEquals(acctFoo.mId, provider.getAccountIdByName(context, "foo@android.com"));
1427307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        assertEquals(acctBar.mId, provider.getAccountIdByName(context, "bar@android.com"));
1437307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        assertEquals((Long)acctFoo.mId, provider.mAccountIdMap.get("foo@android.com"));
1447307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank        assertEquals((Long)acctBar.mId, provider.mAccountIdMap.get("bar@android.com"));
1457307f7e5c2c4f85f6f3e0ebaf5775f65cba4b20cMarc Blank    }
146674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
147674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    /**
148674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee     * The purpose of these next tests are to test the ExchangeDirectoryProvider. NameComparator comparison function
149674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee     * and not the Collator class. This means that we can test only with Western strings.
150674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee     * Note that there is a loose assumption that IDs always exist. If this is a valid
151674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee     * assumption, we should enforce it in the ExchangeDirectoryProvider.GalSortKey class or in the compare function.
152674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee     */
153674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    public void testNameComparatorEqualsStringLhsIdGreater() {
154674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey("A", 2);
155674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey("A", 1);
156674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
157674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
158674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
159674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, 1);
160674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
161674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
162674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    public void testNameComparatorEqualsStringRhsIdGreater() {
163674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey("A", 1);
164674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey("A", 2);
165674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
166674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
167674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
168674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, -1);
169674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
170674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
171674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    public void testNameComparatorEqualsEverythingEqual() {
172674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey("A", 1);
173674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey("A", 1);
174674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
175674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
176674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
177674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, 0);
178674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
179674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
180674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    public void testNameComparatorLhsGreaterString() {
181674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey("B", 1);
182674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey("A", 2);
183674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
184674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
185674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
186674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, 1);
187674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
188674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
189674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    public void testNameComparatorRhsGreaterString() {
190674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey("A", 1);
191674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey("B", 2);
192674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
193674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
194674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
195674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, -1);
196674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
197674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
198e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner    public void testNameComparatorLhsNoStringLhsGreaterId() {
199674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey(null, 2);
200674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey("A", 1);
201674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
202674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
203674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
204e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner        assertEquals(ret, -1);
205674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
206674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
207e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner    public void testNameComparatorLhsNoStringRhsGreaterId() {
208674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey(null, 1);
209674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey("A", 2);
210674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
211674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
212674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
213674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, -1);
214674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
215674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
216e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner    public void testNameComparatorRhsNoStringLhsGreaterId() {
217674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey("A", 2);
218674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey(null, 1);
219674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
220674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
221674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
222674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, 1);
223674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
224674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
225e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner    public void testNameComparatorRhsNoStringRhsGreaterId() {
226674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey("A", 1);
227674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey(null, 2);
228674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
229674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
230674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
231e7e74f5d67647510a0394dcc8346a9cd7781d970Jay Shrauner        assertEquals(ret, 1);
232674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
233674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
234674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    public void testNameComparatorNoStringsLhsWins() {
235674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey(null, 2);
236674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey(null, 1);
237674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
238674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
239674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
240674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, 1);
241674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
242674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
243674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    public void testNameComparatorNoStringsRhsWins() {
244674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey lhs = new ExchangeDirectoryProvider.GalSortKey(null, 1);
245674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider.GalSortKey rhs = new ExchangeDirectoryProvider.GalSortKey(null, 2);
246674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
247674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final ExchangeDirectoryProvider. NameComparator comparator = new ExchangeDirectoryProvider. NameComparator();
248674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        final int ret = comparator.compare(lhs, rhs);
249674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee        assertEquals(ret, -1);
250674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee    }
251674df0303129dcfa54a2cee2bf7e11195986220bAnthony Lee
2525aec61dc15c62cff0cf55a3d6cb483f9e338230aMarc Blank}
253