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