| /* |
| * Copyright (C) 2013 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.inputmethod.latin.utils; |
| |
| import android.test.AndroidTestCase; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.text.style.SuggestionSpan; |
| import android.text.style.URLSpan; |
| import android.text.SpannableStringBuilder; |
| import android.text.Spannable; |
| import android.text.Spanned; |
| |
| @SmallTest |
| public class SpannableStringUtilsTests extends AndroidTestCase { |
| public void testConcatWithSuggestionSpansOnly() { |
| SpannableStringBuilder s = new SpannableStringBuilder("test string\ntest string\n" |
| + "test string\ntest string\ntest string\ntest string\ntest string\ntest string\n" |
| + "test string\ntest string\n"); |
| final int N = 10; |
| for (int i = 0; i < N; ++i) { |
| // Put a PARAGRAPH-flagged span that should not be found in the result. |
| s.setSpan(new SuggestionSpan(getContext(), |
| new String[] {"" + i}, Spannable.SPAN_PARAGRAPH), |
| i * 12, i * 12 + 12, Spannable.SPAN_PARAGRAPH); |
| // Put a normal suggestion span that should be found in the result. |
| s.setSpan(new SuggestionSpan(getContext(), new String[] {"" + i}, 0), i, i * 2, 0); |
| // Put a URL span than should not be found in the result. |
| s.setSpan(new URLSpan("http://a"), i, i * 2, 0); |
| } |
| |
| final CharSequence a = s.subSequence(0, 15); |
| final CharSequence b = s.subSequence(15, s.length()); |
| final Spanned result = |
| (Spanned)SpannableStringUtils.concatWithNonParagraphSuggestionSpansOnly(a, b); |
| |
| Object[] spans = result.getSpans(0, result.length(), SuggestionSpan.class); |
| for (int i = 0; i < spans.length; i++) { |
| final int flags = result.getSpanFlags(spans[i]); |
| assertEquals("Should not find a span with PARAGRAPH flag", |
| flags & Spannable.SPAN_PARAGRAPH, 0); |
| assertTrue("Should be a SuggestionSpan", spans[i] instanceof SuggestionSpan); |
| } |
| } |
| } |