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