15414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian/*
25414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * Copyright (C) 2018 The Android Open Source Project
35414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian *
45414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * Licensed under the Apache License, Version 2.0 (the "License");
55414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * you may not use this file except in compliance with the License.
65414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * You may obtain a copy of the License at
75414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian *
85414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian *       http://www.apache.org/licenses/LICENSE-2.0
95414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian *
105414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * Unless required by applicable law or agreed to in writing, software
115414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * distributed under the License is distributed on an "AS IS" BASIS,
125414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * See the License for the specific language governing permissions and
145414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian * limitations under the License.
155414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian */
165414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian
179c80550cbbe357a89e2abeeb9c7769fcaefc3a65Jake Whartonpackage androidx.core.text
185414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian
195414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrianimport android.graphics.Typeface.BOLD
20a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Whartonimport android.text.Spanned.SPAN_INCLUSIVE_EXCLUSIVE
215414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrianimport android.text.SpannedString
225414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrianimport android.text.style.StyleSpan
235414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrianimport android.text.style.UnderlineSpan
245414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrianimport org.junit.Assert.assertEquals
25a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Whartonimport org.junit.Assert.assertSame
265414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrianimport org.junit.Assert.assertTrue
275414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrianimport org.junit.Test
285414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian
295414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrianclass SpannedStringTest {
305414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian
315414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian    @Test fun toSpanned() = assertTrue("Hello, World".toSpanned() is SpannedString)
325414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian
335414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian    @Test fun getSpans() {
34a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton        val bold = StyleSpan(BOLD)
35a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton        val underline = UnderlineSpan()
36a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton
375414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian        val s = "Hello, World".toSpannable()
38a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton        s.setSpan(bold, 0, 5, SPAN_INCLUSIVE_EXCLUSIVE)
39a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton        s.setSpan(underline, 7, 12, SPAN_INCLUSIVE_EXCLUSIVE)
40a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton
41a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton        assertSame(bold, s.getSpans<StyleSpan>().single())
42a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton        assertSame(underline, s.getSpans<UnderlineSpan>().single())
435414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian        assertEquals(s.getSpans<Any>().size, 2)
44a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton
45a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton        assertSame(bold, s.getSpans<Any>(0, 6).single())
46a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton        assertSame(underline, s.getSpans<Any>(6, 12).single())
475414238bd40e7deebeabf0e41a59eaaa05f4cdfeHendra Anggrian    }
48a4ba387dd7b64fa8bc269778bac6bb450d328786Jake Wharton}
49