11a5a3217595b183deee7a31b25e77eeed707e381Kenny Root/*
21a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * Copyright (C) 2007 The Android Open Source Project
31a5a3217595b183deee7a31b25e77eeed707e381Kenny Root *
41a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * Licensed under the Apache License, Version 2.0 (the "License");
51a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * you may not use this file except in compliance with the License.
61a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * You may obtain a copy of the License at
71a5a3217595b183deee7a31b25e77eeed707e381Kenny Root *
81a5a3217595b183deee7a31b25e77eeed707e381Kenny Root *      http://www.apache.org/licenses/LICENSE-2.0
91a5a3217595b183deee7a31b25e77eeed707e381Kenny Root *
101a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * Unless required by applicable law or agreed to in writing, software
111a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * distributed under the License is distributed on an "AS IS" BASIS,
121a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * See the License for the specific language governing permissions and
141a5a3217595b183deee7a31b25e77eeed707e381Kenny Root * limitations under the License.
151a5a3217595b183deee7a31b25e77eeed707e381Kenny Root */
161a5a3217595b183deee7a31b25e77eeed707e381Kenny Root
171d3165f10b12165f02b7015ac1a817c5f60e6399Neal Nguyenpackage android.text;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1902f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader
2002f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournaderimport static org.junit.Assert.assertEquals;
2102f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournaderimport static org.junit.Assert.assertNotNull;
2202f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader
2302f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournaderimport android.text.style.BulletSpan;
2402f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournaderimport android.text.style.QuoteSpan;
2502f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournaderimport android.text.style.SubscriptSpan;
2602f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournaderimport android.text.style.UnderlineSpan;
2702f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader
2802f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournaderimport org.junit.Test;
2902f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class SpannableStringBuilderTest extends SpannableTest {
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected Spannable newSpannableWithText(String text) {
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return new SpannableStringBuilder(text);
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3502f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader
3602f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader    @Test
3702f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader    public void testGetSpans_sortsByPriorityEvenWhenSortParamIsFalse() {
3802f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        String text = "p_in_s";
3902f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        SpannableStringBuilder builder = new SpannableStringBuilder(text);
4002f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        Object first = new SubscriptSpan();
4102f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        Object second = new UnderlineSpan();
4202f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        Object third = new BulletSpan();
4302f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        Object fourth = new QuoteSpan();
4402f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader
4502f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        builder.setSpan(first, 2, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
4602f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        builder.setSpan(second, 1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
4702f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        builder.setSpan(third, 2, text.length(), 1 << Spanned.SPAN_PRIORITY_SHIFT);
4802f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        builder.setSpan(fourth, 0, text.length(), 2 << Spanned.SPAN_PRIORITY_SHIFT);
4902f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader
5002f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        Object[] spans = builder.getSpans(0, text.length(), Object.class, false);
5102f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader
5202f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        assertNotNull(spans);
5302f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        assertEquals(4, spans.length);
5402f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        // priority spans are first
5502f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        assertEquals(fourth, spans[0]);
5602f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        assertEquals(third, spans[1]);
5702f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        // other spans should be there
5802f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        assertEquals(second, spans[2]);
5902f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader        assertEquals(first, spans[3]);
6002f167c35ad81fce82c0ebc14a15892fb6981866Roozbeh Pournader    }
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
62