1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.settings.bluetooth; 18 19import android.test.AndroidTestCase; 20import android.test.suitebuilder.annotation.SmallTest; 21import android.text.InputFilter; 22import android.text.SpannableStringBuilder; 23 24import com.android.settings.bluetooth.Utf8ByteLengthFilter; 25 26public class Utf8ByteLengthFilterTest extends AndroidTestCase { 27 28 @SmallTest 29 public void testFilter() { 30 // Define the variables 31 CharSequence source; 32 SpannableStringBuilder dest; 33 // Constructor to create a LengthFilter 34 InputFilter lengthFilter = new Utf8ByteLengthFilter(10); 35 InputFilter[] filters = {lengthFilter}; 36 37 // filter() implicitly invoked. If the total length > filter length, the filter will 38 // cut off the source CharSequence from beginning to fit the filter length. 39 source = "abc"; 40 dest = new SpannableStringBuilder("abcdefgh"); 41 dest.setFilters(filters); 42 43 dest.insert(1, source); 44 String expectedString1 = "aabbcdefgh"; 45 assertEquals(expectedString1, dest.toString()); 46 47 dest.replace(5, 8, source); 48 String expectedString2 = "aabbcabcgh"; 49 assertEquals(expectedString2, dest.toString()); 50 51 dest.insert(2, source); 52 assertEquals(expectedString2, dest.toString()); 53 54 dest.delete(1, 3); 55 String expectedString3 = "abcabcgh"; 56 assertEquals(expectedString3, dest.toString()); 57 58 dest.append("12345"); 59 String expectedString4 = "abcabcgh12"; 60 assertEquals(expectedString4, dest.toString()); 61 62 source = "\u60a8\u597d"; // 2 Chinese chars == 6 bytes in UTF-8 63 dest.replace(8, 10, source); 64 assertEquals(expectedString3, dest.toString()); 65 66 dest.replace(0, 1, source); 67 String expectedString5 = "\u60a8bcabcgh"; 68 assertEquals(expectedString5, dest.toString()); 69 70 dest.replace(0, 4, source); 71 String expectedString6 = "\u60a8\u597dbcgh"; 72 assertEquals(expectedString6, dest.toString()); 73 74 source = "\u00a3\u00a5"; // 2 Latin-1 chars == 4 bytes in UTF-8 75 dest.delete(2, 6); 76 dest.insert(0, source); 77 String expectedString7 = "\u00a3\u00a5\u60a8\u597d"; 78 assertEquals(expectedString7, dest.toString()); 79 80 dest.replace(2, 3, source); 81 String expectedString8 = "\u00a3\u00a5\u00a3\u597d"; 82 assertEquals(expectedString8, dest.toString()); 83 84 dest.replace(3, 4, source); 85 String expectedString9 = "\u00a3\u00a5\u00a3\u00a3\u00a5"; 86 assertEquals(expectedString9, dest.toString()); 87 88 // filter() explicitly invoked 89 dest = new SpannableStringBuilder("abcdefgh"); 90 CharSequence beforeFilterSource = "TestLengthFilter"; 91 String expectedAfterFilter = "TestLength"; 92 CharSequence actualAfterFilter = lengthFilter.filter(beforeFilterSource, 0, 93 beforeFilterSource.length(), dest, 0, dest.length()); 94 assertEquals(expectedAfterFilter, actualAfterFilter); 95 } 96} 97