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
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.InstrumentationTestCase;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.MoreAsserts;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.MediumTest;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.Spannable;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class SpannableTest extends InstrumentationTestCase {
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected abstract Spannable newSpannableWithText(String text);
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @MediumTest
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void testGetSpans() {
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Spannable spannable = newSpannableWithText("abcdef");
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Object emptySpan = new Object();
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        spannable.setSpan(emptySpan, 1, 1, 0);
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Object unemptySpan = new Object();
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        spannable.setSpan(unemptySpan, 1, 2, 0);
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Object[] spans;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // Empty spans are included when they merely abut the query region
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // but other spans are not, unless the query region is empty, in
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // in which case any abutting spans are returned.
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        spans = spannable.getSpans(0, 1, Object.class);
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MoreAsserts.assertEquals(new Object[]{emptySpan}, spans);
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        spans = spannable.getSpans(0, 2, Object.class);
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MoreAsserts.assertEquals(new Object[]{emptySpan, unemptySpan}, spans);
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        spans = spannable.getSpans(1, 2, Object.class);
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MoreAsserts.assertEquals(new Object[]{emptySpan, unemptySpan}, spans);
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        spans = spannable.getSpans(2, 2, Object.class);
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        MoreAsserts.assertEquals(new Object[]{unemptySpan}, spans);
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
51