public void testFilter() { // Define the variables CharSequence source; SpannableStringBuilder dest; // Constructor to create a LengthFilter LengthFilter lengthFilter = new LengthFilter(10); InputFilter[] filters = {lengthFilter}; // filter() implicitly invoked. If the total length > filter length, the filter will // cut off the source CharSequence from beginning to fit the filter length. source = "abc"; dest = new SpannableStringBuilder("abcdefgh"); dest.setFilters(filters); dest.insert(1, source); String expectedString1 = "aabbcdefgh"; assertEquals(expectedString1, dest.toString()); dest.replace(5, 8, source); String expectedString2 = "aabbcabcgh"; assertEquals(expectedString2, dest.toString()); dest.delete(1, 3); String expectedString3 = "abcabcgh"; assertEquals(expectedString3, dest.toString()); // filter() explicitly invoked dest = new SpannableStringBuilder("abcdefgh"); CharSequence beforeFilterSource = "TestLengthFilter"; String expectedAfterFilter = "TestLength"; CharSequence actualAfterFilter = lengthFilter.filter( beforeFilterSource, 0, beforeFilterSource.length(), dest, 0, dest.length()); assertEquals(expectedAfterFilter, actualAfterFilter); }