diff options
author | 2024-12-16 21:45:41 -0500 | |
---|---|---|
committer | 2025-01-11 14:17:35 -0500 | |
commit | e9a0e66716dab4dd3184d009d8920de1961efdfa (patch) | |
tree | 02dcc096643d74645bf28459c2834c3d4a2ad7f2 /tests/src/org/kelar/inputmethod/compat/TextInfoCompatUtilsTests.java | |
parent | fb3b9360d70596d7e921de8bf7d3ca99564a077e (diff) | |
download | latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.tar.gz latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.tar.xz latinime-e9a0e66716dab4dd3184d009d8920de1961efdfa.zip |
Rename to Kelar Keyboard (org.kelar.inputmethod.latin)
Diffstat (limited to 'tests/src/org/kelar/inputmethod/compat/TextInfoCompatUtilsTests.java')
-rw-r--r-- | tests/src/org/kelar/inputmethod/compat/TextInfoCompatUtilsTests.java | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/tests/src/org/kelar/inputmethod/compat/TextInfoCompatUtilsTests.java b/tests/src/org/kelar/inputmethod/compat/TextInfoCompatUtilsTests.java new file mode 100644 index 000000000..9b2ab94ee --- /dev/null +++ b/tests/src/org/kelar/inputmethod/compat/TextInfoCompatUtilsTests.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2014 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 org.kelar.inputmethod.compat; + +import static org.junit.Assert.assertTrue; + +import android.graphics.Typeface; +import android.os.Parcel; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextUtils; +import android.text.style.StyleSpan; +import android.text.style.URLSpan; +import android.view.textservice.TextInfo; + +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.Arrays; + +@SmallTest +@RunWith(AndroidJUnit4.class) +public class TextInfoCompatUtilsTests { + final private static String TEST_TEXT = "0123456789"; + final private static int TEST_COOKIE = 0x1234; + final private static int TEST_SEQUENCE_NUMBER = 0x4321; + final private static int TEST_CHAR_SEQUENCE_START = 1; + final private static int TEST_CHAR_SEQUENCE_END = 6; + final private static StyleSpan TEST_STYLE_SPAN = new StyleSpan(Typeface.BOLD); + final private static int TEST_STYLE_SPAN_START = 4; + final private static int TEST_STYLE_SPAN_END = 5; + final private static int TEST_STYLE_SPAN_FLAGS = Spanned.SPAN_EXCLUSIVE_INCLUSIVE; + final private static URLSpan TEST_URL_SPAN_URL = new URLSpan("http://example.com"); + final private static int TEST_URL_SPAN_START = 3; + final private static int TEST_URL_SPAN_END = 7; + final private static int TEST_URL_SPAN_FLAGS = Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; + + @Test + public void testGetCharSequence() { + final SpannableString text = new SpannableString(TEST_TEXT); + text.setSpan(TEST_STYLE_SPAN, TEST_STYLE_SPAN_START, TEST_STYLE_SPAN_END, + TEST_STYLE_SPAN_FLAGS); + text.setSpan(TEST_URL_SPAN_URL, TEST_URL_SPAN_START, TEST_URL_SPAN_END, + TEST_URL_SPAN_FLAGS); + + final TextInfo textInfo = TextInfoCompatUtils.newInstance(text, + TEST_CHAR_SEQUENCE_START, TEST_CHAR_SEQUENCE_END, TEST_COOKIE, + TEST_SEQUENCE_NUMBER); + final Spanned expectedSpanned = (Spanned) text.subSequence(TEST_CHAR_SEQUENCE_START, + TEST_CHAR_SEQUENCE_END); + final CharSequence actualCharSequence = + TextInfoCompatUtils.getCharSequenceOrString(textInfo); + + // This should be valid even if TextInfo#getCharSequence is not supported. + assertTrue(TextUtils.equals(expectedSpanned, actualCharSequence)); + + if (TextInfoCompatUtils.isCharSequenceSupported()) { + // This is valid only if TextInfo#getCharSequence is supported. + assertTrue("should be Spanned", actualCharSequence instanceof Spanned); + assertTrue(Arrays.equals(marshall(expectedSpanned), marshall(actualCharSequence))); + } + } + + private static byte[] marshall(final CharSequence cahrSequence) { + Parcel parcel = null; + try { + parcel = Parcel.obtain(); + TextUtils.writeToParcel(cahrSequence, parcel, 0); + return parcel.marshall(); + } finally { + if (parcel != null) { + parcel.recycle(); + parcel = null; + } + } + } +} |