161cea951d1e813941b80bba7438745541e5133eaMindy Pereira/*
261cea951d1e813941b80bba7438745541e5133eaMindy Pereira * Copyright (C) 2012 Google Inc.
361cea951d1e813941b80bba7438745541e5133eaMindy Pereira * Licensed to The Android Open Source Project.
461cea951d1e813941b80bba7438745541e5133eaMindy Pereira *
561cea951d1e813941b80bba7438745541e5133eaMindy Pereira * Licensed under the Apache License, Version 2.0 (the "License");
661cea951d1e813941b80bba7438745541e5133eaMindy Pereira * you may not use this file except in compliance with the License.
761cea951d1e813941b80bba7438745541e5133eaMindy Pereira * You may obtain a copy of the License at
861cea951d1e813941b80bba7438745541e5133eaMindy Pereira *
961cea951d1e813941b80bba7438745541e5133eaMindy Pereira *      http://www.apache.org/licenses/LICENSE-2.0
1061cea951d1e813941b80bba7438745541e5133eaMindy Pereira *
1161cea951d1e813941b80bba7438745541e5133eaMindy Pereira * Unless required by applicable law or agreed to in writing, software
1261cea951d1e813941b80bba7438745541e5133eaMindy Pereira * distributed under the License is distributed on an "AS IS" BASIS,
1361cea951d1e813941b80bba7438745541e5133eaMindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1461cea951d1e813941b80bba7438745541e5133eaMindy Pereira * See the License for the specific language governing permissions and
1561cea951d1e813941b80bba7438745541e5133eaMindy Pereira * limitations under the License.
1661cea951d1e813941b80bba7438745541e5133eaMindy Pereira */
1761cea951d1e813941b80bba7438745541e5133eaMindy Pereira
1861cea951d1e813941b80bba7438745541e5133eaMindy Pereirapackage com.android.mail.ui;
1961cea951d1e813941b80bba7438745541e5133eaMindy Pereira
2061cea951d1e813941b80bba7438745541e5133eaMindy Pereiraimport android.test.AndroidTestCase;
2170ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieuximport android.text.SpannableStringBuilder;
221e947b0159d23e5cfc86f10440c4fe7aa62b282eJerry Xieimport android.test.suitebuilder.annotation.SmallTest;
2361cea951d1e813941b80bba7438745541e5133eaMindy Pereira
241e947b0159d23e5cfc86f10440c4fe7aa62b282eJerry Xie@SmallTest
2561cea951d1e813941b80bba7438745541e5133eaMindy Pereirapublic class HierarchicalFolderTruncationTests extends AndroidTestCase {
2661cea951d1e813941b80bba7438745541e5133eaMindy Pereira
2761cea951d1e813941b80bba7438745541e5133eaMindy Pereira    private HierarchicalFolderSelectorAdapter mAdapter;
2861cea951d1e813941b80bba7438745541e5133eaMindy Pereira
2961cea951d1e813941b80bba7438745541e5133eaMindy Pereira    @Override
3061cea951d1e813941b80bba7438745541e5133eaMindy Pereira    protected void setUp() throws Exception {
3161cea951d1e813941b80bba7438745541e5133eaMindy Pereira        super.setUp();
32106a12a1b6642e8c2f716aefa846d9664fbec158Andrew Sapperstein        mAdapter = new HierarchicalFolderSelectorAdapter(mContext, null, null, 1);
3361cea951d1e813941b80bba7438745541e5133eaMindy Pereira    }
3461cea951d1e813941b80bba7438745541e5133eaMindy Pereira
3561cea951d1e813941b80bba7438745541e5133eaMindy Pereira    public void testEmpty() {
3670ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux        assertNull(truncate(null));
3761cea951d1e813941b80bba7438745541e5133eaMindy Pereira    }
3861cea951d1e813941b80bba7438745541e5133eaMindy Pereira
3961cea951d1e813941b80bba7438745541e5133eaMindy Pereira    public void testNoParents() {
4070ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux        assertEquals("name", truncate("name"));
4161cea951d1e813941b80bba7438745541e5133eaMindy Pereira    }
4261cea951d1e813941b80bba7438745541e5133eaMindy Pereira
4361cea951d1e813941b80bba7438745541e5133eaMindy Pereira    public void testSingleParent() {
4470ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux        assertEquals("parent\u2215folder", truncate("parent/folder"));
4561cea951d1e813941b80bba7438745541e5133eaMindy Pereira    }
4661cea951d1e813941b80bba7438745541e5133eaMindy Pereira
4761cea951d1e813941b80bba7438745541e5133eaMindy Pereira    public void testDoubleParent() {
4870ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux        assertEquals("grandparent\u2215parent\u2215folder", truncate("grandparent/parent/folder"));
4961cea951d1e813941b80bba7438745541e5133eaMindy Pereira    }
5061cea951d1e813941b80bba7438745541e5133eaMindy Pereira
5161cea951d1e813941b80bba7438745541e5133eaMindy Pereira    public void testEllipsizedDoubleParent() {
5261cea951d1e813941b80bba7438745541e5133eaMindy Pereira        assertEquals("grandparent\u2215\u2026\u2215parent\u2215folder",
5370ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux                truncate("grandparent/stuff/stuff/stuff/stuff/parent/folder"));
5470ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux    }
5570ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux
5670ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux    private String truncate(String hierarchy) {
5770ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux        final SpannableStringBuilder result = mAdapter.truncateHierarchy(hierarchy);
5870ebf05c8afcef77f3a63ffac011ed37b580f1e5James Lemieux        return result == null ? null : result.toString();
5961cea951d1e813941b80bba7438745541e5133eaMindy Pereira    }
6061cea951d1e813941b80bba7438745541e5133eaMindy Pereira}
61