Home | History | Annotate | Download | only in cts
      1 /*
      2  * Copyright (C) 2008 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 
     17 package android.text.cts;
     18 
     19 
     20 import android.test.AndroidTestCase;
     21 import android.text.Selection;
     22 import android.text.SpannableStringBuilder;
     23 import android.text.StaticLayout;
     24 import android.text.TextPaint;
     25 
     26 public class SelectionTest extends AndroidTestCase {
     27     public void testGetSelectionStart() {
     28         CharSequence text = "hello, world";
     29         SpannableStringBuilder builder = new SpannableStringBuilder(text);
     30         assertEquals(-1, Selection.getSelectionStart(builder));
     31 
     32         Selection.setSelection(builder, 3, 8);
     33         assertEquals(3, Selection.getSelectionStart(builder));
     34 
     35         Selection.setSelection(builder, 3, 9);
     36         assertEquals(3, Selection.getSelectionStart(builder));
     37 
     38         Selection.setSelection(builder, 5, 7);
     39         assertEquals(5, Selection.getSelectionStart(builder));
     40 
     41         assertEquals(-1, Selection.getSelectionStart(null));
     42     }
     43 
     44     public void testGetSelectionEnd() {
     45         CharSequence text = "hello, world";
     46         SpannableStringBuilder builder = new SpannableStringBuilder(text);
     47         assertEquals(-1, Selection.getSelectionEnd(builder));
     48 
     49         Selection.setSelection(builder, 0, 10);
     50         assertEquals(10, Selection.getSelectionEnd(builder));
     51 
     52         Selection.setSelection(builder, 1, 8);
     53         assertEquals(8, Selection.getSelectionEnd(builder));
     54 
     55         Selection.setSelection(builder, 2, 8);
     56         assertEquals(8, Selection.getSelectionEnd(builder));
     57 
     58         assertEquals(-1, Selection.getSelectionStart(null));
     59     }
     60 
     61     public void testSetSelection1() {
     62         CharSequence text = "hello, world";
     63         SpannableStringBuilder builder = new SpannableStringBuilder(text);
     64         assertEquals(-1, Selection.getSelectionStart(builder));
     65         assertEquals(-1, Selection.getSelectionEnd(builder));
     66 
     67         Selection.setSelection(builder, 3, 6);
     68         assertEquals(3, Selection.getSelectionStart(builder));
     69         assertEquals(6, Selection.getSelectionEnd(builder));
     70 
     71         Selection.setSelection(builder, 3, 7);
     72         assertEquals(3, Selection.getSelectionStart(builder));
     73         assertEquals(7, Selection.getSelectionEnd(builder));
     74 
     75         Selection.setSelection(builder, 3, 7);
     76         assertEquals(3, Selection.getSelectionStart(builder));
     77         assertEquals(7, Selection.getSelectionEnd(builder));
     78 
     79         Selection.setSelection(builder, 6, 2);
     80         assertEquals(6, Selection.getSelectionStart(builder));
     81         assertEquals(2, Selection.getSelectionEnd(builder));
     82 
     83         try {
     84             Selection.setSelection(builder, -1, 100);
     85             fail("should throw IndexOutOfBoundsException");
     86         } catch (IndexOutOfBoundsException e) {
     87         }
     88     }
     89 
     90     public void testSetSelection2() {
     91         SpannableStringBuilder builder = new SpannableStringBuilder("hello, world");
     92         assertEquals(-1, Selection.getSelectionStart(builder));
     93         assertEquals(-1, Selection.getSelectionEnd(builder));
     94 
     95         Selection.setSelection(builder, 1, 4);
     96         assertEquals(1, Selection.getSelectionStart(builder));
     97         assertEquals(4, Selection.getSelectionEnd(builder));
     98 
     99         Selection.setSelection(builder, 3);
    100         assertEquals(3, Selection.getSelectionStart(builder));
    101         assertEquals(3, Selection.getSelectionEnd(builder));
    102 
    103         try {
    104             Selection.setSelection(builder, -1);
    105             fail("should throw IndexOutOfBoundsException");
    106         } catch (IndexOutOfBoundsException e) {
    107         }
    108 
    109         try {
    110             Selection.setSelection(builder, 100);
    111             fail("should throw IndexOutOfBoundsException");
    112         } catch (IndexOutOfBoundsException e) {
    113         }
    114     }
    115 
    116     public void testRemoveSelection() {
    117         CharSequence text = "hello, world";
    118         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    119         assertEquals(-1, Selection.getSelectionStart(builder));
    120         assertEquals(-1, Selection.getSelectionEnd(builder));
    121 
    122         Selection.removeSelection(builder);
    123         assertEquals(-1, Selection.getSelectionStart(builder));
    124         assertEquals(-1, Selection.getSelectionEnd(builder));
    125 
    126         Selection.setSelection(builder, 1, 6);
    127         assertEquals(1, Selection.getSelectionStart(builder));
    128         assertEquals(6, Selection.getSelectionEnd(builder));
    129 
    130         Selection.removeSelection(builder);
    131         assertEquals(-1, Selection.getSelectionStart(builder));
    132         assertEquals(-1, Selection.getSelectionEnd(builder));
    133     }
    134 
    135     public void testSelectAll() {
    136         CharSequence text = "hello, world";
    137         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    138         assertEquals(-1, Selection.getSelectionStart(builder));
    139         assertEquals(-1, Selection.getSelectionEnd(builder));;
    140 
    141         Selection.selectAll(builder);
    142         assertEquals(0, Selection.getSelectionStart(builder));
    143         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    144 
    145         Selection.setSelection(builder, 4, 5);
    146         Selection.selectAll(builder);
    147         assertEquals(0, Selection.getSelectionStart(builder));
    148         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    149 
    150         Selection.setSelection(builder, 8, 4);
    151         Selection.selectAll(builder);
    152         assertEquals(0, Selection.getSelectionStart(builder));
    153         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    154 
    155         SpannableStringBuilder empty = new SpannableStringBuilder();
    156         Selection.selectAll(empty);
    157         assertEquals(0, Selection.getSelectionStart(empty));
    158         assertEquals(0, Selection.getSelectionEnd(empty));
    159     }
    160 
    161     public void testMoveLeft() {
    162         CharSequence text = "hello\nworld";
    163         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    164         StaticLayout layout = new StaticLayout(text, new TextPaint(), 50, null, 0, 0, false);
    165         assertEquals(-1, Selection.getSelectionStart(builder));
    166         assertEquals(-1, Selection.getSelectionEnd(builder));
    167 
    168         Selection.setSelection(builder, 6, 8);
    169         assertTrue(Selection.moveLeft(builder, layout));
    170         assertEquals(6, Selection.getSelectionStart(builder));
    171         assertEquals(6, Selection.getSelectionEnd(builder));
    172 
    173         assertTrue(Selection.moveLeft(builder, layout));
    174         assertEquals(5, Selection.getSelectionStart(builder));
    175         assertEquals(5, Selection.getSelectionEnd(builder));
    176 
    177         Selection.setSelection(builder, 0, 0);
    178         assertFalse(Selection.moveLeft(builder, layout));
    179         assertEquals(0, Selection.getSelectionStart(builder));
    180         assertEquals(0, Selection.getSelectionEnd(builder));
    181 
    182         Selection.selectAll(builder);
    183         assertTrue(Selection.moveLeft(builder, layout));
    184         assertEquals(0, Selection.getSelectionStart(builder));
    185         assertEquals(0, Selection.getSelectionEnd(builder));
    186     }
    187 
    188     public void testMoveRight() {
    189         CharSequence text = "hello\nworld";
    190         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    191         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    192         assertEquals(-1, Selection.getSelectionStart(builder));
    193         assertEquals(-1, Selection.getSelectionEnd(builder));
    194 
    195         Selection.setSelection(builder,1, 5);
    196         assertTrue(Selection.moveRight(builder, layout));
    197         assertEquals(5, Selection.getSelectionStart(builder));
    198         assertEquals(5, Selection.getSelectionEnd(builder));
    199 
    200         assertTrue(Selection.moveRight(builder, layout));
    201         assertEquals(6, Selection.getSelectionStart(builder));
    202         assertEquals(6, Selection.getSelectionEnd(builder));
    203 
    204         assertTrue(Selection.moveRight(builder, layout));
    205         assertEquals(7, Selection.getSelectionStart(builder));
    206         assertEquals(7, Selection.getSelectionEnd(builder));
    207 
    208         Selection.setSelection(builder, text.length(), text.length());
    209         assertFalse(Selection.moveRight(builder, layout));
    210         assertEquals(text.length(), Selection.getSelectionStart(builder));
    211         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    212 
    213         Selection.selectAll(builder);
    214         assertTrue(Selection.moveRight(builder, layout));
    215         assertEquals(text.length(), Selection.getSelectionStart(builder));
    216         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    217     }
    218 
    219     public void testMoveUp() {
    220         CharSequence text = "Google\nhello,world";
    221         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    222         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    223         assertEquals(-1, Selection.getSelectionStart(builder));
    224         assertEquals(-1, Selection.getSelectionEnd(builder));
    225 
    226         Selection.moveUp(builder, layout);
    227 
    228         Selection.setSelection(builder, 7, 10);
    229         assertTrue(Selection.moveUp(builder, layout));
    230         assertEquals(7, Selection.getSelectionStart(builder));
    231         assertEquals(7, Selection.getSelectionEnd(builder));
    232 
    233         Selection.setSelection(builder, 0, text.length());
    234         assertFalse(Selection.moveUp(builder, layout));
    235         assertEquals(0, Selection.getSelectionStart(builder));
    236         assertEquals(0, Selection.getSelectionEnd(builder));
    237 
    238         Selection.setSelection(builder, 14);
    239         assertTrue(Selection.moveUp(builder, layout));
    240         assertEquals(4, Selection.getSelectionStart(builder));
    241         assertEquals(4, Selection.getSelectionEnd(builder));
    242 
    243         assertFalse(Selection.moveUp(builder, layout));
    244         assertEquals(4, Selection.getSelectionStart(builder));
    245         assertEquals(4, Selection.getSelectionEnd(builder));
    246 
    247         Selection.setSelection(builder, 5);
    248         assertFalse(Selection.moveUp(builder, layout));
    249         assertEquals(5, Selection.getSelectionStart(builder));
    250         assertEquals(5, Selection.getSelectionEnd(builder));
    251     }
    252 
    253     public void testMoveDown() {
    254         CharSequence text = "hello,world\nGoogle";
    255         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    256         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    257         assertEquals(-1, Selection.getSelectionStart(builder));
    258         assertEquals(-1, Selection.getSelectionEnd(builder));
    259 
    260         Selection.setSelection(builder, 1, 3);
    261         assertTrue(Selection.moveDown(builder, layout));
    262         assertEquals(3, Selection.getSelectionStart(builder));
    263         assertEquals(3, Selection.getSelectionEnd(builder));
    264 
    265         Selection.setSelection(builder, 0, text.length());
    266         assertFalse(Selection.moveDown(builder, layout));
    267         assertEquals(text.length(), Selection.getSelectionStart(builder));
    268         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    269 
    270         Selection.setSelection(builder, 5);
    271         assertTrue(Selection.moveDown(builder, layout));
    272         assertEquals(14, Selection.getSelectionStart(builder));
    273         assertEquals(14, Selection.getSelectionEnd(builder));
    274 
    275         assertFalse(Selection.moveDown(builder, layout));
    276         assertEquals(14, Selection.getSelectionStart(builder));
    277         assertEquals(14, Selection.getSelectionEnd(builder));
    278 
    279         Selection.setSelection(builder, 10);
    280         Selection.moveDown(builder, layout);
    281         assertEquals(18, Selection.getSelectionStart(builder));
    282         assertEquals(18, Selection.getSelectionEnd(builder));
    283     }
    284 
    285     public void testExtendSelection() {
    286         CharSequence text = "hello, world";
    287         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    288         assertEquals(-1, Selection.getSelectionStart(builder));
    289         assertEquals(-1, Selection.getSelectionEnd(builder));
    290 
    291         Selection.setSelection(builder, 3, 6);
    292         Selection.extendSelection(builder, 6);
    293         assertEquals(3, Selection.getSelectionStart(builder));
    294         assertEquals(6, Selection.getSelectionEnd(builder));
    295 
    296         Selection.setSelection(builder, 3, 6);
    297         Selection.extendSelection(builder, 8);
    298         assertEquals(3, Selection.getSelectionStart(builder));
    299         assertEquals(8, Selection.getSelectionEnd(builder));
    300 
    301         Selection.setSelection(builder, 3, 6);
    302         Selection.extendSelection(builder, 1);
    303         assertEquals(3, Selection.getSelectionStart(builder));
    304         assertEquals(1, Selection.getSelectionEnd(builder));
    305 
    306         try {
    307             Selection.extendSelection(builder, -1);
    308             fail("should throw IndexOutOfBoundsException");
    309         } catch (IndexOutOfBoundsException e) {
    310         }
    311 
    312         try {
    313             Selection.extendSelection(builder, 100);
    314             fail("should throw IndexOutOfBoundsException");
    315         } catch (IndexOutOfBoundsException e) {
    316         }
    317 
    318         try {
    319             Selection.extendSelection(null, 3);
    320             fail("should throw NullPointerException");
    321         } catch (NullPointerException e) {
    322         }
    323 
    324         try {
    325             Selection.extendSelection(new SpannableStringBuilder(), 3);
    326             fail("should throw IndexOutOfBoundsException");
    327         } catch (IndexOutOfBoundsException e) {
    328         }
    329     }
    330 
    331     public void testExtendLeft() {
    332         CharSequence text = "Google\nhello, world";
    333         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    334         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    335         assertEquals(-1, Selection.getSelectionStart(builder));
    336         assertEquals(-1, Selection.getSelectionEnd(builder));
    337 
    338         Selection.setSelection(builder, 7, 8);
    339         assertTrue(Selection.extendLeft(builder, layout));
    340         assertEquals(7, Selection.getSelectionStart(builder));
    341         assertEquals(7, Selection.getSelectionEnd(builder));
    342 
    343         assertTrue(Selection.extendLeft(builder, layout));
    344         assertEquals(7, Selection.getSelectionStart(builder));
    345         assertEquals(6, Selection.getSelectionEnd(builder));
    346 
    347         Selection.setSelection(builder, 0, 1);
    348         assertTrue(Selection.extendLeft(builder, layout));
    349         assertEquals(0, Selection.getSelectionStart(builder));
    350         assertEquals(0, Selection.getSelectionEnd(builder));
    351 
    352         assertTrue(Selection.extendLeft(builder, layout));
    353         assertEquals(0, Selection.getSelectionStart(builder));
    354         assertEquals(0, Selection.getSelectionEnd(builder));
    355     }
    356 
    357     public void testExtendRight() {
    358         CharSequence text = "Google\nhello, world";
    359         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    360         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    361         assertEquals(-1, Selection.getSelectionStart(builder));
    362         assertEquals(-1, Selection.getSelectionEnd(builder));
    363 
    364         Selection.setSelection(builder, 1, 6);
    365         assertTrue(Selection.extendRight(builder, layout));
    366         assertEquals(1, Selection.getSelectionStart(builder));
    367         assertEquals(7, Selection.getSelectionEnd(builder));
    368 
    369         assertTrue(Selection.extendRight(builder, layout));
    370         assertEquals(1, Selection.getSelectionStart(builder));
    371         assertEquals(8, Selection.getSelectionEnd(builder));
    372 
    373         Selection.setSelection(builder, 12, text.length());
    374         assertTrue(Selection.extendRight(builder, layout));
    375         assertEquals(12, Selection.getSelectionStart(builder));
    376         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    377     }
    378 
    379     public void testExtendUp() {
    380         CharSequence text = "Google\nhello, world";
    381         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    382         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    383         assertEquals(-1, Selection.getSelectionStart(builder));
    384         assertEquals(-1, Selection.getSelectionEnd(builder));
    385 
    386         assertTrue(Selection.extendUp(builder, layout));
    387         assertEquals(-1, Selection.getSelectionStart(builder));
    388         assertEquals(0, Selection.getSelectionEnd(builder));
    389 
    390         Selection.setSelection(builder, 8, 15);
    391         assertTrue(Selection.extendUp(builder, layout));
    392         assertEquals(8, Selection.getSelectionStart(builder));
    393         assertEquals(4, Selection.getSelectionEnd(builder));
    394 
    395         assertTrue(Selection.extendUp(builder, layout));
    396         assertEquals(8, Selection.getSelectionStart(builder));
    397         assertEquals(0, Selection.getSelectionEnd(builder));
    398 
    399         assertTrue(Selection.extendUp(builder, layout));
    400         assertEquals(8, Selection.getSelectionStart(builder));
    401         assertEquals(0, Selection.getSelectionEnd(builder));
    402 
    403         builder = new SpannableStringBuilder();
    404         assertTrue(Selection.extendUp(builder, layout));
    405         assertEquals(-1, Selection.getSelectionStart(builder));
    406         assertEquals(0, Selection.getSelectionEnd(builder));
    407     }
    408 
    409     public void testExtendDown() {
    410         CharSequence text = "Google\nhello, world";
    411         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    412         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    413         assertEquals(-1, Selection.getSelectionStart(builder));
    414         assertEquals(-1, Selection.getSelectionEnd(builder));
    415 
    416         Selection.setSelection(builder, 1, 3);
    417         assertTrue(Selection.extendDown(builder, layout));
    418         assertEquals(1, Selection.getSelectionStart(builder));
    419         assertEquals(14, Selection.getSelectionEnd(builder));
    420 
    421         assertTrue(Selection.extendDown(builder, layout));
    422         assertEquals(1, Selection.getSelectionStart(builder));
    423         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    424 
    425         assertTrue(Selection.extendDown(builder, layout));
    426         assertEquals(1, Selection.getSelectionStart(builder));
    427         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    428     }
    429 
    430     public void testExtendToLeftEdge() {
    431         CharSequence text = "hello\nworld";
    432         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    433         StaticLayout layout = new StaticLayout(text, new TextPaint(), 50, null, 0, 0, false);
    434         assertEquals(-1, Selection.getSelectionStart(builder));
    435         assertEquals(-1, Selection.getSelectionEnd(builder));
    436 
    437         assertTrue(Selection.extendToLeftEdge(builder, layout));
    438         assertEquals(-1, Selection.getSelectionStart(builder));
    439         assertEquals(0, Selection.getSelectionEnd(builder));
    440 
    441         Selection.setSelection(builder, 4, 9);
    442         assertTrue(Selection.extendToLeftEdge(builder, layout));
    443         assertEquals(4, Selection.getSelectionStart(builder));
    444         assertEquals(6, Selection.getSelectionEnd(builder));
    445 
    446         Selection.setSelection(builder, 1, 5);
    447         assertTrue(Selection.extendToLeftEdge(builder, layout));
    448         assertEquals(1, Selection.getSelectionStart(builder));
    449         assertEquals(0, Selection.getSelectionEnd(builder));
    450 
    451         Selection.setSelection(builder, 2, 2);
    452         assertTrue(Selection.extendToLeftEdge(builder, layout));
    453         assertEquals(2, Selection.getSelectionStart(builder));
    454         assertEquals(0, Selection.getSelectionEnd(builder));
    455 
    456         builder = new SpannableStringBuilder();
    457         assertEquals(-1, Selection.getSelectionStart(builder));
    458         assertEquals(-1, Selection.getSelectionEnd(builder));
    459 
    460         assertTrue(Selection.extendToLeftEdge(builder, layout));
    461         assertEquals(-1, Selection.getSelectionStart(builder));
    462         assertEquals(0, Selection.getSelectionEnd(builder));
    463     }
    464 
    465     public void testExtendToRightEdge() {
    466         CharSequence text = "hello\nworld";
    467         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    468         StaticLayout layout = new StaticLayout(text, new TextPaint(), 50, null, 0, 0, false);
    469         assertEquals(-1, Selection.getSelectionStart(builder));
    470         assertEquals(-1, Selection.getSelectionEnd(builder));
    471 
    472         assertTrue(Selection.extendToRightEdge(builder, layout));
    473         assertEquals(-1, Selection.getSelectionStart(builder));
    474         assertEquals(5, Selection.getSelectionEnd(builder));
    475 
    476         Selection.setSelection(builder, 1, 3);
    477         assertTrue(Selection.extendToRightEdge(builder, layout));
    478         assertEquals(1, Selection.getSelectionStart(builder));
    479         assertEquals(5, Selection.getSelectionEnd(builder));
    480 
    481         Selection.setSelection(builder, 1, 7);
    482         assertTrue(Selection.extendToRightEdge(builder, layout));
    483         assertEquals(1, Selection.getSelectionStart(builder));
    484         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    485 
    486         assertTrue(Selection.extendToRightEdge(builder, layout));
    487         assertEquals(1, Selection.getSelectionStart(builder));
    488         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    489     }
    490 
    491     public void testMoveToLeftEdge() {
    492         CharSequence text = "hello\nworld";
    493         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    494         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    495         assertEquals(-1, Selection.getSelectionStart(builder));
    496         assertEquals(-1, Selection.getSelectionEnd(builder));
    497 
    498         assertTrue(Selection.moveToLeftEdge(builder, layout));
    499         assertEquals(0, Selection.getSelectionStart(builder));
    500         assertEquals(0, Selection.getSelectionEnd(builder));
    501 
    502         Selection.setSelection(builder, 1, 10);
    503         assertTrue(Selection.moveToLeftEdge(builder, layout));
    504         assertEquals(6, Selection.getSelectionStart(builder));
    505         assertEquals(6, Selection.getSelectionEnd(builder));
    506 
    507         Selection.setSelection(builder, 1, 3);
    508         assertTrue(Selection.moveToLeftEdge(builder, layout));
    509         assertEquals(0, Selection.getSelectionStart(builder));
    510         assertEquals(0, Selection.getSelectionEnd(builder));
    511 
    512         assertTrue(Selection.moveToLeftEdge(builder, layout));
    513         assertEquals(0, Selection.getSelectionStart(builder));
    514         assertEquals(0, Selection.getSelectionEnd(builder));
    515 
    516         builder = new SpannableStringBuilder();
    517         assertTrue(Selection.moveToLeftEdge(builder, layout));
    518         assertEquals(0, Selection.getSelectionStart(builder));
    519         assertEquals(0, Selection.getSelectionEnd(builder));
    520     }
    521 
    522     public void testMoveToRightEdge() {
    523         CharSequence text = "hello\nworld";
    524         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    525         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0,false);
    526         assertEquals(-1, Selection.getSelectionStart(builder));
    527         assertEquals(-1, Selection.getSelectionEnd(builder));
    528 
    529         assertTrue(Selection.moveToRightEdge(builder, layout));
    530         assertEquals(5, Selection.getSelectionStart(builder));
    531         assertEquals(5, Selection.getSelectionEnd(builder));
    532 
    533         Selection.setSelection(builder, 1, 2);
    534         assertTrue(Selection.moveToRightEdge(builder, layout));
    535         assertEquals(5, Selection.getSelectionStart(builder));
    536         assertEquals(5, Selection.getSelectionEnd(builder));
    537 
    538         Selection.setSelection(builder, 1, 7);
    539         assertTrue(Selection.moveToRightEdge(builder, layout));
    540         assertEquals(text.length(), Selection.getSelectionStart(builder));
    541         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    542 
    543         assertTrue(Selection.moveToRightEdge(builder, layout));
    544         assertEquals(text.length(), Selection.getSelectionStart(builder));
    545         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    546     }
    547 }
    548