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         // move to beginning of first line (behavior changed in L)
    244         assertTrue(Selection.moveUp(builder, layout));
    245         assertEquals(0, Selection.getSelectionStart(builder));
    246         assertEquals(0, Selection.getSelectionEnd(builder));
    247 
    248         assertFalse(Selection.moveUp(builder, layout));
    249         assertEquals(0, Selection.getSelectionStart(builder));
    250         assertEquals(0, Selection.getSelectionEnd(builder));
    251 
    252         Selection.setSelection(builder, 5);
    253         assertTrue(Selection.moveUp(builder, layout));
    254         assertEquals(0, Selection.getSelectionStart(builder));
    255         assertEquals(0, Selection.getSelectionEnd(builder));
    256     }
    257 
    258     public void testMoveDown() {
    259         CharSequence text = "hello,world\nGoogle";
    260         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    261         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    262         assertEquals(-1, Selection.getSelectionStart(builder));
    263         assertEquals(-1, Selection.getSelectionEnd(builder));
    264 
    265         Selection.setSelection(builder, 1, 3);
    266         assertTrue(Selection.moveDown(builder, layout));
    267         assertEquals(3, Selection.getSelectionStart(builder));
    268         assertEquals(3, Selection.getSelectionEnd(builder));
    269 
    270         Selection.setSelection(builder, 0, text.length());
    271         assertFalse(Selection.moveDown(builder, layout));
    272         assertEquals(text.length(), Selection.getSelectionStart(builder));
    273         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    274 
    275         Selection.setSelection(builder, 5);
    276         assertTrue(Selection.moveDown(builder, layout));
    277         assertEquals(14, Selection.getSelectionStart(builder));
    278         assertEquals(14, Selection.getSelectionEnd(builder));
    279 
    280         // move to end of last line (behavior changed in L)
    281         assertTrue(Selection.moveDown(builder, layout));
    282         assertEquals(18, Selection.getSelectionStart(builder));
    283         assertEquals(18, Selection.getSelectionEnd(builder));
    284 
    285         assertFalse(Selection.moveDown(builder, layout));
    286         assertEquals(18, Selection.getSelectionStart(builder));
    287         assertEquals(18, Selection.getSelectionEnd(builder));
    288 
    289         Selection.setSelection(builder, 10);
    290         Selection.moveDown(builder, layout);
    291         assertEquals(18, Selection.getSelectionStart(builder));
    292         assertEquals(18, Selection.getSelectionEnd(builder));
    293     }
    294 
    295     public void testExtendSelection() {
    296         CharSequence text = "hello, world";
    297         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    298         assertEquals(-1, Selection.getSelectionStart(builder));
    299         assertEquals(-1, Selection.getSelectionEnd(builder));
    300 
    301         Selection.setSelection(builder, 3, 6);
    302         Selection.extendSelection(builder, 6);
    303         assertEquals(3, Selection.getSelectionStart(builder));
    304         assertEquals(6, Selection.getSelectionEnd(builder));
    305 
    306         Selection.setSelection(builder, 3, 6);
    307         Selection.extendSelection(builder, 8);
    308         assertEquals(3, Selection.getSelectionStart(builder));
    309         assertEquals(8, Selection.getSelectionEnd(builder));
    310 
    311         Selection.setSelection(builder, 3, 6);
    312         Selection.extendSelection(builder, 1);
    313         assertEquals(3, Selection.getSelectionStart(builder));
    314         assertEquals(1, Selection.getSelectionEnd(builder));
    315 
    316         try {
    317             Selection.extendSelection(builder, -1);
    318             fail("should throw IndexOutOfBoundsException");
    319         } catch (IndexOutOfBoundsException e) {
    320         }
    321 
    322         try {
    323             Selection.extendSelection(builder, 100);
    324             fail("should throw IndexOutOfBoundsException");
    325         } catch (IndexOutOfBoundsException e) {
    326         }
    327 
    328         try {
    329             Selection.extendSelection(null, 3);
    330             fail("should throw NullPointerException");
    331         } catch (NullPointerException e) {
    332         }
    333 
    334         try {
    335             Selection.extendSelection(new SpannableStringBuilder(), 3);
    336             fail("should throw IndexOutOfBoundsException");
    337         } catch (IndexOutOfBoundsException e) {
    338         }
    339     }
    340 
    341     public void testExtendLeft() {
    342         CharSequence text = "Google\nhello, world";
    343         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    344         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    345         assertEquals(-1, Selection.getSelectionStart(builder));
    346         assertEquals(-1, Selection.getSelectionEnd(builder));
    347 
    348         Selection.setSelection(builder, 7, 8);
    349         assertTrue(Selection.extendLeft(builder, layout));
    350         assertEquals(7, Selection.getSelectionStart(builder));
    351         assertEquals(7, Selection.getSelectionEnd(builder));
    352 
    353         assertTrue(Selection.extendLeft(builder, layout));
    354         assertEquals(7, Selection.getSelectionStart(builder));
    355         assertEquals(6, Selection.getSelectionEnd(builder));
    356 
    357         Selection.setSelection(builder, 0, 1);
    358         assertTrue(Selection.extendLeft(builder, layout));
    359         assertEquals(0, Selection.getSelectionStart(builder));
    360         assertEquals(0, Selection.getSelectionEnd(builder));
    361 
    362         assertTrue(Selection.extendLeft(builder, layout));
    363         assertEquals(0, Selection.getSelectionStart(builder));
    364         assertEquals(0, Selection.getSelectionEnd(builder));
    365     }
    366 
    367     public void testExtendRight() {
    368         CharSequence text = "Google\nhello, world";
    369         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    370         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    371         assertEquals(-1, Selection.getSelectionStart(builder));
    372         assertEquals(-1, Selection.getSelectionEnd(builder));
    373 
    374         Selection.setSelection(builder, 1, 6);
    375         assertTrue(Selection.extendRight(builder, layout));
    376         assertEquals(1, Selection.getSelectionStart(builder));
    377         assertEquals(7, Selection.getSelectionEnd(builder));
    378 
    379         assertTrue(Selection.extendRight(builder, layout));
    380         assertEquals(1, Selection.getSelectionStart(builder));
    381         assertEquals(8, Selection.getSelectionEnd(builder));
    382 
    383         Selection.setSelection(builder, 12, text.length());
    384         assertTrue(Selection.extendRight(builder, layout));
    385         assertEquals(12, Selection.getSelectionStart(builder));
    386         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    387     }
    388 
    389     public void testExtendUp() {
    390         CharSequence text = "Google\nhello, world";
    391         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    392         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    393         assertEquals(-1, Selection.getSelectionStart(builder));
    394         assertEquals(-1, Selection.getSelectionEnd(builder));
    395 
    396         assertTrue(Selection.extendUp(builder, layout));
    397         assertEquals(-1, Selection.getSelectionStart(builder));
    398         assertEquals(0, Selection.getSelectionEnd(builder));
    399 
    400         Selection.setSelection(builder, 8, 15);
    401         assertTrue(Selection.extendUp(builder, layout));
    402         assertEquals(8, Selection.getSelectionStart(builder));
    403         assertEquals(4, Selection.getSelectionEnd(builder));
    404 
    405         assertTrue(Selection.extendUp(builder, layout));
    406         assertEquals(8, Selection.getSelectionStart(builder));
    407         assertEquals(0, Selection.getSelectionEnd(builder));
    408 
    409         assertTrue(Selection.extendUp(builder, layout));
    410         assertEquals(8, Selection.getSelectionStart(builder));
    411         assertEquals(0, Selection.getSelectionEnd(builder));
    412 
    413         builder = new SpannableStringBuilder();
    414         assertTrue(Selection.extendUp(builder, layout));
    415         assertEquals(-1, Selection.getSelectionStart(builder));
    416         assertEquals(0, Selection.getSelectionEnd(builder));
    417     }
    418 
    419     public void testExtendDown() {
    420         CharSequence text = "Google\nhello, world";
    421         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    422         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    423         assertEquals(-1, Selection.getSelectionStart(builder));
    424         assertEquals(-1, Selection.getSelectionEnd(builder));
    425 
    426         Selection.setSelection(builder, 1, 3);
    427         assertTrue(Selection.extendDown(builder, layout));
    428         assertEquals(1, Selection.getSelectionStart(builder));
    429         assertEquals(14, Selection.getSelectionEnd(builder));
    430 
    431         assertTrue(Selection.extendDown(builder, layout));
    432         assertEquals(1, Selection.getSelectionStart(builder));
    433         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    434 
    435         assertTrue(Selection.extendDown(builder, layout));
    436         assertEquals(1, Selection.getSelectionStart(builder));
    437         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    438     }
    439 
    440     public void testExtendToLeftEdge() {
    441         CharSequence text = "hello\nworld";
    442         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    443         StaticLayout layout = new StaticLayout(text, new TextPaint(), 50, null, 0, 0, false);
    444         assertEquals(-1, Selection.getSelectionStart(builder));
    445         assertEquals(-1, Selection.getSelectionEnd(builder));
    446 
    447         assertTrue(Selection.extendToLeftEdge(builder, layout));
    448         assertEquals(-1, Selection.getSelectionStart(builder));
    449         assertEquals(0, Selection.getSelectionEnd(builder));
    450 
    451         Selection.setSelection(builder, 4, 9);
    452         assertTrue(Selection.extendToLeftEdge(builder, layout));
    453         assertEquals(4, Selection.getSelectionStart(builder));
    454         assertEquals(6, Selection.getSelectionEnd(builder));
    455 
    456         Selection.setSelection(builder, 1, 5);
    457         assertTrue(Selection.extendToLeftEdge(builder, layout));
    458         assertEquals(1, Selection.getSelectionStart(builder));
    459         assertEquals(0, Selection.getSelectionEnd(builder));
    460 
    461         Selection.setSelection(builder, 2, 2);
    462         assertTrue(Selection.extendToLeftEdge(builder, layout));
    463         assertEquals(2, Selection.getSelectionStart(builder));
    464         assertEquals(0, Selection.getSelectionEnd(builder));
    465 
    466         builder = new SpannableStringBuilder();
    467         assertEquals(-1, Selection.getSelectionStart(builder));
    468         assertEquals(-1, Selection.getSelectionEnd(builder));
    469 
    470         assertTrue(Selection.extendToLeftEdge(builder, layout));
    471         assertEquals(-1, Selection.getSelectionStart(builder));
    472         assertEquals(0, Selection.getSelectionEnd(builder));
    473     }
    474 
    475     public void testExtendToRightEdge() {
    476         CharSequence text = "hello\nworld";
    477         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    478         StaticLayout layout = new StaticLayout(text, new TextPaint(), 50, null, 0, 0, false);
    479         assertEquals(-1, Selection.getSelectionStart(builder));
    480         assertEquals(-1, Selection.getSelectionEnd(builder));
    481 
    482         assertTrue(Selection.extendToRightEdge(builder, layout));
    483         assertEquals(-1, Selection.getSelectionStart(builder));
    484         assertEquals(5, Selection.getSelectionEnd(builder));
    485 
    486         Selection.setSelection(builder, 1, 3);
    487         assertTrue(Selection.extendToRightEdge(builder, layout));
    488         assertEquals(1, Selection.getSelectionStart(builder));
    489         assertEquals(5, Selection.getSelectionEnd(builder));
    490 
    491         Selection.setSelection(builder, 1, 7);
    492         assertTrue(Selection.extendToRightEdge(builder, layout));
    493         assertEquals(1, Selection.getSelectionStart(builder));
    494         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    495 
    496         assertTrue(Selection.extendToRightEdge(builder, layout));
    497         assertEquals(1, Selection.getSelectionStart(builder));
    498         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    499     }
    500 
    501     public void testMoveToLeftEdge() {
    502         CharSequence text = "hello\nworld";
    503         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    504         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0, false);
    505         assertEquals(-1, Selection.getSelectionStart(builder));
    506         assertEquals(-1, Selection.getSelectionEnd(builder));
    507 
    508         assertTrue(Selection.moveToLeftEdge(builder, layout));
    509         assertEquals(0, Selection.getSelectionStart(builder));
    510         assertEquals(0, Selection.getSelectionEnd(builder));
    511 
    512         Selection.setSelection(builder, 1, 10);
    513         assertTrue(Selection.moveToLeftEdge(builder, layout));
    514         assertEquals(6, Selection.getSelectionStart(builder));
    515         assertEquals(6, Selection.getSelectionEnd(builder));
    516 
    517         Selection.setSelection(builder, 1, 3);
    518         assertTrue(Selection.moveToLeftEdge(builder, layout));
    519         assertEquals(0, Selection.getSelectionStart(builder));
    520         assertEquals(0, Selection.getSelectionEnd(builder));
    521 
    522         assertTrue(Selection.moveToLeftEdge(builder, layout));
    523         assertEquals(0, Selection.getSelectionStart(builder));
    524         assertEquals(0, Selection.getSelectionEnd(builder));
    525 
    526         builder = new SpannableStringBuilder();
    527         assertTrue(Selection.moveToLeftEdge(builder, layout));
    528         assertEquals(0, Selection.getSelectionStart(builder));
    529         assertEquals(0, Selection.getSelectionEnd(builder));
    530     }
    531 
    532     public void testMoveToRightEdge() {
    533         CharSequence text = "hello\nworld";
    534         SpannableStringBuilder builder = new SpannableStringBuilder(text);
    535         StaticLayout layout = new StaticLayout(text, new TextPaint(), 200, null, 0, 0,false);
    536         assertEquals(-1, Selection.getSelectionStart(builder));
    537         assertEquals(-1, Selection.getSelectionEnd(builder));
    538 
    539         assertTrue(Selection.moveToRightEdge(builder, layout));
    540         assertEquals(5, Selection.getSelectionStart(builder));
    541         assertEquals(5, Selection.getSelectionEnd(builder));
    542 
    543         Selection.setSelection(builder, 1, 2);
    544         assertTrue(Selection.moveToRightEdge(builder, layout));
    545         assertEquals(5, Selection.getSelectionStart(builder));
    546         assertEquals(5, Selection.getSelectionEnd(builder));
    547 
    548         Selection.setSelection(builder, 1, 7);
    549         assertTrue(Selection.moveToRightEdge(builder, layout));
    550         assertEquals(text.length(), Selection.getSelectionStart(builder));
    551         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    552 
    553         assertTrue(Selection.moveToRightEdge(builder, layout));
    554         assertEquals(text.length(), Selection.getSelectionStart(builder));
    555         assertEquals(text.length(), Selection.getSelectionEnd(builder));
    556     }
    557 }
    558