1;;; Copyright (C) William D Clinger (2016). 2;;; 3;;; Permission is hereby granted, free of charge, to any person 4;;; obtaining a copy of this software and associated documentation 5;;; files (the "Software"), to deal in the Software without 6;;; restriction, including without limitation the rights to use, 7;;; copy, modify, merge, publish, distribute, sublicense, and/or 8;;; sell copies of the Software, and to permit persons to whom the 9;;; Software is furnished to do so, subject to the following 10;;; conditions: 11;;; 12;;; The above copyright notice and this permission notice shall be 13;;; included in all copies or substantial portions of the Software. 14;;; 15;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16;;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17;;; OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18;;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19;;; HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20;;; WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21;;; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22;;; OTHER DEALINGS IN THE SOFTWARE. 23 24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 25;;; 26;;; Tests for SRFI 130. 27;;; 28;;; To run in Larceny or Sagittarius, cd to the directory containing 29;;; this file and incant: 30;;; 31;;; larceny --r7rs --path . --program srfi-130-test.scm 32;;; sagittarius -r7 -L . srfi-130-test.scm 33;;; 34;;; Both Larceny and Sagittarius will look for the (srfi 130) library 35;;; in the srfi subdirectory. The implementations contained within 36;;; the foof and srfi-130 directories can be tested by renaming those 37;;; directories to srfi. 38;;; 39;;; FIXME: These tests are incomplete because there's a combinatorial 40;;; explosion of possibilities for optional arguments that could be 41;;; either indexes or cursors. Consider string-prefix-length, for 42;;; example. For each test that calls that procedure with all four 43;;; optional arguments, there are 16 possible combinations of indexes 44;;; and cursors. Beginning with string-take, the optional arguments 45;;; tested are indexes rather than cursors. 46 47;;; Unicode is the main motivation for string cursors, so we ought 48;;; to use at least some non-ASCII strings for testing. 49;;; Some systems would blow up if this file were to contain non-ASCII 50;;; characters, however, so we have to be careful here. 51 52(use gauche.test) 53(use srfi-130) 54(test-section "srfi-130") 55(test-module 'srfi-130) 56 57(cond-expand (full-unicode 58 (define ABC 59 (list->string (map integer->char 60 '(#x3b1 #x3b2 #x3b3)))) 61 (define ABCDEF 62 (list->string (map integer->char 63 '(#x0c0 #x062 #x0c7 #x064 #x0c9 #x066))))) 64 (else 65 (define ABC "abc") 66 (define ABCDEF "abcdef"))) 67(define EMPTY "") 68(define ABC-ASCII "abc") 69(define ABCDEF-ASCII "abcdef") 70(define ABCDEFFFFOO "abcdeffffoo") 71 72(define-syntax OR 73 (syntax-rules (fail eq? eqv? equal? string=? =) 74 [(or (= expected expr) (fail 'symbol)) 75 (test* (symbol->string 'symbol) expected expr)] 76 [(or (eq? expected expr) (fail 'symbol)) 77 (test* (symbol->string 'symbol) expected expr)] 78 [(or (eqv? expected expr) (fail 'symbol)) 79 (test* (symbol->string 'symbol) expected expr)] 80 [(or (equal? expected expr) (fail 'symbol)) 81 (test* (symbol->string 'symbol) expected expr)] 82 [(or (string=? expected expr) (fail 'symbol)) 83 (test* (symbol->string 'symbol) expected expr)] 84 [(or expr (fail 'symbol)) 85 (test* (symbol->string 'symbol) #t expr)])) 86 87;;----------------------------------------------------------------------- 88(test-section "Cursor operations") 89 90(OR (string-cursor? (string-index->cursor "" 0)) 91 (fail 'string-cursor?)) 92 93(OR (not (string-cursor? #f)) 94 (fail 'string-cursor?)) 95 96(OR (string-cursor? (string-index->cursor (make-string 10000) 9999)) 97 (fail 'string-cursor?)) 98 99(OR (= 0 100 (string-cursor->index EMPTY (string-cursor-start EMPTY))) 101 (fail 'string-cursor-start)) 102 103(OR (= 0 104 (string-cursor->index ABC (string-cursor-start ABC))) 105 (fail 'string-cursor-start)) 106 107(OR (= 0 108 (string-cursor->index EMPTY (string-cursor-end EMPTY))) 109 (fail 'string-cursor-end)) 110 111(OR (= 3 112 (string-cursor->index ABC (string-cursor-end ABC))) 113 (fail 'string-cursor-end)) 114 115(OR (= 1 116 (string-cursor->index ABC (string-cursor-next ABC 0))) 117 (fail 'string-cursor-next)) 118 119(OR (= 2 120 (string-cursor->index ABC (string-cursor-next ABC 1))) 121 (fail 'string-cursor-next)) 122 123(OR (= 3 124 (string-cursor->index ABC (string-cursor-next ABC 2))) 125 (fail 'string-cursor-next)) 126 127(OR (= 0 128 (string-cursor->index ABC (string-cursor-prev ABC 1))) 129 (fail 'string-cursor-prev)) 130 131(OR (= 1 132 (string-cursor->index ABC (string-cursor-prev ABC 2))) 133 (fail 'string-cursor-prev)) 134 135(OR (= 2 136 (string-cursor->index ABC (string-cursor-prev ABC 3))) 137 (fail 'string-cursor-prev)) 138 139(OR (= 0 140 (string-cursor->index ABC (string-cursor-forward ABC 0 0))) 141 (fail 'string-cursor-forward)) 142 143(OR (= 2 144 (string-cursor->index ABC (string-cursor-forward ABC 0 2))) 145 (fail 'string-cursor-forward)) 146 147(OR (= 3 148 (string-cursor->index ABC (string-cursor-forward ABC 1 2))) 149 (fail 'string-cursor-forward)) 150 151(OR (= 3 152 (string-cursor->index ABC (string-cursor-forward ABC 3 0))) 153 (fail 'string-cursor-forward)) 154 155(OR (= 0 156 (string-cursor->index ABC (string-cursor-back ABC 0 0))) 157 (fail 'string-cursor-back)) 158 159(OR (= 0 160 (string-cursor->index ABC (string-cursor-back ABC 2 2))) 161 (fail 'string-cursor-back)) 162 163(OR (= 1 164 (string-cursor->index ABC (string-cursor-back ABC 3 2))) 165 (fail 'string-cursor-back)) 166 167(OR (= 3 168 (string-cursor->index ABC (string-cursor-back ABC 3 0))) 169 (fail 'string-cursor-back)) 170 171 172;;----------------------------------------------------------------------- 173(test-section "These are supposed to work on both indexes and cursors.") 174 175(OR (string-cursor=? 0 0) 176 (fail 'string-cursor=?)) 177 178(OR (not (string-cursor=? 0 1)) 179 (fail 'string-cursor=?)) 180 181(OR (not (string-cursor=? 0 2)) 182 (fail 'string-cursor=?)) 183 184(OR (not (string-cursor=? 0 3)) 185 (fail 'string-cursor=?)) 186 187(OR (not (string-cursor=? 1 0)) 188 (fail 'string-cursor=?)) 189 190(OR (string-cursor=? 1 1) 191 (fail 'string-cursor=?)) 192 193(OR (not (string-cursor=? 1 2)) 194 (fail 'string-cursor=?)) 195 196(OR (not (string-cursor=? 1 3)) 197 (fail 'string-cursor=?)) 198 199(OR (not (string-cursor=? 2 0)) 200 (fail 'string-cursor=?)) 201 202(OR (not (string-cursor=? 2 1)) 203 (fail 'string-cursor=?)) 204 205(OR (string-cursor=? 2 2) 206 (fail 'string-cursor=?)) 207 208(OR (not (string-cursor=? 2 3)) 209 (fail 'string-cursor=?)) 210 211(OR (not (string-cursor=? 3 0)) 212 (fail 'string-cursor=?)) 213 214(OR (not (string-cursor=? 3 1)) 215 (fail 'string-cursor=?)) 216 217(OR (not (string-cursor=? 3 2)) 218 (fail 'string-cursor=?)) 219 220(OR (string-cursor=? 3 3) 221 (fail 'string-cursor=?)) 222 223 224(OR (not (string-cursor<? 0 0)) 225 (fail 'string-cursor<?)) 226 227(OR (string-cursor<? 0 1) 228 (fail 'string-cursor<?)) 229 230(OR (string-cursor<? 0 2) 231 (fail 'string-cursor<?)) 232 233(OR (string-cursor<? 0 3) 234 (fail 'string-cursor<?)) 235 236(OR (not (string-cursor<? 1 0)) 237 (fail 'string-cursor<?)) 238 239(OR (not (string-cursor<? 1 1)) 240 (fail 'string-cursor<?)) 241 242(OR (string-cursor<? 1 2) 243 (fail 'string-cursor<?)) 244 245(OR (string-cursor<? 1 3) 246 (fail 'string-cursor<?)) 247 248(OR (not (string-cursor<? 2 0)) 249 (fail 'string-cursor<?)) 250 251(OR (not (string-cursor<? 2 1)) 252 (fail 'string-cursor<?)) 253 254(OR (not (string-cursor<? 2 2)) 255 (fail 'string-cursor<?)) 256 257(OR (string-cursor<? 2 3) 258 (fail 'string-cursor<?)) 259 260(OR (not (string-cursor<? 3 0)) 261 (fail 'string-cursor<?)) 262 263(OR (not (string-cursor<? 3 1)) 264 (fail 'string-cursor<?)) 265 266(OR (not (string-cursor<? 3 2)) 267 (fail 'string-cursor<?)) 268 269(OR (not (string-cursor<? 3 3)) 270 (fail 'string-cursor<?)) 271 272 273(OR (not (string-cursor>? 0 0)) 274 (fail 'string-cursor>?)) 275 276(OR (not (string-cursor>? 0 1)) 277 (fail 'string-cursor>?)) 278 279(OR (not (string-cursor>? 0 2)) 280 (fail 'string-cursor>?)) 281 282(OR (not (string-cursor>? 0 3)) 283 (fail 'string-cursor>?)) 284 285(OR (string-cursor>? 1 0) 286 (fail 'string-cursor>?)) 287 288(OR (not (string-cursor>? 1 1)) 289 (fail 'string-cursor>?)) 290 291(OR (not (string-cursor>? 1 2)) 292 (fail 'string-cursor>?)) 293 294(OR (not (string-cursor>? 1 3)) 295 (fail 'string-cursor>?)) 296 297(OR (string-cursor>? 2 0) 298 (fail 'string-cursor>?)) 299 300(OR (string-cursor>? 2 1) 301 (fail 'string-cursor>?)) 302 303(OR (not (string-cursor>? 2 2)) 304 (fail 'string-cursor>?)) 305 306(OR (not (string-cursor>? 2 3)) 307 (fail 'string-cursor>?)) 308 309(OR (string-cursor>? 3 0) 310 (fail 'string-cursor>?)) 311 312(OR (string-cursor>? 3 1) 313 (fail 'string-cursor>?)) 314 315(OR (string-cursor>? 3 2) 316 (fail 'string-cursor>?)) 317 318(OR (not (string-cursor>? 3 3)) 319 (fail 'string-cursor>?)) 320 321 322(OR (string-cursor<=? 0 0) 323 (fail 'string-cursor<=?)) 324 325(OR (string-cursor<=? 0 1) 326 (fail 'string-cursor<=?)) 327 328(OR (string-cursor<=? 0 2) 329 (fail 'string-cursor<=?)) 330 331(OR (string-cursor<=? 0 3) 332 (fail 'string-cursor<=?)) 333 334(OR (not (string-cursor<=? 1 0)) 335 (fail 'string-cursor<=?)) 336 337(OR (string-cursor<=? 1 1) 338 (fail 'string-cursor<=?)) 339 340(OR (string-cursor<=? 1 2) 341 (fail 'string-cursor<=?)) 342 343(OR (string-cursor<=? 1 3) 344 (fail 'string-cursor<=?)) 345 346(OR (not (string-cursor<=? 2 0)) 347 (fail 'string-cursor<=?)) 348 349(OR (not (string-cursor<=? 2 1)) 350 (fail 'string-cursor<=?)) 351 352(OR (string-cursor<=? 2 2) 353 (fail 'string-cursor<=?)) 354 355(OR (string-cursor<=? 2 3) 356 (fail 'string-cursor<=?)) 357 358(OR (not (string-cursor<=? 3 0)) 359 (fail 'string-cursor<=?)) 360 361(OR (not (string-cursor<=? 3 1)) 362 (fail 'string-cursor<=?)) 363 364(OR (not (string-cursor<=? 3 2)) 365 (fail 'string-cursor<=?)) 366 367(OR (string-cursor<=? 3 3) 368 (fail 'string-cursor<=?)) 369 370 371(OR (string-cursor>=? 0 0) 372 (fail 'string-cursor>=?)) 373 374(OR (not (string-cursor>=? 0 1)) 375 (fail 'string-cursor>=?)) 376 377(OR (not (string-cursor>=? 0 2)) 378 (fail 'string-cursor>=?)) 379 380(OR (not (string-cursor>=? 0 3)) 381 (fail 'string-cursor>=?)) 382 383(OR (string-cursor>=? 1 0) 384 (fail 'string-cursor>=?)) 385 386(OR (string-cursor>=? 1 1) 387 (fail 'string-cursor>=?)) 388 389(OR (not (string-cursor>=? 1 2)) 390 (fail 'string-cursor>=?)) 391 392(OR (not (string-cursor>=? 1 3)) 393 (fail 'string-cursor>=?)) 394 395(OR (string-cursor>=? 2 0) 396 (fail 'string-cursor>=?)) 397 398(OR (string-cursor>=? 2 1) 399 (fail 'string-cursor>=?)) 400 401(OR (string-cursor>=? 2 2) 402 (fail 'string-cursor>=?)) 403 404(OR (not (string-cursor>=? 2 3)) 405 (fail 'string-cursor>=?)) 406 407(OR (string-cursor>=? 3 0) 408 (fail 'string-cursor>=?)) 409 410(OR (string-cursor>=? 3 1) 411 (fail 'string-cursor>=?)) 412 413(OR (string-cursor>=? 3 2) 414 (fail 'string-cursor>=?)) 415 416(OR (string-cursor>=? 3 3) 417 (fail 'string-cursor>=?)) 418 419 420(OR (string-cursor=? (string-index->cursor ABC 0) 421 (string-index->cursor ABC 0)) 422 (fail 'string-cursor=?)) 423 424(OR (not (string-cursor=? (string-index->cursor ABC 0) 425 (string-index->cursor ABC 1))) 426 (fail 'string-cursor=?)) 427 428(OR (not (string-cursor=? (string-index->cursor ABC 0) 429 (string-index->cursor ABC 2))) 430 (fail 'string-cursor=?)) 431 432(OR (not (string-cursor=? (string-index->cursor ABC 0) 433 (string-index->cursor ABC 3))) 434 (fail 'string-cursor=?)) 435 436(OR (not (string-cursor=? (string-index->cursor ABC 1) 437 (string-index->cursor ABC 0))) 438 (fail 'string-cursor=?)) 439 440(OR (string-cursor=? (string-index->cursor ABC 1) 441 (string-index->cursor ABC 1)) 442 (fail 'string-cursor=?)) 443 444(OR (not (string-cursor=? (string-index->cursor ABC 1) 445 (string-index->cursor ABC 2))) 446 (fail 'string-cursor=?)) 447 448(OR (not (string-cursor=? (string-index->cursor ABC 1) 449 (string-index->cursor ABC 3))) 450 (fail 'string-cursor=?)) 451 452(OR (not (string-cursor=? (string-index->cursor ABC 2) 453 (string-index->cursor ABC 0))) 454 (fail 'string-cursor=?)) 455 456(OR (not (string-cursor=? (string-index->cursor ABC 2) 457 (string-index->cursor ABC 1))) 458 (fail 'string-cursor=?)) 459 460(OR (string-cursor=? (string-index->cursor ABC 2) 461 (string-index->cursor ABC 2)) 462 (fail 'string-cursor=?)) 463 464(OR (not (string-cursor=? (string-index->cursor ABC 2) 465 (string-index->cursor ABC 3))) 466 (fail 'string-cursor=?)) 467 468(OR (not (string-cursor=? (string-index->cursor ABC 3) 469 (string-index->cursor ABC 0))) 470 (fail 'string-cursor=?)) 471 472(OR (not (string-cursor=? (string-index->cursor ABC 3) 473 (string-index->cursor ABC 1))) 474 (fail 'string-cursor=?)) 475 476(OR (not (string-cursor=? (string-index->cursor ABC 3) 477 (string-index->cursor ABC 2))) 478 (fail 'string-cursor=?)) 479 480(OR (string-cursor=? (string-index->cursor ABC 3) 481 (string-index->cursor ABC 3)) 482 (fail 'string-cursor=?)) 483 484 485(OR (not (string-cursor<? (string-index->cursor ABC 0) 486 (string-index->cursor ABC 0))) 487 (fail 'string-cursor<?)) 488 489(OR (string-cursor<? (string-index->cursor ABC 0) 490 (string-index->cursor ABC 1)) 491 (fail 'string-cursor<?)) 492 493(OR (string-cursor<? (string-index->cursor ABC 0) 494 (string-index->cursor ABC 2)) 495 (fail 'string-cursor<?)) 496 497(OR (string-cursor<? (string-index->cursor ABC 0) 498 (string-index->cursor ABC 3)) 499 (fail 'string-cursor<?)) 500 501(OR (not (string-cursor<? (string-index->cursor ABC 1) 502 (string-index->cursor ABC 0))) 503 (fail 'string-cursor<?)) 504 505(OR (not (string-cursor<? (string-index->cursor ABC 1) 506 (string-index->cursor ABC 1))) 507 (fail 'string-cursor<?)) 508 509(OR (string-cursor<? (string-index->cursor ABC 1) 510 (string-index->cursor ABC 2)) 511 (fail 'string-cursor<?)) 512 513(OR (string-cursor<? (string-index->cursor ABC 1) 514 (string-index->cursor ABC 3)) 515 (fail 'string-cursor<?)) 516 517(OR (not (string-cursor<? (string-index->cursor ABC 2) 518 (string-index->cursor ABC 0))) 519 (fail 'string-cursor<?)) 520 521(OR (not (string-cursor<? (string-index->cursor ABC 2) 522 (string-index->cursor ABC 1))) 523 (fail 'string-cursor<?)) 524 525(OR (not (string-cursor<? (string-index->cursor ABC 2) 526 (string-index->cursor ABC 2))) 527 (fail 'string-cursor<?)) 528 529(OR (string-cursor<? (string-index->cursor ABC 2) 530 (string-index->cursor ABC 3)) 531 (fail 'string-cursor<?)) 532 533(OR (not (string-cursor<? (string-index->cursor ABC 3) 534 (string-index->cursor ABC 0))) 535 (fail 'string-cursor<?)) 536 537(OR (not (string-cursor<? (string-index->cursor ABC 3) 538 (string-index->cursor ABC 1))) 539 (fail 'string-cursor<?)) 540 541(OR (not (string-cursor<? (string-index->cursor ABC 3) 542 (string-index->cursor ABC 2))) 543 (fail 'string-cursor<?)) 544 545(OR (not (string-cursor<? (string-index->cursor ABC 3) 546 (string-index->cursor ABC 3))) 547 (fail 'string-cursor<?)) 548 549 550(OR (not (string-cursor>? (string-index->cursor ABC 0) 551 (string-index->cursor ABC 0))) 552 (fail 'string-cursor>?)) 553 554(OR (not (string-cursor>? (string-index->cursor ABC 0) 555 (string-index->cursor ABC 1))) 556 (fail 'string-cursor>?)) 557 558(OR (not (string-cursor>? (string-index->cursor ABC 0) 559 (string-index->cursor ABC 2))) 560 (fail 'string-cursor>?)) 561 562(OR (not (string-cursor>? (string-index->cursor ABC 0) 563 (string-index->cursor ABC 3))) 564 (fail 'string-cursor>?)) 565 566(OR (string-cursor>? (string-index->cursor ABC 1) 567 (string-index->cursor ABC 0)) 568 (fail 'string-cursor>?)) 569 570(OR (not (string-cursor>? (string-index->cursor ABC 1) 571 (string-index->cursor ABC 1))) 572 (fail 'string-cursor>?)) 573 574(OR (not (string-cursor>? (string-index->cursor ABC 1) 575 (string-index->cursor ABC 2))) 576 (fail 'string-cursor>?)) 577 578(OR (not (string-cursor>? (string-index->cursor ABC 1) 579 (string-index->cursor ABC 3))) 580 (fail 'string-cursor>?)) 581 582(OR (string-cursor>? (string-index->cursor ABC 2) 583 (string-index->cursor ABC 0)) 584 (fail 'string-cursor>?)) 585 586(OR (string-cursor>? (string-index->cursor ABC 2) 587 (string-index->cursor ABC 1)) 588 (fail 'string-cursor>?)) 589 590(OR (not (string-cursor>? (string-index->cursor ABC 2) 591 (string-index->cursor ABC 2))) 592 (fail 'string-cursor>?)) 593 594(OR (not (string-cursor>? (string-index->cursor ABC 2) 595 (string-index->cursor ABC 3))) 596 (fail 'string-cursor>?)) 597 598(OR (string-cursor>? (string-index->cursor ABC 3) 599 (string-index->cursor ABC 0)) 600 (fail 'string-cursor>?)) 601 602(OR (string-cursor>? (string-index->cursor ABC 3) 603 (string-index->cursor ABC 1)) 604 (fail 'string-cursor>?)) 605 606(OR (string-cursor>? (string-index->cursor ABC 3) 607 (string-index->cursor ABC 2)) 608 (fail 'string-cursor>?)) 609 610(OR (not (string-cursor>? (string-index->cursor ABC 3) 611 (string-index->cursor ABC 3))) 612 (fail 'string-cursor>?)) 613 614 615(OR (string-cursor<=? (string-index->cursor ABC 0) 616 (string-index->cursor ABC 0)) 617 (fail 'string-cursor<=?)) 618 619(OR (string-cursor<=? (string-index->cursor ABC 0) 620 (string-index->cursor ABC 1)) 621 (fail 'string-cursor<=?)) 622 623(OR (string-cursor<=? (string-index->cursor ABC 0) 624 (string-index->cursor ABC 2)) 625 (fail 'string-cursor<=?)) 626 627(OR (string-cursor<=? (string-index->cursor ABC 0) 628 (string-index->cursor ABC 3)) 629 (fail 'string-cursor<=?)) 630 631(OR (not (string-cursor<=? (string-index->cursor ABC 1) 632 (string-index->cursor ABC 0))) 633 (fail 'string-cursor<=?)) 634 635(OR (string-cursor<=? (string-index->cursor ABC 1) 636 (string-index->cursor ABC 1)) 637 (fail 'string-cursor<=?)) 638 639(OR (string-cursor<=? (string-index->cursor ABC 1) 640 (string-index->cursor ABC 2)) 641 (fail 'string-cursor<=?)) 642 643(OR (string-cursor<=? (string-index->cursor ABC 1) 644 (string-index->cursor ABC 3)) 645 (fail 'string-cursor<=?)) 646 647(OR (not (string-cursor<=? (string-index->cursor ABC 2) 648 (string-index->cursor ABC 0))) 649 (fail 'string-cursor<=?)) 650 651(OR (not (string-cursor<=? (string-index->cursor ABC 2) 652 (string-index->cursor ABC 1))) 653 (fail 'string-cursor<=?)) 654 655(OR (string-cursor<=? (string-index->cursor ABC 2) 656 (string-index->cursor ABC 2)) 657 (fail 'string-cursor<=?)) 658 659(OR (string-cursor<=? (string-index->cursor ABC 2) 660 (string-index->cursor ABC 3)) 661 (fail 'string-cursor<=?)) 662 663(OR (not (string-cursor<=? (string-index->cursor ABC 3) 664 (string-index->cursor ABC 0))) 665 (fail 'string-cursor<=?)) 666 667(OR (not (string-cursor<=? (string-index->cursor ABC 3) 668 (string-index->cursor ABC 1))) 669 (fail 'string-cursor<=?)) 670 671(OR (not (string-cursor<=? (string-index->cursor ABC 3) 672 (string-index->cursor ABC 2))) 673 (fail 'string-cursor<=?)) 674 675(OR (string-cursor<=? (string-index->cursor ABC 3) 676 (string-index->cursor ABC 3)) 677 (fail 'string-cursor<=?)) 678 679 680(OR (string-cursor>=? (string-index->cursor ABC 0) 681 (string-index->cursor ABC 0)) 682 (fail 'string-cursor>=?)) 683 684(OR (not (string-cursor>=? (string-index->cursor ABC 0) 685 (string-index->cursor ABC 1))) 686 (fail 'string-cursor>=?)) 687 688(OR (not (string-cursor>=? (string-index->cursor ABC 0) 689 (string-index->cursor ABC 2))) 690 (fail 'string-cursor>=?)) 691 692(OR (not (string-cursor>=? (string-index->cursor ABC 0) 693 (string-index->cursor ABC 3))) 694 (fail 'string-cursor>=?)) 695 696(OR (string-cursor>=? (string-index->cursor ABC 1) 697 (string-index->cursor ABC 0)) 698 (fail 'string-cursor>=?)) 699 700(OR (string-cursor>=? (string-index->cursor ABC 1) 701 (string-index->cursor ABC 1)) 702 (fail 'string-cursor>=?)) 703 704(OR (not (string-cursor>=? (string-index->cursor ABC 1) 705 (string-index->cursor ABC 2))) 706 (fail 'string-cursor>=?)) 707 708(OR (not (string-cursor>=? (string-index->cursor ABC 1) 709 (string-index->cursor ABC 3))) 710 (fail 'string-cursor>=?)) 711 712(OR (string-cursor>=? (string-index->cursor ABC 2) 713 (string-index->cursor ABC 0)) 714 (fail 'string-cursor>=?)) 715 716(OR (string-cursor>=? (string-index->cursor ABC 2) 717 (string-index->cursor ABC 1)) 718 (fail 'string-cursor>=?)) 719 720(OR (string-cursor>=? (string-index->cursor ABC 2) 721 (string-index->cursor ABC 2)) 722 (fail 'string-cursor>=?)) 723 724(OR (not (string-cursor>=? (string-index->cursor ABC 2) 725 (string-index->cursor ABC 3))) 726 (fail 'string-cursor>=?)) 727 728(OR (string-cursor>=? (string-index->cursor ABC 3) 729 (string-index->cursor ABC 0)) 730 (fail 'string-cursor>=?)) 731 732(OR (string-cursor>=? (string-index->cursor ABC 3) 733 (string-index->cursor ABC 1)) 734 (fail 'string-cursor>=?)) 735 736(OR (string-cursor>=? (string-index->cursor ABC 3) 737 (string-index->cursor ABC 2)) 738 (fail 'string-cursor>=?)) 739 740(OR (string-cursor>=? (string-index->cursor ABC 3) 741 (string-index->cursor ABC 3)) 742 (fail 'string-cursor>=?)) 743 744 745(OR (= 0 (string-cursor-diff ABC 746 (string-index->cursor ABC 0) 747 (string-index->cursor ABC 0))) 748 (fail 'string-cursor-diff)) 749 750(OR (= 3 (string-cursor-diff ABC 751 (string-index->cursor ABC 0) 752 (string-index->cursor ABC 3))) 753 (fail 'string-cursor-diff)) 754 755(OR (= 0 (string-cursor->index EMPTY (string-index->cursor EMPTY 0))) 756 (fail 'string-cursor->index)) 757 758(OR (= 3 (string-cursor->index ABC (string-index->cursor ABC 3))) 759 (fail 'string-cursor->index)) 760 761(OR (= 0 (string-cursor->index EMPTY (string-index->cursor EMPTY 0))) 762 (fail 'string-index->cursor)) 763 764(OR (= 3 (string-cursor->index ABC (string-index->cursor ABC 3))) 765 (fail 'string-index->cursor)) 766 767;;----------------------------------------------------------------------- 768(test-section "Predicates") 769 770(OR (string-null? "") 771 (fail 'string-null)) 772 773(OR (not (string-null? "abc")) 774 (fail 'string-null)) 775 776(OR (eqv? #t (string-every (lambda (c) (if (char? c) c #f)) "")) 777 (fail 'string-every)) 778 779(OR (eqv? #\c (string-every (lambda (c) (if (char? c) c #f)) "abc")) 780 (fail 'string-every)) 781 782(OR (eqv? #f (string-every (lambda (c) (if (char>? c #\b) c #f)) "abc")) 783 (fail 'string-every)) 784 785(OR (eqv? #\c (string-every (lambda (c) (if (char>? c #\b) c #f)) "abc" 2)) 786 (fail 'string-every)) 787 788(test* "string-every" 789 #\c 790 (string-every (lambda (c) (if (char>? c #\b) c #f)) 791 ABC-ASCII 792 (string-index->cursor ABC-ASCII 2))) 793 794(OR (eqv? #t (string-every (lambda (c) (if (char>? c #\b) c #f)) "abc" 1 1)) 795 (fail 'string-every)) 796 797(test* "string-every" 798 #t 799 (string-every (lambda (c) (if (char>? c #\b) c #f)) 800 ABC-ASCII 801 (string-index->cursor ABC-ASCII 1) 802 (string-index->cursor ABC-ASCII 1))) 803 804(OR (eqv? #f (string-any (lambda (c) (if (char? c) c #f)) "")) 805 (fail 'string-any)) 806 807(OR (eqv? #\a (string-any (lambda (c) (if (char? c) c #f)) "abc")) 808 (fail 'string-any)) 809 810(OR (eqv? #\c (string-any (lambda (c) (if (char>? c #\b) c #f)) "abc")) 811 (fail 'string-any)) 812 813(OR (eqv? #\c (string-any (lambda (c) (if (char>? c #\b) c #f)) "abc" 2)) 814 (fail 'string-any)) 815 816(test* "string-any" 817 #\c 818 (string-any (lambda (c) (if (char>? c #\b) c #f)) 819 ABC-ASCII 820 (string-index->cursor ABC-ASCII 2))) 821 822(OR (eqv? #f (string-any (lambda (c) (if (char>? c #\b) c #f)) "abc" 0 2)) 823 (fail 'string-any)) 824 825(test* "string-any" 826 #f 827 (string-any (lambda (c) (if (char>? c #\b) c #f)) 828 ABC-ASCII 829 (string-cursor-start ABC-ASCII) 830 (string-index->cursor ABC-ASCII 2))) 831 832;;----------------------------------------------------------------------- 833(test-section "Constructors") 834 835(OR (equal? "" 836 (string-tabulate (lambda (i) 837 (integer->char (+ i (char->integer #\a)))) 838 0)) 839 (fail 'string-tabulate)) 840 841(OR (equal? "abc" 842 (string-tabulate (lambda (i) 843 (integer->char (+ i (char->integer #\a)))) 844 3)) 845 (fail 'string-tabulate)) 846 847(OR (equal? "abc" 848 (let ((p (open-input-string "abc"))) 849 (string-unfold eof-object? 850 values 851 (lambda (x) (read-char p)) 852 (read-char p)))) 853 (fail 'string-unfold)) 854 855(OR (equal? "" (string-unfold null? car cdr '())) 856 (fail 'string-unfold)) 857 858(OR (equal? "abc" (string-unfold null? car cdr (string->list "abc"))) 859 (fail 'string-unfold)) 860 861(OR (equal? "def" (string-unfold null? car cdr '() "def")) 862 (fail 'string-unfold)) 863 864(OR (equal? "defabcG" 865 (string-unfold null? 866 car 867 cdr 868 (string->list "abc") 869 "def" 870 (lambda (x) (and (null? x) "G")))) 871 (fail 'string-unfold)) 872 873(OR (equal? "" (string-unfold-right null? car cdr '())) 874 (fail 'string-unfold-right)) 875 876(OR (equal? "cba" (string-unfold-right null? car cdr (string->list "abc"))) 877 (fail 'string-unfold-right)) 878 879(OR (equal? "def" (string-unfold-right null? car cdr '() "def")) 880 (fail 'string-unfold-right)) 881 882(OR (equal? "Gcbadef" 883 (string-unfold-right null? 884 car 885 cdr 886 (string->list "abc") 887 "def" 888 (lambda (x) (and (null? x) "G")))) 889 (fail 'string-unfold-right)) 890 891;;----------------------------------------------------------------------- 892(test-section "Conversion") 893 894(OR (equal? '() (string->list/cursors "")) 895 (fail 'string->list/cursors)) 896 897(OR (equal? '() (string->list/cursors "" 0)) 898 (fail 'string->list/cursors)) 899 900(OR (equal? '() (string->list/cursors "" 0 0)) 901 (fail 'string->list/cursors)) 902 903(OR (equal? '(#\a #\b #\c) (string->list/cursors "abc")) 904 (fail 'string->list/cursors)) 905 906(OR (equal? '() (string->list/cursors "abc" 3)) 907 (fail 'string->list/cursors)) 908 909(OR (equal? '(#\b #\c) (string->list/cursors "abc" 1 3)) 910 (fail 'string->list/cursors)) 911 912(OR (equal? '(#\b #\c) 913 (string->list/cursors ABC-ASCII 914 (string-index->cursor ABC-ASCII 1) 915 (string-index->cursor ABC-ASCII 3))) 916 (fail 'string->list/cursors)) 917 918(OR (equal? '#() (string->vector/cursors "")) 919 (fail 'string->vector/cursors)) 920 921(OR (equal? '#() (string->vector/cursors "" 0)) 922 (fail 'string->vector/cursors)) 923 924(OR (equal? '#() (string->vector/cursors "" 0 0)) 925 (fail 'string->vector/cursors)) 926 927(OR (equal? '#(#\a #\b #\c) (string->vector/cursors "abc")) 928 (fail 'string->vector/cursors)) 929 930(OR (equal? '#() (string->vector/cursors "abc" 3)) 931 (fail 'string->vector/cursors)) 932 933(OR (equal? '#(#\b #\c) (string->vector/cursors "abc" 1 3)) 934 (fail 'string->vector/cursors)) 935 936(OR (equal? '#(#\b #\c) 937 (string->vector/cursors ABC-ASCII 938 (string-index->cursor ABC-ASCII 1) 939 (string-index->cursor ABC-ASCII 3))) 940 (fail 'string->vector/cursors)) 941 942(OR (equal? "" (reverse-list->string '())) 943 (fail 'reverse-list->string)) 944 945(OR (equal? "cba" (reverse-list->string '(#\a #\b #\c))) 946 (fail 'reverse-list->string)) 947 948(OR (equal? "" (string-join '())) 949 (fail 'string-join)) 950 951(OR (equal? " ab cd e f " 952 (string-join '("" "ab" "cd" "" "e" "f" ""))) 953 (fail 'string-join)) 954 955(OR (equal? "" (string-join '() "")) 956 (fail 'string-join)) 957 958(OR (equal? "abcdef" 959 (string-join '("" "ab" "cd" "" "e" "f" "") "")) 960 (fail 'string-join)) 961 962(OR (equal? "" (string-join '() "xyz")) 963 (fail 'string-join)) 964 965(OR (equal? "xyzabxyzcdxyzxyzexyzfxyz" 966 (string-join '("" "ab" "cd" "" "e" "f" "") "xyz")) 967 (fail 'string-join)) 968 969(OR (equal? "" (string-join '() "" 'infix)) 970 (fail 'string-join)) 971 972(OR (equal? "abcdef" 973 (string-join '("" "ab" "cd" "" "e" "f" "") "" 'infix)) 974 (fail 'string-join)) 975 976(OR (equal? "" (string-join '() "xyz" 'infix)) 977 (fail 'string-join)) 978 979(OR (equal? "xyzabxyzcdxyzxyzexyzfxyz" 980 (string-join '("" "ab" "cd" "" "e" "f" "") "xyz" 'infix)) 981 (fail 'string-join)) 982 983(OR (equal? 'horror 984 (guard (exn (#t 'horror)) 985 (string-join '() "" 'strict-infix))) 986 (fail 'string-join)) 987 988(OR (equal? "abcdef" 989 (string-join '("" "ab" "cd" "" "e" "f" "") "" 'strict-infix)) 990 (fail 'string-join)) 991 992(OR (equal? 'wham 993 (guard (exn (else 'wham)) 994 (string-join '() "xyz" 'strict-infix))) 995 (fail 'string-join)) 996 997(OR (equal? "xyzabxyzcdxyzxyzexyzfxyz" 998 (string-join '("" "ab" "cd" "" "e" "f" "") "xyz" 'strict-infix)) 999 (fail 'string-join)) 1000 1001(OR (equal? "" (string-join '() "" 'suffix)) 1002 (fail 'string-join)) 1003 1004(OR (equal? "abcdef" 1005 (string-join '("" "ab" "cd" "" "e" "f" "") "" 'suffix)) 1006 (fail 'string-join)) 1007 1008(OR (equal? "" (string-join '() "xyz" 'suffix)) 1009 (fail 'string-join)) 1010 1011(OR (equal? "xyzabxyzcdxyzxyzexyzfxyzxyz" 1012 (string-join '("" "ab" "cd" "" "e" "f" "") "xyz" 'suffix)) 1013 (fail 'string-join)) 1014 1015(OR (equal? "" (string-join '() "" 'prefix)) 1016 (fail 'string-join)) 1017 1018(OR (equal? "abcdef" 1019 (string-join '("" "ab" "cd" "" "e" "f" "") "" 'prefix)) 1020 (fail 'string-join)) 1021 1022(OR (equal? "" (string-join '() "xyz" 'prefix)) 1023 (fail 'string-join)) 1024 1025(OR (equal? "xyzxyzabxyzcdxyzxyzexyzfxyz" 1026 (string-join '("" "ab" "cd" "" "e" "f" "") "xyz" 'prefix)) 1027 (fail 'string-join)) 1028 1029;;----------------------------------------------------------------------- 1030(test-section "Selection") 1031 1032(OR (char=? #\a (string-ref/cursor "abc" 0)) 1033 (fail 'string-ref/cursor)) 1034 1035(OR (char=? #\c (string-ref/cursor "abc" 2)) 1036 (fail 'string-ref/cursor)) 1037 1038(OR (char=? #\a (string-ref/cursor ABC-ASCII (string-index->cursor ABC-ASCII 0))) 1039 (fail 'string-ref/cursor)) 1040 1041(OR (char=? #\c (string-ref/cursor ABC-ASCII (string-index->cursor ABC-ASCII 2))) 1042 (fail 'string-ref/cursor)) 1043 1044(OR (string=? "" (substring/cursors "" 0 0)) 1045 (fail 'substring/cursors)) 1046 1047(OR (string=? "" (substring/cursors "abc" 0 0)) 1048 (fail 'substring/cursors)) 1049 1050(OR (string=? "" (substring/cursors "abc" 3 3)) 1051 (fail 'substring/cursors)) 1052 1053(OR (string=? ABC (substring/cursors ABC 0 3)) 1054 (fail 'substring/cursors)) 1055 1056(OR (string=? ABC 1057 (substring/cursors ABC 1058 (string-index->cursor ABC 0) 1059 (string-index->cursor ABC 3))) 1060 (fail 'substring/cursors)) 1061 1062(OR (string=? "b" (substring/cursors "abc" 1 2)) 1063 (fail 'substring/cursors)) 1064 1065(OR (string=? "" (string-copy/cursors "")) 1066 (fail 'string-copy/cursors)) 1067 1068(OR (string=? "abc" (string-copy/cursors "abc")) 1069 (fail 'string-copy/cursors)) 1070 1071(OR (string=? "" (string-copy/cursors "abc" 3)) 1072 (fail 'string-copy/cursors)) 1073 1074(OR (string=? "c" (string-copy/cursors "abc" 2)) 1075 (fail 'string-copy/cursors)) 1076 1077(OR (string=? "abc" (string-copy/cursors "abc" 0)) 1078 (fail 'string-copy/cursors)) 1079 1080(OR (string=? "b" (string-copy/cursors "abc" 1 2)) 1081 (fail 'string-copy/cursors)) 1082 1083(OR (string=? "" (string-copy/cursors "" 0 0)) 1084 (fail 'string-copy/cursors)) 1085 1086(OR (string=? "" (string-copy/cursors "abc" 0 0)) 1087 (fail 'string-copy/cursors)) 1088 1089(OR (string=? "" (string-copy/cursors "abc" 3 3)) 1090 (fail 'string-copy/cursors)) 1091 1092(OR (string=? "abc" (string-copy/cursors "abc" 0 3)) 1093 (fail 'string-copy/cursors)) 1094 1095(OR (string=? "b" (string-copy/cursors "abc" 1 2)) 1096 (fail 'string-copy/cursors)) 1097 1098(OR (string=? (substring ABC 1 2) 1099 (string-copy/cursors ABC 1100 (string-index->cursor ABC 1) 1101 (string-index->cursor ABC 2))) 1102 (fail 'string-copy/cursors)) 1103 1104(OR (string=? "" (string-take "" 0)) 1105 (fail 'string-take)) 1106 1107(OR (string=? "" (string-take "abcdef" 0)) 1108 (fail 'string-take)) 1109 1110(OR (string=? "ab" (string-take "abcdef" 2)) 1111 (fail 'string-take)) 1112 1113(OR (string=? "" (string-drop "" 0)) 1114 (fail 'string-drop)) 1115 1116(OR (string=? "abcdef" (string-drop "abcdef" 0)) 1117 (fail 'string-drop)) 1118 1119(OR (string=? "cdef" (string-drop "abcdef" 2)) 1120 (fail 'string-drop)) 1121 1122(OR (string=? "" (string-take-right "" 0)) 1123 (fail 'string-take-right)) 1124 1125(OR (string=? "" (string-take-right "abcdef" 0)) 1126 (fail 'string-take-right)) 1127 1128(OR (string=? "ef" (string-take-right "abcdef" 2)) 1129 (fail 'string-take-right)) 1130 1131(OR (string=? "" (string-drop-right "" 0)) 1132 (fail 'string-drop-right)) 1133 1134(OR (string=? "abcdef" (string-drop-right "abcdef" 0)) 1135 (fail 'string-drop-right)) 1136 1137(OR (string=? "abcd" (string-drop-right "abcdef" 2)) 1138 (fail 'string-drop-right)) 1139 1140(OR (string=? "" (string-pad "" 0)) 1141 (fail 'string-pad)) 1142 1143(OR (string=? " " (string-pad "" 5)) 1144 (fail 'string-pad)) 1145 1146(OR (string=? " 325" (string-pad "325" 5)) 1147 (fail 'string-pad)) 1148 1149(OR (string=? "71325" (string-pad "71325" 5)) 1150 (fail 'string-pad)) 1151 1152(OR (string=? "71325" (string-pad "8871325" 5)) 1153 (fail 'string-pad)) 1154 1155(OR (string=? "" (string-pad "" 0 #\*)) 1156 (fail 'string-pad)) 1157 1158(OR (string=? "*****" (string-pad "" 5 #\*)) 1159 (fail 'string-pad)) 1160 1161(OR (string=? "**325" (string-pad "325" 5 #\*)) 1162 (fail 'string-pad)) 1163 1164(OR (string=? "71325" (string-pad "71325" 5 #\*)) 1165 (fail 'string-pad)) 1166 1167(OR (string=? "71325" (string-pad "8871325" 5 #\*)) 1168 (fail 'string-pad)) 1169 1170(OR (string=? "" (string-pad "" 0 #\* 0)) 1171 (fail 'string-pad)) 1172 1173(test* "string-pad" "" (string-pad EMPTY 0 #\* (string-cursor-start EMPTY))) 1174 1175(OR (string=? "*****" (string-pad "" 5 #\* 0)) 1176 (fail 'string-pad)) 1177 1178(OR (string=? "**325" (string-pad "325" 5 #\* 0)) 1179 (fail 'string-pad)) 1180 1181(OR (string=? "71325" (string-pad "71325" 5 #\* 0)) 1182 (fail 'string-pad)) 1183 1184(OR (string=? "71325" (string-pad "8871325" 5 #\* 0)) 1185 (fail 'string-pad)) 1186 1187(OR (string=? "***25" (string-pad "325" 5 #\* 1)) 1188 (fail 'string-pad)) 1189 1190(test* "string-pad " 1191 "***25" 1192 (let ([s "325"]) 1193 (string-pad s 5 #\* (string-index->cursor s 1)))) 1194 1195(OR (string=? "*1325" (string-pad "71325" 5 #\* 1)) 1196 (fail 'string-pad)) 1197 1198(OR (string=? "71325" (string-pad "8871325" 5 #\* 1)) 1199 (fail 'string-pad)) 1200 1201(OR (string=? "" (string-pad "" 0 #\* 0 0)) 1202 (fail 'string-pad)) 1203 1204(OR (string=? "*****" (string-pad "" 5 #\* 0 0)) 1205 (fail 'string-pad)) 1206 1207(OR (string=? "**325" (string-pad "325" 5 #\* 0 3)) 1208 (fail 'string-pad)) 1209 1210(test* "string-pad" 1211 "**325" 1212 (let ([s "325"]) 1213 (string-pad s 5 #\* (string-cursor-start s) (string-cursor-end s)))) 1214 1215(OR (string=? "**713" (string-pad "71325" 5 #\* 0 3)) 1216 (fail 'string-pad)) 1217 1218(OR (string=? "**887" (string-pad "8871325" 5 #\* 0 3)) 1219 (fail 'string-pad)) 1220 1221(OR (string=? "***25" (string-pad "325" 5 #\* 1 3)) 1222 (fail 'string-pad)) 1223 1224(OR (string=? "**132" (string-pad "71325" 5 #\* 1 4)) 1225 (fail 'string-pad)) 1226 1227(OR (string=? "*8713" (string-pad "8871325" 5 #\* 1 5)) 1228 (fail 'string-pad)) 1229 1230(OR (string=? "" (string-pad-right "" 0)) 1231 (fail 'string-pad-right)) 1232 1233(OR (string=? " " (string-pad-right "" 5)) 1234 (fail 'string-pad-right)) 1235 1236(OR (string=? "325 " (string-pad-right "325" 5)) 1237 (fail 'string-pad-right)) 1238 1239(OR (string=? "71325" (string-pad-right "71325" 5)) 1240 (fail 'string-pad-right)) 1241 1242(OR (string=? "88713" (string-pad-right "8871325" 5)) 1243 (fail 'string-pad-right)) 1244 1245(OR (string=? "" (string-pad-right "" 0 #\*)) 1246 (fail 'string-pad-right)) 1247 1248(OR (string=? "*****" (string-pad-right "" 5 #\*)) 1249 (fail 'string-pad-right)) 1250 1251(OR (string=? "325**" (string-pad-right "325" 5 #\*)) 1252 (fail 'string-pad-right)) 1253 1254(OR (string=? "71325" (string-pad-right "71325" 5 #\*)) 1255 (fail 'string-pad-right)) 1256 1257(OR (string=? "88713" (string-pad-right "8871325" 5 #\*)) 1258 (fail 'string-pad-right)) 1259 1260(OR (string=? "" (string-pad-right "" 0 #\* 0)) 1261 (fail 'string-pad-right)) 1262 1263(OR (string=? "*****" (string-pad-right "" 5 #\* 0)) 1264 (fail 'string-pad-right)) 1265 1266(OR (string=? "325**" (string-pad-right "325" 5 #\* 0)) 1267 (fail 'string-pad-right)) 1268 1269(OR (string=? "71325" (string-pad-right "71325" 5 #\* 0)) 1270 (fail 'string-pad-right)) 1271 1272(OR (string=? "88713" (string-pad-right "8871325" 5 #\* 0)) 1273 (fail 'string-pad-right)) 1274 1275(OR (string=? "25***" (string-pad-right "325" 5 #\* 1)) 1276 (fail 'string-pad-right)) 1277 1278(OR (string=? "1325*" (string-pad-right "71325" 5 #\* 1)) 1279 (fail 'string-pad-right)) 1280 1281(OR (string=? "87132" (string-pad-right "8871325" 5 #\* 1)) 1282 (fail 'string-pad-right)) 1283 1284(OR (string=? "" (string-pad-right "" 0 #\* 0 0)) 1285 (fail 'string-pad-right)) 1286 1287(OR (string=? "*****" (string-pad-right "" 5 #\* 0 0)) 1288 (fail 'string-pad-right)) 1289 1290(OR (string=? "325**" (string-pad-right "325" 5 #\* 0 3)) 1291 (fail 'string-pad-right)) 1292 1293(OR (string=? "713**" (string-pad-right "71325" 5 #\* 0 3)) 1294 (fail 'string-pad-right)) 1295 1296(OR (string=? "887**" (string-pad-right "8871325" 5 #\* 0 3)) 1297 (fail 'string-pad-right)) 1298 1299(OR (string=? "25***" (string-pad-right "325" 5 #\* 1 3)) 1300 (fail 'string-pad-right)) 1301 1302(OR (string=? "132**" (string-pad-right "71325" 5 #\* 1 4)) 1303 (fail 'string-pad-right)) 1304 1305(OR (string=? "8713*" (string-pad-right "8871325" 5 #\* 1 5)) 1306 (fail 'string-pad-right)) 1307 1308 1309(OR (string=? "" (string-trim "")) 1310 (fail 'string-trim)) 1311 1312(OR (string=? "a b c " (string-trim " a b c ")) 1313 (fail 'string-trim)) 1314 1315(OR (string=? "" (string-trim "" char-whitespace?)) 1316 (fail 'string-trim)) 1317 1318(OR (string=? "a b c " (string-trim " a b c " char-whitespace?)) 1319 (fail 'string-trim)) 1320 1321(OR (string=? "" (string-trim " a b c " char?)) 1322 (fail 'string-trim)) 1323 1324(OR (string=? "" (string-trim "" char-whitespace? 0)) 1325 (fail 'string-trim)) 1326 1327(test* "string-trim" "" (string-trim EMPTY char-whitespace? (string-cursor-start EMPTY))) 1328 1329(OR (string=? "a b c " (string-trim " a b c " char-whitespace? 0)) 1330 (fail 'string-trim)) 1331 1332(OR (string=? "" (string-trim " a b c " char? 0)) 1333 (fail 'string-trim)) 1334 1335(OR (string=? "b c " (string-trim " a b c " char-whitespace? 3)) 1336 (fail 'string-trim)) 1337 1338(OR (string=? "" (string-trim " a b c " char? 3)) 1339 (fail 'string-trim)) 1340 1341(OR (string=? "" (string-trim " a b c " char? 0 11)) 1342 (fail 'string-trim)) 1343 1344(test* "string-trim" 1345 "" 1346 (let ([s " a b c "]) 1347 (string-trim s 1348 char? 1349 (string-cursor-start s) 1350 (string-index->cursor s 11)))) 1351 1352(OR (string=? "b c " (string-trim " a b c " char-whitespace? 3 11)) 1353 (fail 'string-trim)) 1354 1355(OR (string=? "" (string-trim " a b c " char? 3 11)) 1356 (fail 'string-trim)) 1357 1358(OR (string=? "" (string-trim " a b c " char? 0 8)) 1359 (fail 'string-trim)) 1360 1361(OR (string=? "b " (string-trim " a b c " char-whitespace? 3 8)) 1362 (fail 'string-trim)) 1363 1364(OR (string=? "" (string-trim " a b c " char? 3 8)) 1365 (fail 'string-trim)) 1366 1367 1368(OR (string=? "" (string-trim-right "")) 1369 (fail 'string-trim-right)) 1370 1371(OR (string=? " a b c" (string-trim-right " a b c ")) 1372 (fail 'string-trim-right)) 1373 1374(OR (string=? "" (string-trim-right "" char-whitespace?)) 1375 (fail 'string-trim-right)) 1376 1377(OR (string=? " a b c" (string-trim-right " a b c " char-whitespace?)) 1378 (fail 'string-trim-right)) 1379 1380(OR (string=? "" (string-trim-right " a b c " char?)) 1381 (fail 'string-trim-right)) 1382 1383(OR (string=? "" (string-trim-right "" char-whitespace? 0)) 1384 (fail 'string-trim-right)) 1385 1386(OR (string=? " a b c" (string-trim-right " a b c " char-whitespace? 0)) 1387 (fail 'string-trim-right)) 1388 1389(OR (string=? "" (string-trim-right " a b c " char? 0)) 1390 (fail 'string-trim-right)) 1391 1392(OR (string=? " b c" (string-trim-right " a b c " char-whitespace? 3)) 1393 (fail 'string-trim-right)) 1394 1395(OR (string=? "" (string-trim-right " a b c " char? 3)) 1396 (fail 'string-trim-right)) 1397 1398(OR (string=? "" (string-trim-right " a b c " char? 0 11)) 1399 (fail 'string-trim-right)) 1400 1401(OR (string=? " b c" (string-trim-right " a b c " char-whitespace? 3 11)) 1402 (fail 'string-trim-right)) 1403 1404(OR (string=? "" (string-trim-right " a b c " char? 3 11)) 1405 (fail 'string-trim-right)) 1406 1407(OR (string=? "" (string-trim-right " a b c " char? 0 8)) 1408 (fail 'string-trim-right)) 1409 1410(OR (string=? " b" (string-trim-right " a b c " char-whitespace? 3 8)) 1411 (fail 'string-trim-right)) 1412 1413(OR (string=? "" (string-trim-right " a b c " char? 3 8)) 1414 (fail 'string-trim-right)) 1415 1416 1417(OR (string=? "" (string-trim-both "")) 1418 (fail 'string-trim-both)) 1419 1420(OR (string=? "a b c" (string-trim-both " a b c ")) 1421 (fail 'string-trim-both)) 1422 1423(OR (string=? "" (string-trim-both "" char-whitespace?)) 1424 (fail 'string-trim-both)) 1425 1426(OR (string=? "a b c" (string-trim-both " a b c " char-whitespace?)) 1427 (fail 'string-trim-both)) 1428 1429(OR (string=? "" (string-trim-both " a b c " char?)) 1430 (fail 'string-trim-both)) 1431 1432(OR (string=? "" (string-trim-both "" char-whitespace? 0)) 1433 (fail 'string-trim-both)) 1434 1435(OR (string=? "a b c" (string-trim-both " a b c " char-whitespace? 0)) 1436 (fail 'string-trim-both)) 1437 1438(OR (string=? "" (string-trim-both " a b c " char? 0)) 1439 (fail 'string-trim-both)) 1440 1441(OR (string=? "b c" (string-trim-both " a b c " char-whitespace? 3)) 1442 (fail 'string-trim-both)) 1443 1444(OR (string=? "" (string-trim-both " a b c " char? 3)) 1445 (fail 'string-trim-both)) 1446 1447(OR (string=? "" (string-trim-both " a b c " char? 0 11)) 1448 (fail 'string-trim-both)) 1449 1450(OR (string=? "b c" (string-trim-both " a b c " char-whitespace? 3 11)) 1451 (fail 'string-trim-both)) 1452 1453(OR (string=? "" (string-trim-both " a b c " char? 3 11)) 1454 (fail 'string-trim-both)) 1455 1456(OR (string=? "" (string-trim-both " a b c " char? 0 8)) 1457 (fail 'string-trim-both)) 1458 1459(OR (string=? "b" (string-trim-both " a b c " char-whitespace? 3 8)) 1460 (fail 'string-trim-both)) 1461 1462(OR (string=? "" (string-trim-both " a b c " char? 3 8)) 1463 (fail 'string-trim-both)) 1464 1465 1466(OR (= 0 (string-prefix-length "" "")) 1467 (fail 'string-prefix-length)) 1468 1469(OR (= 0 (string-prefix-length "" "aabbccddee")) 1470 (fail 'string-prefix-length)) 1471 1472(OR (= 0 (string-prefix-length "aisle" "")) 1473 (fail 'string-prefix-length)) 1474 1475(OR (= 0 (string-prefix-length "" "aabbccddee")) 1476 (fail 'string-prefix-length)) 1477 1478(OR (= 1 (string-prefix-length "aisle" "aabbccddee")) 1479 (fail 'string-prefix-length)) 1480 1481(OR (= 0 (string-prefix-length "bail" "aabbccddee")) 1482 (fail 'string-prefix-length)) 1483 1484(OR (= 4 (string-prefix-length "prefix" "preface")) 1485 (fail 'string-prefix-length)) 1486 1487(OR (= 0 (string-prefix-length "" "" 0)) 1488 (fail 'string-prefix-length)) 1489 1490(OR (= 0 (string-prefix-length "" "aabbccddee" 0)) 1491 (fail 'string-prefix-length)) 1492 1493(OR (= 0 (string-prefix-length "aisle" "" 0)) 1494 (fail 'string-prefix-length)) 1495 1496(OR (= 1 (string-prefix-length "aisle" "aabbccddee" 0)) 1497 (fail 'string-prefix-length)) 1498 1499(OR (= 0 (string-prefix-length "bail" "aabbccddee" 0)) 1500 (fail 'string-prefix-length)) 1501 1502(OR (= 4 (string-prefix-length "prefix" "preface" 0)) 1503 (fail 'string-prefix-length)) 1504 1505(OR (= 0 (string-prefix-length "aisle" "" 1)) 1506 (fail 'string-prefix-length)) 1507 1508(OR (= 0 (string-prefix-length "aisle" "aabbccddee" 1)) 1509 (fail 'string-prefix-length)) 1510 1511(OR (= 1 (string-prefix-length "bail" "aabbccddee" 1)) 1512 (fail 'string-prefix-length)) 1513 1514(OR (= 0 (string-prefix-length "prefix" "preface" 1)) 1515 (fail 'string-prefix-length)) 1516 1517(OR (= 0 (string-prefix-length "" "" 0 0)) 1518 (fail 'string-prefix-length)) 1519 1520(OR (= 0 (string-prefix-length "" "aabbccddee" 0 0)) 1521 (fail 'string-prefix-length)) 1522 1523(OR (= 0 (string-prefix-length "aisle" "" 0 4)) 1524 (fail 'string-prefix-length)) 1525 1526(OR (= 1 (string-prefix-length "aisle" "aabbccddee" 0 4)) 1527 (fail 'string-prefix-length)) 1528 1529(OR (= 0 (string-prefix-length "bail" "aabbccddee" 0 1)) 1530 (fail 'string-prefix-length)) 1531 1532(OR (= 0 (string-prefix-length "aisle" "" 1 4)) 1533 (fail 'string-prefix-length)) 1534 1535(OR (= 0 (string-prefix-length "aisle" "aabbccddee" 1 4)) 1536 (fail 'string-prefix-length)) 1537 1538(OR (= 1 (string-prefix-length "bail" "aabbccddee" 1 4)) 1539 (fail 'string-prefix-length)) 1540 1541(OR (= 0 (string-prefix-length "prefix" "preface" 1 5)) 1542 (fail 'string-prefix-length)) 1543 1544(OR (= 0 (string-prefix-length "" "" 0 0 0)) 1545 (fail 'string-prefix-length)) 1546 1547(OR (= 0 (string-prefix-length "" "aabbccddee" 0 0 0)) 1548 (fail 'string-prefix-length)) 1549 1550(OR (= 0 (string-prefix-length "aisle" "" 0 4 0)) 1551 (fail 'string-prefix-length)) 1552 1553(OR (= 0 (string-prefix-length "aisle" "aabbccddee" 0 4 2)) 1554 (fail 'string-prefix-length)) 1555 1556(OR (= 1 (string-prefix-length "bail" "aabbccddee" 0 1 2)) 1557 (fail 'string-prefix-length)) 1558 1559(OR (= 0 (string-prefix-length "prefix" "preface" 0 5 1)) 1560 (fail 'string-prefix-length)) 1561 1562(OR (= 0 (string-prefix-length "aisle" "" 1 4 0)) 1563 (fail 'string-prefix-length)) 1564 1565(OR (= 0 (string-prefix-length "aisle" "aabbccddee" 1 4 3)) 1566 (fail 'string-prefix-length)) 1567 1568(OR (= 0 (string-prefix-length "bail" "aabbccddee" 1 4 3)) 1569 (fail 'string-prefix-length)) 1570 1571(OR (= 3 (string-prefix-length "prefix" "preface" 1 5 1)) 1572 (fail 'string-prefix-length)) 1573 1574(OR (= 0 (string-prefix-length "" "" 0 0 0 0)) 1575 (fail 'string-prefix-length)) 1576 1577(OR (= 0 (string-prefix-length "" "aabbccddee" 0 0 0 0)) 1578 (fail 'string-prefix-length)) 1579 1580(OR (= 0 (string-prefix-length "aisle" "" 0 4 0 0)) 1581 (fail 'string-prefix-length)) 1582 1583(OR (= 0 (string-prefix-length "aisle" "aabbccddee" 0 4 2 10)) 1584 (fail 'string-prefix-length)) 1585 1586(OR (= 1 (string-prefix-length "bail" "aabbccddee" 0 1 2 10)) 1587 (fail 'string-prefix-length)) 1588 1589(OR (= 0 (string-prefix-length "prefix" "preface" 0 5 1 6)) 1590 (fail 'string-prefix-length)) 1591 1592(OR (= 0 (string-prefix-length "aisle" "" 1 4 0 0)) 1593 (fail 'string-prefix-length)) 1594 1595(OR (= 0 (string-prefix-length "aisle" "aabbccddee" 1 4 3 3)) 1596 (fail 'string-prefix-length)) 1597 1598(OR (= 0 (string-prefix-length "bail" "aabbccddee" 1 4 3 6)) 1599 (fail 'string-prefix-length)) 1600 1601(OR (= 3 (string-prefix-length "prefix" "preface" 1 5 1 7)) 1602 (fail 'string-prefix-length)) 1603 1604 1605(OR (= 0 (string-suffix-length "" "")) 1606 (fail 'string-suffix-length)) 1607 1608(OR (= 0 (string-suffix-length "" "aabbccddee")) 1609 (fail 'string-suffix-length)) 1610 1611(OR (= 0 (string-suffix-length "aisle" "")) 1612 (fail 'string-suffix-length)) 1613 1614(OR (= 0 (string-suffix-length "" "aabbccddee")) 1615 (fail 'string-suffix-length)) 1616 1617(OR (= 1 (string-suffix-length "aisle" "aabbccddee")) 1618 (fail 'string-suffix-length)) 1619 1620(OR (= 0 (string-suffix-length "bail" "aabbccddee")) 1621 (fail 'string-suffix-length)) 1622 1623(OR (= 3 (string-suffix-length "place" "preface")) 1624 (fail 'string-suffix-length)) 1625 1626(OR (= 0 (string-suffix-length "" "" 0)) 1627 (fail 'string-suffix-length)) 1628 1629(OR (= 0 (string-suffix-length "" "aabbccddee" 0)) 1630 (fail 'string-suffix-length)) 1631 1632(OR (= 0 (string-suffix-length "aisle" "" 0)) 1633 (fail 'string-suffix-length)) 1634 1635(OR (= 1 (string-suffix-length "aisle" "aabbccddee" 0)) 1636 (fail 'string-suffix-length)) 1637 1638(OR (= 0 (string-suffix-length "bail" "aabbccddee" 0)) 1639 (fail 'string-suffix-length)) 1640 1641(OR (= 3 (string-suffix-length "place" "preface" 0)) 1642 (fail 'string-suffix-length)) 1643 1644(OR (= 0 (string-suffix-length "aisle" "" 1)) 1645 (fail 'string-suffix-length)) 1646 1647(OR (= 1 (string-suffix-length "aisle" "aabbccddee" 1)) 1648 (fail 'string-suffix-length)) 1649 1650(OR (= 0 (string-suffix-length "bail" "aabbccddee" 1)) 1651 (fail 'string-suffix-length)) 1652 1653(OR (= 3 (string-suffix-length "place" "preface" 1)) 1654 (fail 'string-suffix-length)) 1655 1656(OR (= 0 (string-suffix-length "" "" 0 0)) 1657 (fail 'string-suffix-length)) 1658 1659(OR (= 0 (string-suffix-length "" "aabbccddee" 0 0)) 1660 (fail 'string-suffix-length)) 1661 1662(OR (= 0 (string-suffix-length "aisle" "" 0 4)) 1663 (fail 'string-suffix-length)) 1664 1665(OR (= 0 (string-suffix-length "aisle" "aabbccddee" 0 4)) 1666 (fail 'string-suffix-length)) 1667 1668(OR (= 0 (string-suffix-length "bail" "aabbccddee" 0 1)) 1669 (fail 'string-suffix-length)) 1670 1671(OR (= 0 (string-suffix-length "aisle" "" 1 4)) 1672 (fail 'string-suffix-length)) 1673 1674(OR (= 0 (string-suffix-length "aisle" "aabbccddee" 1 4)) 1675 (fail 'string-suffix-length)) 1676 1677(OR (= 1 (string-suffix-length "aisle" "aabbccddee" 1 5)) 1678 (fail 'string-suffix-length)) 1679 1680(OR (= 0 (string-suffix-length "bail" "aabbccddee" 1 4)) 1681 (fail 'string-suffix-length)) 1682 1683(OR (= 3 (string-suffix-length "place" "preface" 1 5)) 1684 (fail 'string-suffix-length)) 1685 1686(OR (= 0 (string-suffix-length "" "" 0 0 0)) 1687 (fail 'string-suffix-length)) 1688 1689(OR (= 0 (string-suffix-length "" "aabbccddee" 0 0 0)) 1690 (fail 'string-suffix-length)) 1691 1692(OR (= 0 (string-suffix-length "aisle" "" 0 4 0)) 1693 (fail 'string-suffix-length)) 1694 1695(OR (= 0 (string-suffix-length "aisle" "aabbccddee" 0 4 2)) 1696 (fail 'string-suffix-length)) 1697 1698(OR (= 0 (string-suffix-length "bail" "aabbccddee" 0 1 2)) 1699 (fail 'string-suffix-length)) 1700 1701(OR (= 3 (string-suffix-length "place" "preface" 0 5 1)) 1702 (fail 'string-suffix-length)) 1703 1704(OR (= 0 (string-suffix-length "aisle" "" 1 4 0)) 1705 (fail 'string-suffix-length)) 1706 1707(OR (= 0 (string-suffix-length "aisle" "aabbccddee" 1 4 3)) 1708 (fail 'string-suffix-length)) 1709 1710(OR (= 0 (string-suffix-length "bail" "aabbccddee" 1 4 3)) 1711 (fail 'string-suffix-length)) 1712 1713(OR (= 3 (string-suffix-length "place" "preface" 1 5 1)) 1714 (fail 'string-suffix-length)) 1715 1716(OR (= 0 (string-suffix-length "" "" 0 0 0 0)) 1717 (fail 'string-suffix-length)) 1718 1719(OR (= 0 (string-suffix-length "" "aabbccddee" 0 0 0 0)) 1720 (fail 'string-suffix-length)) 1721 1722(OR (= 0 (string-suffix-length "aisle" "" 0 4 0 0)) 1723 (fail 'string-suffix-length)) 1724 1725(OR (= 1 (string-suffix-length "aisle" "aabbccddee" 0 5 2 10)) 1726 (fail 'string-suffix-length)) 1727 1728(OR (= 1 (string-suffix-length "bail" "aabbccddee" 0 1 2 4)) 1729 (fail 'string-suffix-length)) 1730 1731(OR (= 0 (string-suffix-length "place" "preface" 0 5 1 6)) 1732 (fail 'string-suffix-length)) 1733 1734(OR (= 2 (string-suffix-length "place" "preface" 0 4 1 6)) 1735 (fail 'string-suffix-length)) 1736 1737(OR (= 0 (string-suffix-length "aisle" "" 1 4 0 0)) 1738 (fail 'string-suffix-length)) 1739 1740(OR (= 0 (string-suffix-length "aisle" "aabbccddee" 1 4 3 3)) 1741 (fail 'string-suffix-length)) 1742 1743(OR (= 0 (string-suffix-length "bail" "aabbccddee" 1 4 3 6)) 1744 (fail 'string-suffix-length)) 1745 1746(OR (= 3 (string-suffix-length "place" "preface" 1 5 1 7)) 1747 (fail 'string-suffix-length)) 1748 1749 1750(OR (eq? #t (string-prefix? "" "")) 1751 (fail 'string-prefix?)) 1752 1753(OR (eq? #t (string-prefix? "" "abc")) 1754 (fail 'string-prefix?)) 1755 1756(OR (eq? #t (string-prefix? "a" "abc")) 1757 (fail 'string-prefix?)) 1758 1759(OR (eq? #f (string-prefix? "c" "abc")) 1760 (fail 'string-prefix?)) 1761 1762(OR (eq? #t (string-prefix? "ab" "abc")) 1763 (fail 'string-prefix?)) 1764 1765(OR (eq? #f (string-prefix? "ac" "abc")) 1766 (fail 'string-prefix?)) 1767 1768(OR (eq? #t (string-prefix? "abc" "abc")) 1769 (fail 'string-prefix?)) 1770 1771(OR (eq? #t (string-suffix? "" "")) 1772 (fail 'string-suffix?)) 1773 1774(OR (eq? #t (string-suffix? "" "abc")) 1775 (fail 'string-suffix?)) 1776 1777(OR (eq? #f (string-suffix? "a" "abc")) 1778 (fail 'string-suffix?)) 1779 1780(OR (eq? #t (string-suffix? "c" "abc")) 1781 (fail 'string-suffix?)) 1782 1783(OR (eq? #f (string-suffix? "ac" "abc")) 1784 (fail 'string-suffix?)) 1785 1786(OR (eq? #t (string-suffix? "bc" "abc")) 1787 (fail 'string-suffix?)) 1788 1789(OR (eq? #t (string-suffix? "abc" "abc")) 1790 (fail 'string-suffix?)) 1791 1792(OR (eq? #t (string-prefix? "" "" 0)) 1793 (fail 'string-prefix?)) 1794 1795(OR (eq? #t (string-prefix? "" "abc" 0)) 1796 (fail 'string-prefix?)) 1797 1798(OR (eq? #t (string-prefix? "a" "abc" 0)) 1799 (fail 'string-prefix?)) 1800 1801(OR (eq? #f (string-prefix? "c" "abc" 0)) 1802 (fail 'string-prefix?)) 1803 1804(OR (eq? #t (string-prefix? "ab" "abc" 0)) 1805 (fail 'string-prefix?)) 1806 1807(OR (eq? #f (string-prefix? "ac" "abc" 0)) 1808 (fail 'string-prefix?)) 1809 1810(OR (eq? #t (string-prefix? "abc" "abc" 0)) 1811 (fail 'string-prefix?)) 1812 1813(OR (eq? #t (string-suffix? "" "" 0)) 1814 (fail 'string-suffix?)) 1815 1816(OR (eq? #t (string-suffix? "" "abc" 0)) 1817 (fail 'string-suffix?)) 1818 1819(OR (eq? #f (string-suffix? "a" "abc" 0)) 1820 (fail 'string-suffix?)) 1821 1822(OR (eq? #t (string-suffix? "c" "abc" 0)) 1823 (fail 'string-suffix?)) 1824 1825(OR (eq? #f (string-suffix? "ac" "abc" 0)) 1826 (fail 'string-suffix?)) 1827 1828(OR (eq? #t (string-suffix? "bc" "abc" 0)) 1829 (fail 'string-suffix?)) 1830 1831(OR (eq? #t (string-suffix? "abc" "abc" 0)) 1832 (fail 'string-suffix?)) 1833 1834(OR (eq? #t (string-prefix? "ab" "abc" 2)) 1835 (fail 'string-prefix?)) 1836 1837(OR (eq? #t (string-prefix? "ac" "abc" 2)) 1838 (fail 'string-prefix?)) 1839 1840(OR (eq? #f (string-prefix? "abc" "abc" 2)) 1841 (fail 'string-prefix?)) 1842 1843(OR (eq? #t (string-suffix? "ac" "abc" 2)) 1844 (fail 'string-suffix?)) 1845 1846(OR (eq? #t (string-suffix? "bc" "abc" 2)) 1847 (fail 'string-suffix?)) 1848 1849(OR (eq? #t (string-suffix? "abc" "abc" 2)) 1850 (fail 'string-suffix?)) 1851 1852 1853(OR (eq? #t (string-prefix? "" "" 0 0)) 1854 (fail 'string-prefix?)) 1855 1856(OR (eq? #t (string-prefix? "" "abc" 0 0)) 1857 (fail 'string-prefix?)) 1858 1859(OR (eq? #t (string-prefix? "a" "abc" 0 0)) 1860 (fail 'string-prefix?)) 1861 1862(OR (eq? #f (string-prefix? "c" "abc" 0 1)) 1863 (fail 'string-prefix?)) 1864 1865(OR (eq? #t (string-prefix? "ab" "abc" 0 1)) 1866 (fail 'string-prefix?)) 1867 1868(OR (eq? #t (string-prefix? "ab" "abc" 0 2)) 1869 (fail 'string-prefix?)) 1870 1871(OR (eq? #f (string-prefix? "ac" "abc" 0 2)) 1872 (fail 'string-prefix?)) 1873 1874(OR (eq? #t (string-prefix? "abc" "abc" 0 3)) 1875 (fail 'string-prefix?)) 1876 1877(OR (eq? #t (string-suffix? "" "" 0 0)) 1878 (fail 'string-suffix?)) 1879 1880(OR (eq? #t (string-suffix? "" "abc" 0 0)) 1881 (fail 'string-suffix?)) 1882 1883(OR (eq? #f (string-suffix? "a" "abc" 0 1)) 1884 (fail 'string-suffix?)) 1885 1886(OR (eq? #t (string-suffix? "c" "abc" 0 1)) 1887 (fail 'string-suffix?)) 1888 1889(OR (eq? #t (string-suffix? "ac" "abc" 1 2)) 1890 (fail 'string-suffix?)) 1891 1892(OR (eq? #f (string-suffix? "ac" "abc" 0 2)) 1893 (fail 'string-suffix?)) 1894 1895(OR (eq? #t (string-suffix? "bc" "abc" 0 2)) 1896 (fail 'string-suffix?)) 1897 1898(OR (eq? #t (string-suffix? "abc" "abc" 0 3)) 1899 (fail 'string-suffix?)) 1900 1901(OR (eq? #t (string-prefix? "ab" "abc" 2 2)) 1902 (fail 'string-prefix?)) 1903 1904(OR (eq? #t (string-prefix? "ac" "abc" 2 2)) 1905 (fail 'string-prefix?)) 1906 1907(OR (eq? #f (string-prefix? "abc" "abc" 2 3)) 1908 (fail 'string-prefix?)) 1909 1910(OR (eq? #t (string-suffix? "ac" "abc" 2 2)) 1911 (fail 'string-suffix?)) 1912 1913(OR (eq? #t (string-suffix? "bc" "abc" 2 2)) 1914 (fail 'string-suffix?)) 1915 1916(OR (eq? #t (string-suffix? "abc" "abc" 2 3)) 1917 (fail 'string-suffix?)) 1918 1919 1920(OR (eq? #t (string-prefix? "" "" 0 0 0)) 1921 (fail 'string-prefix?)) 1922 1923(OR (eq? #t (string-prefix? "" "abc" 0 0 0)) 1924 (fail 'string-prefix?)) 1925 1926(OR (eq? #t (string-prefix? "a" "abc" 0 0 0)) 1927 (fail 'string-prefix?)) 1928 1929(OR (eq? #f (string-prefix? "c" "abc" 0 1 0)) 1930 (fail 'string-prefix?)) 1931 1932(OR (eq? #t (string-prefix? "ab" "abc" 0 1 0)) 1933 (fail 'string-prefix?)) 1934 1935(OR (eq? #t (string-prefix? "ab" "abc" 0 2 0)) 1936 (fail 'string-prefix?)) 1937 1938(OR (eq? #f (string-prefix? "ac" "abc" 0 2 0)) 1939 (fail 'string-prefix?)) 1940 1941(OR (eq? #t (string-prefix? "abc" "abc" 0 3 0)) 1942 (fail 'string-prefix?)) 1943 1944(OR (eq? #t (string-suffix? "" "" 0 0 0)) 1945 (fail 'string-suffix?)) 1946 1947(OR (eq? #t (string-suffix? "" "abc" 0 0 0)) 1948 (fail 'string-suffix?)) 1949 1950(OR (eq? #f (string-suffix? "a" "abc" 0 1 0)) 1951 (fail 'string-suffix?)) 1952 1953(OR (eq? #t (string-suffix? "c" "abc" 0 1 0)) 1954 (fail 'string-suffix?)) 1955 1956(OR (eq? #t (string-suffix? "ac" "abc" 1 2 0)) 1957 (fail 'string-suffix?)) 1958 1959(OR (eq? #f (string-suffix? "ac" "abc" 0 2 0)) 1960 (fail 'string-suffix?)) 1961 1962(OR (eq? #t (string-suffix? "bc" "abc" 0 2 0)) 1963 (fail 'string-suffix?)) 1964 1965(OR (eq? #t (string-suffix? "abc" "abc" 0 3 0)) 1966 (fail 'string-suffix?)) 1967 1968(OR (eq? #t (string-prefix? "ab" "abc" 2 2 0)) 1969 (fail 'string-prefix?)) 1970 1971(OR (eq? #t (string-prefix? "ac" "abc" 2 2 0)) 1972 (fail 'string-prefix?)) 1973 1974(OR (eq? #f (string-prefix? "abc" "abc" 2 3 0)) 1975 (fail 'string-prefix?)) 1976 1977(OR (eq? #t (string-suffix? "ac" "abc" 2 2 0)) 1978 (fail 'string-suffix?)) 1979 1980(OR (eq? #t (string-suffix? "bc" "abc" 2 2 0)) 1981 (fail 'string-suffix?)) 1982 1983(OR (eq? #t (string-suffix? "abc" "abc" 2 3 0)) 1984 (fail 'string-suffix?)) 1985 1986(OR (eq? #t (string-prefix? "" "abc" 0 0 1)) 1987 (fail 'string-prefix?)) 1988 1989(OR (eq? #t (string-prefix? "a" "abc" 0 0 1)) 1990 (fail 'string-prefix?)) 1991 1992(OR (eq? #t (string-prefix? "c" "abc" 0 1 2)) 1993 (fail 'string-prefix?)) 1994 1995(OR (eq? #f (string-prefix? "ab" "abc" 0 1 2)) 1996 (fail 'string-prefix?)) 1997 1998(OR (eq? #f (string-prefix? "ab" "abc" 0 2 1)) 1999 (fail 'string-prefix?)) 2000 2001(OR (eq? #f (string-prefix? "ac" "abc" 0 2 1)) 2002 (fail 'string-prefix?)) 2003 2004(OR (eq? #f (string-prefix? "abc" "abc" 0 3 1)) 2005 (fail 'string-prefix?)) 2006 2007(OR (eq? #f (string-suffix? "a" "abc" 0 1 2)) 2008 (fail 'string-suffix?)) 2009 2010(OR (eq? #t (string-suffix? "c" "abc" 0 1 1)) 2011 (fail 'string-suffix?)) 2012 2013(OR (eq? #t (string-suffix? "ac" "abc" 1 2 2)) 2014 (fail 'string-suffix?)) 2015 2016(OR (eq? #t (string-suffix? "bc" "abc" 0 2 1)) 2017 (fail 'string-suffix?)) 2018 2019(OR (eq? #f (string-suffix? "bc" "abc" 0 2 2)) 2020 (fail 'string-suffix?)) 2021 2022 2023(OR (eq? #t (string-prefix? "" "" 0 0 0 0)) 2024 (fail 'string-prefix?)) 2025 2026(OR (eq? #t (string-prefix? "" "abc" 0 0 0 3)) 2027 (fail 'string-prefix?)) 2028 2029(OR (eq? #t (string-prefix? "a" "abc" 0 0 0 3)) 2030 (fail 'string-prefix?)) 2031 2032(OR (eq? #f (string-prefix? "c" "abc" 0 1 0 3)) 2033 (fail 'string-prefix?)) 2034 2035(OR (eq? #t (string-prefix? "ab" "abc" 0 1 0 3)) 2036 (fail 'string-prefix?)) 2037 2038(OR (eq? #t (string-prefix? "ab" "abc" 0 2 0 3)) 2039 (fail 'string-prefix?)) 2040 2041(OR (eq? #f (string-prefix? "ac" "abc" 0 2 0 3)) 2042 (fail 'string-prefix?)) 2043 2044(OR (eq? #t (string-prefix? "abc" "abc" 0 3 0 3)) 2045 (fail 'string-prefix?)) 2046 2047(OR (eq? #t (string-suffix? "" "abc" 0 0 0 3)) 2048 (fail 'string-suffix?)) 2049 2050(OR (eq? #f (string-suffix? "a" "abc" 0 1 0 3)) 2051 (fail 'string-suffix?)) 2052 2053(OR (eq? #t (string-suffix? "c" "abc" 0 1 0 3)) 2054 (fail 'string-suffix?)) 2055 2056(OR (eq? #t (string-suffix? "ac" "abc" 1 2 0 3)) 2057 (fail 'string-suffix?)) 2058 2059(OR (eq? #f (string-suffix? "ac" "abc" 0 2 0 3)) 2060 (fail 'string-suffix?)) 2061 2062(OR (eq? #t (string-suffix? "bc" "abc" 0 2 0 3)) 2063 (fail 'string-suffix?)) 2064 2065(OR (eq? #t (string-suffix? "abc" "abc" 0 3 0 3)) 2066 (fail 'string-suffix?)) 2067 2068(OR (eq? #t (string-prefix? "ab" "abc" 2 2 0 3)) 2069 (fail 'string-prefix?)) 2070 2071(OR (eq? #t (string-prefix? "ac" "abc" 2 2 0 3)) 2072 (fail 'string-prefix?)) 2073 2074(OR (eq? #f (string-prefix? "abc" "abc" 2 3 0 3)) 2075 (fail 'string-prefix?)) 2076 2077(OR (eq? #t (string-suffix? "ac" "abc" 2 2 0 3)) 2078 (fail 'string-suffix?)) 2079 2080(OR (eq? #t (string-suffix? "bc" "abc" 2 2 0 3)) 2081 (fail 'string-suffix?)) 2082 2083(OR (eq? #t (string-suffix? "abc" "abc" 2 3 0 3)) 2084 (fail 'string-suffix?)) 2085 2086(OR (eq? #t (string-prefix? "" "abc" 0 0 1 3)) 2087 (fail 'string-prefix?)) 2088 2089(OR (eq? #t (string-prefix? "a" "abc" 0 0 1 3)) 2090 (fail 'string-prefix?)) 2091 2092(OR (eq? #t (string-prefix? "c" "abc" 0 1 2 3)) 2093 (fail 'string-prefix?)) 2094 2095(OR (eq? #f (string-prefix? "ab" "abc" 0 1 2 3)) 2096 (fail 'string-prefix?)) 2097 2098(OR (eq? #f (string-prefix? "ab" "abc" 0 2 1 3)) 2099 (fail 'string-prefix?)) 2100 2101(OR (eq? #f (string-prefix? "ac" "abc" 0 2 1 3)) 2102 (fail 'string-prefix?)) 2103 2104(OR (eq? #f (string-prefix? "abc" "abc" 0 3 1 3)) 2105 (fail 'string-prefix?)) 2106 2107(OR (eq? #f (string-suffix? "a" "abc" 0 1 2 3)) 2108 (fail 'string-suffix?)) 2109 2110(OR (eq? #t (string-suffix? "c" "abc" 0 1 1 3)) 2111 (fail 'string-suffix?)) 2112 2113(OR (eq? #t (string-suffix? "ac" "abc" 1 2 2 3)) 2114 (fail 'string-suffix?)) 2115 2116(OR (eq? #t (string-suffix? "bc" "abc" 0 2 1 3)) 2117 (fail 'string-suffix?)) 2118 2119(OR (eq? #f (string-suffix? "bc" "abc" 0 2 2 3)) 2120 (fail 'string-suffix?)) 2121 2122 2123(OR (eq? #t (string-prefix? "" "abc" 0 0 0 2)) 2124 (fail 'string-prefix?)) 2125 2126(OR (eq? #t (string-prefix? "a" "abc" 0 0 0 2)) 2127 (fail 'string-prefix?)) 2128 2129(OR (eq? #f (string-prefix? "c" "abc" 0 1 0 2)) 2130 (fail 'string-prefix?)) 2131 2132(OR (eq? #t (string-prefix? "ab" "abc" 0 1 0 2)) 2133 (fail 'string-prefix?)) 2134 2135(OR (eq? #f (string-prefix? "abc" "abc" 0 3 0 2)) 2136 (fail 'string-prefix?)) 2137 2138(OR (eq? #t (string-suffix? "" "abc" 0 0 0 2)) 2139 (fail 'string-suffix?)) 2140 2141(OR (eq? #f (string-suffix? "c" "abc" 0 1 0 2)) 2142 (fail 'string-suffix?)) 2143 2144(OR (eq? #f (string-suffix? "ac" "abc" 1 2 0 2)) 2145 (fail 'string-suffix?)) 2146 2147;;----------------------------------------------------------------------- 2148(test-section "Searching") 2149 2150(OR (= 0 2151 (string-cursor->index EMPTY 2152 (string-index EMPTY char?))) 2153 (fail 'string-index)) 2154 2155(OR (= 0 2156 (string-cursor->index ABCDEF 2157 (string-index ABCDEF char?))) 2158 (fail 'string-index)) 2159 2160(OR (= 4 2161 (string-cursor->index ABCDEF-ASCII 2162 (string-index ABCDEF-ASCII 2163 (lambda (c) (char>? c #\d))))) 2164 (fail 'string-index)) 2165 2166(OR (= 6 2167 (string-cursor->index ABCDEF 2168 (string-index ABCDEF char-whitespace?))) 2169 (fail 'string-index)) 2170 2171(OR (= 0 2172 (string-cursor->index EMPTY 2173 (string-index-right EMPTY char?))) 2174 (fail 'string-index-right)) 2175 2176(OR (= 6 2177 (string-cursor->index ABCDEF 2178 (string-index-right ABCDEF char?))) 2179 (fail 'string-index-right)) 2180 2181(OR (= 6 2182 (string-cursor->index ABCDEF 2183 (string-index-right ABCDEF 2184 (lambda (c) (char>? c #\d))))) 2185 (fail 'string-index-right)) 2186 2187(OR (= 0 2188 (string-cursor->index ABCDEF 2189 (string-index-right ABCDEF char-whitespace?))) 2190 (fail 'string-index-right)) 2191 2192(OR (= 0 2193 (string-cursor->index EMPTY (string-skip EMPTY string?))) 2194 (fail 'string-skip)) 2195 2196(OR (= 0 2197 (string-cursor->index ABCDEF 2198 (string-skip ABCDEF string?))) 2199 (fail 'string-skip)) 2200 2201(OR (= 4 2202 (string-cursor->index ABCDEF-ASCII 2203 (string-skip ABCDEF-ASCII 2204 (lambda (c) (char<=? c #\d))))) 2205 (fail 'string-skip)) 2206 2207(OR (= 6 2208 (string-cursor->index ABCDEF 2209 (string-skip ABCDEF char?))) 2210 (fail 'string-skip)) 2211 2212(OR (= 0 2213 (string-cursor->index EMPTY (string-skip-right EMPTY string?))) 2214 (fail 'string-skip-right)) 2215 2216(OR (= 6 2217 (string-cursor->index ABCDEF 2218 (string-skip-right ABCDEF string?))) 2219 (fail 'string-skip-right)) 2220 2221(OR (= 6 2222 (string-cursor->index ABCDEF-ASCII 2223 (string-skip-right ABCDEF-ASCII 2224 (lambda (c) (char<=? c #\d))))) 2225 (fail 'string-skip-right)) 2226 2227(OR (= 0 2228 (string-cursor->index ABCDEF 2229 (string-skip-right ABCDEF char?))) 2230 (fail 'string-skip-right)) 2231 2232 2233(OR (= 2 2234 (string-cursor->index ABCDEF 2235 (string-index ABCDEF char? 2))) 2236 (fail 'string-index)) 2237 2238(OR (= 4 2239 (string-cursor->index ABCDEF-ASCII 2240 (string-index ABCDEF-ASCII 2241 (lambda (c) (char>? c #\d)) 2))) 2242 (fail 'string-index)) 2243 2244(OR (= 6 2245 (string-cursor->index ABCDEF 2246 (string-index ABCDEF char-whitespace? 2))) 2247 (fail 'string-index)) 2248 2249(OR (= 6 2250 (string-cursor->index ABCDEF 2251 (string-index-right ABCDEF char? 2))) 2252 (fail 'string-index-right)) 2253 2254(OR (= 6 2255 (string-cursor->index ABCDEF-ASCII 2256 (string-index-right ABCDEF-ASCII 2257 (lambda (c) 2258 (char>? c #\d)) 2))) 2259 (fail 'string-index-right)) 2260 2261(OR (= 2 2262 (string-cursor->index ABCDEF 2263 (string-index-right ABCDEF char-whitespace? 2))) 2264 (fail 'string-index-right)) 2265 2266(OR (= 2 2267 (string-cursor->index ABCDEF 2268 (string-skip ABCDEF string? 2))) 2269 (fail 'string-skip)) 2270 2271(OR (= 4 2272 (string-cursor->index ABCDEF-ASCII 2273 (string-skip ABCDEF-ASCII 2274 (lambda (c) 2275 (char<=? c #\d)) 2))) 2276 (fail 'string-skip)) 2277 2278(OR (= 6 2279 (string-cursor->index ABCDEF 2280 (string-skip ABCDEF char? 2))) 2281 (fail 'string-skip)) 2282 2283(OR (= 6 2284 (string-cursor->index ABCDEF 2285 (string-skip-right ABCDEF string? 2))) 2286 (fail 'string-skip-right)) 2287 2288(OR (= 6 2289 (string-cursor->index ABCDEF-ASCII 2290 (string-skip-right ABCDEF-ASCII 2291 (lambda (c) 2292 (char<=? c #\d)) 2))) 2293 (fail 'string-skip-right)) 2294 2295(OR (= 2 2296 (string-cursor->index ABCDEF 2297 (string-skip-right ABCDEF char? 2))) 2298 (fail 'string-skip-right)) 2299 2300 2301(OR (= 2 2302 (string-cursor->index ABCDEF 2303 (string-index ABCDEF char? 2 5))) 2304 (fail 'string-index)) 2305 2306(OR (= 4 2307 (string-cursor->index ABCDEF-ASCII 2308 (string-index ABCDEF-ASCII 2309 (lambda (c) (char>? c #\d)) 2 5))) 2310 (fail 'string-index)) 2311 2312(OR (= 5 2313 (string-cursor->index ABCDEF 2314 (string-index ABCDEF char-whitespace? 2 5))) 2315 (fail 'string-index)) 2316 2317(OR (= 5 2318 (string-cursor->index ABCDEF 2319 (string-index-right ABCDEF char? 2 5))) 2320 (fail 'string-index-right)) 2321 2322(OR (= 5 2323 (string-cursor->index ABCDEF-ASCII 2324 (string-index-right ABCDEF-ASCII 2325 (lambda (c) 2326 (char>? c #\d)) 2 5))) 2327 (fail 'string-index-right)) 2328 2329(OR (= 2 2330 (string-cursor->index ABCDEF 2331 (string-index-right ABCDEF 2332 char-whitespace? 2 5))) 2333 (fail 'string-index-right)) 2334 2335(OR (= 2 2336 (string-cursor->index ABCDEF 2337 (string-skip ABCDEF string? 2 5))) 2338 (fail 'string-skip)) 2339 2340(OR (= 4 2341 (string-cursor->index ABCDEF-ASCII 2342 (string-skip ABCDEF-ASCII 2343 (lambda (c) (char<=? c #\d)) 2 5))) 2344 (fail 'string-skip)) 2345 2346(OR (= 5 2347 (string-cursor->index ABCDEF 2348 (string-skip ABCDEF char? 2 5))) 2349 (fail 'string-skip)) 2350 2351(OR (= 5 2352 (string-cursor->index ABCDEF 2353 (string-skip-right ABCDEF string? 2 5))) 2354 (fail 'string-skip-right)) 2355 2356(OR (= 5 2357 (string-cursor->index ABCDEF-ASCII 2358 (string-skip-right ABCDEF-ASCII 2359 (lambda (c) 2360 (char<=? c #\d)) 2 5))) 2361 (fail 'string-skip-right)) 2362 2363(OR (= 2 2364 (string-cursor->index ABCDEF 2365 (string-skip-right ABCDEF char? 2 5))) 2366 (fail 'string-skip-right)) 2367 2368 2369(OR (eqv? 0 2370 (string-cursor->index EMPTY 2371 (string-contains EMPTY EMPTY))) 2372 (fail 'string-contains)) 2373 2374(OR (eqv? 0 2375 (string-cursor->index ABCDEFFFFOO 2376 (string-contains ABCDEFFFFOO EMPTY))) 2377 (fail 'string-contains)) 2378 2379(OR (eqv? 0 2380 (string-cursor->index ABCDEFFFFOO 2381 (string-contains ABCDEFFFFOO "a"))) 2382 (fail 'string-contains)) 2383 2384(OR (eqv? 5 2385 (string-cursor->index ABCDEFFFFOO 2386 (string-contains ABCDEFFFFOO "ff"))) 2387 (fail 'string-contains)) 2388 2389(OR (eqv? 4 2390 (string-cursor->index ABCDEFFFFOO 2391 (string-contains ABCDEFFFFOO "eff"))) 2392 (fail 'string-contains)) 2393 2394(OR (eqv? 8 2395 (string-cursor->index ABCDEFFFFOO 2396 (string-contains ABCDEFFFFOO "foo"))) 2397 (fail 'string-contains)) 2398 2399(OR (eqv? #f 2400 (string-contains ABCDEFFFFOO "efffoo")) 2401 (fail 'string-contains)) 2402 2403(OR (eqv? 0 2404 (string-cursor->index EMPTY 2405 (string-contains-right EMPTY EMPTY))) 2406 (fail 'string-contains-right)) 2407 2408(OR (eqv? 11 2409 (string-cursor->index ABCDEFFFFOO 2410 (string-contains-right ABCDEFFFFOO EMPTY))) 2411 (fail 'string-contains-right)) 2412 2413(OR (eqv? 0 2414 (string-cursor->index ABCDEFFFFOO 2415 (string-contains-right ABCDEFFFFOO "a"))) 2416 (fail 'string-contains-right)) 2417 2418(OR (eqv? 7 2419 (string-cursor->index ABCDEFFFFOO 2420 (string-contains-right ABCDEFFFFOO "ff"))) 2421 (fail 'string-contains-right)) 2422 2423(OR (eqv? 4 2424 (string-cursor->index ABCDEFFFFOO 2425 (string-contains-right ABCDEFFFFOO "eff"))) 2426 (fail 'string-contains-right)) 2427 2428(OR (eqv? 8 2429 (string-cursor->index ABCDEFFFFOO 2430 (string-contains-right ABCDEFFFFOO "foo"))) 2431 (fail 'string-contains-right)) 2432 2433(OR (eqv? #f 2434 (string-contains-right ABCDEFFFFOO 2435 "efffoo")) 2436 (fail 'string-contains-right)) 2437 2438(OR (eqv? 0 2439 (string-cursor->index EMPTY 2440 (string-contains EMPTY EMPTY 0))) 2441 (fail 'string-contains)) 2442 2443(OR (eqv? 2 2444 (string-cursor->index ABCDEFFFFOO 2445 (string-contains ABCDEFFFFOO EMPTY 2))) 2446 (fail 'string-contains)) 2447 2448(OR (eqv? #f (string-contains ABCDEFFFFOO "a" 2)) 2449 (fail 'string-contains)) 2450 2451(OR (eqv? 5 2452 (string-cursor->index ABCDEFFFFOO 2453 (string-contains ABCDEFFFFOO "ff" 2))) 2454 (fail 'string-contains)) 2455 2456(OR (eqv? 4 2457 (string-cursor->index ABCDEFFFFOO 2458 (string-contains ABCDEFFFFOO "eff" 2))) 2459 (fail 'string-contains)) 2460 2461(OR (eqv? 8 2462 (string-cursor->index ABCDEFFFFOO 2463 (string-contains ABCDEFFFFOO "foo" 2))) 2464 (fail 'string-contains)) 2465 2466(OR (eqv? #f (string-contains ABCDEFFFFOO "efffoo" 2)) 2467 (fail 'string-contains)) 2468 2469(OR (eqv? 0 2470 (string-cursor->index EMPTY 2471 (string-contains-right EMPTY EMPTY 0))) 2472 (fail 'string-contains-right)) 2473 2474(OR (eqv? 11 2475 (string-cursor->index ABCDEFFFFOO 2476 (string-contains-right ABCDEFFFFOO 2477 EMPTY 2))) 2478 (fail 'string-contains-right)) 2479 2480(OR (eqv? #f 2481 (string-contains-right ABCDEFFFFOO 2482 "a" 2)) 2483 (fail 'string-contains-right)) 2484 2485(OR (eqv? 7 2486 (string-cursor->index ABCDEFFFFOO 2487 (string-contains-right ABCDEFFFFOO 2488 "ff" 2))) 2489 (fail 'string-contains-right)) 2490 2491(OR (eqv? 4 2492 (string-cursor->index ABCDEFFFFOO 2493 (string-contains-right ABCDEFFFFOO 2494 "eff" 2))) 2495 (fail 'string-contains-right)) 2496 2497(OR (eqv? 8 2498 (string-cursor->index ABCDEFFFFOO 2499 (string-contains-right ABCDEFFFFOO 2500 "foo" 2))) 2501 (fail 'string-contains-right)) 2502 2503(OR (eqv? #f 2504 (string-contains-right ABCDEFFFFOO 2505 "efffoo" 2)) 2506 (fail 'string-contains-right)) 2507 2508 2509(OR (eqv? 0 2510 (string-cursor->index EMPTY 2511 (string-contains EMPTY EMPTY 0 0))) 2512 (fail 'string-contains)) 2513 2514(OR (eqv? 2 2515 (string-cursor->index ABCDEFFFFOO 2516 (string-contains ABCDEFFFFOO 2517 EMPTY 2 10))) 2518 (fail 'string-contains)) 2519 2520(OR (eqv? #f 2521 (string-contains ABCDEFFFFOO 2522 "a" 2 10)) 2523 (fail 'string-contains)) 2524 2525(OR (eqv? 5 2526 (string-cursor->index ABCDEFFFFOO 2527 (string-contains ABCDEFFFFOO 2528 "ff" 2 10))) 2529 (fail 'string-contains)) 2530 2531(OR (eqv? 4 2532 (string-cursor->index ABCDEFFFFOO 2533 (string-contains ABCDEFFFFOO 2534 "eff" 2 10))) 2535 (fail 'string-contains)) 2536 2537(OR (eqv? #f (string-contains ABCDEFFFFOO "foo" 2 10)) 2538 (fail 'string-contains)) 2539 2540(OR (eqv? #f (string-contains ABCDEFFFFOO "efffoo" 2 10)) 2541 (fail 'string-contains)) 2542 2543 2544(OR (eqv? 0 2545 (string-cursor->index EMPTY 2546 (string-contains-right EMPTY EMPTY 0 0))) 2547 (fail 'string-contains-right)) 2548 2549(OR (eqv? 10 2550 (string-cursor->index ABCDEFFFFOO 2551 (string-contains-right ABCDEFFFFOO 2552 EMPTY 2 10))) 2553 (fail 'string-contains-right)) 2554 2555(OR (eqv? #f 2556 (string-contains-right ABCDEFFFFOO 2557 "a" 2 10)) 2558 (fail 'string-contains-right)) 2559 2560(OR (eqv? 7 2561 (string-cursor->index ABCDEFFFFOO 2562 (string-contains-right ABCDEFFFFOO 2563 "ff" 2 10))) 2564 (fail 'string-contains-right)) 2565 2566(OR (eqv? 4 2567 (string-cursor->index ABCDEFFFFOO 2568 (string-contains-right ABCDEFFFFOO 2569 "eff" 2 10))) 2570 (fail 'string-contains-right)) 2571 2572(OR (eqv? #f 2573 (string-contains-right ABCDEFFFFOO 2574 "foo" 2 10)) 2575 (fail 'string-contains-right)) 2576 2577(OR (eqv? #f 2578 (string-contains-right ABCDEFFFFOO 2579 "efffoo" 2 10)) 2580 (fail 'string-contains-right)) 2581 2582(OR (eqv? 0 2583 (string-cursor->index EMPTY 2584 (string-contains EMPTY EMPTY 0 0 0))) 2585 (fail 'string-contains)) 2586 2587(OR (eqv? 2 2588 (string-cursor->index ABCDEFFFFOO 2589 (string-contains ABCDEFFFFOO 2590 EMPTY 2 10 0))) 2591 (fail 'string-contains)) 2592 2593(OR (eqv? 2 2594 (string-cursor->index ABCDEFFFFOO 2595 (string-contains ABCDEFFFFOO 2596 "a" 2 10 1))) 2597 (fail 'string-contains)) 2598 2599(OR (eqv? 5 2600 (string-cursor->index ABCDEFFFFOO 2601 (string-contains ABCDEFFFFOO 2602 "ff" 2 10 1))) 2603 (fail 'string-contains)) 2604 2605(OR (eqv? 5 2606 (string-cursor->index ABCDEFFFFOO 2607 (string-contains ABCDEFFFFOO 2608 "eff" 2 10 1))) 2609 (fail 'string-contains)) 2610 2611(OR (eqv? #f (string-contains ABCDEFFFFOO "foo" 2 10 1)) 2612 (fail 'string-contains)) 2613 2614(OR (eqv? #f (string-contains ABCDEFFFFOO "efffoo" 2 10 1)) 2615 (fail 'string-contains)) 2616 2617(OR (eqv? 0 2618 (string-cursor->index EMPTY 2619 (string-contains-right EMPTY EMPTY 0 0 0))) 2620 (fail 'string-contains-right)) 2621 2622(OR (eqv? 10 2623 (string-cursor->index ABCDEFFFFOO 2624 (string-contains-right ABCDEFFFFOO 2625 EMPTY 2 10 0))) 2626 (fail 'string-contains-right)) 2627 2628(OR (eqv? 10 2629 (string-cursor->index ABCDEFFFFOO 2630 (string-contains-right ABCDEFFFFOO 2631 "a" 2 10 1))) 2632 (fail 'string-contains-right)) 2633 2634(OR (eqv? 8 2635 (string-cursor->index ABCDEFFFFOO 2636 (string-contains-right ABCDEFFFFOO 2637 "ff" 2 10 1))) 2638 (fail 'string-contains-right)) 2639 2640(OR (eqv? 7 2641 (string-cursor->index ABCDEFFFFOO 2642 (string-contains-right ABCDEFFFFOO 2643 "eff" 2 10 1))) 2644 (fail 'string-contains-right)) 2645 2646(OR (eqv? #f 2647 (string-contains-right ABCDEFFFFOO 2648 "foo" 2 10 1)) 2649 (fail 'string-contains-right)) 2650 2651(OR (eqv? #f 2652 (string-contains-right ABCDEFFFFOO 2653 "efffoo" 2 10 1)) 2654 (fail 'string-contains-right)) 2655 2656(OR (eqv? 0 2657 (string-cursor->index EMPTY 2658 (string-contains EMPTY EMPTY 0 0 0 0))) 2659 (fail 'string-contains)) 2660 2661(OR (eqv? 2 2662 (string-cursor->index ABCDEFFFFOO 2663 (string-contains ABCDEFFFFOO 2664 EMPTY 2 10 0 0))) 2665 (fail 'string-contains)) 2666 2667(OR (eqv? 2 2668 (string-cursor->index ABCDEFFFFOO 2669 (string-contains ABCDEFFFFOO 2670 "a" 2 10 1 1))) 2671 (fail 'string-contains)) 2672 2673(OR (eqv? 5 2674 (string-cursor->index ABCDEFFFFOO 2675 (string-contains ABCDEFFFFOO 2676 "ff" 2 10 1 2))) 2677 (fail 'string-contains)) 2678 2679(OR (eqv? 5 2680 (string-cursor->index ABCDEFFFFOO 2681 (string-contains ABCDEFFFFOO 2682 "eff" 2 10 1 2))) 2683 (fail 'string-contains)) 2684 2685(OR (eqv? 9 2686 (string-cursor->index ABCDEFFFFOO 2687 (string-contains ABCDEFFFFOO 2688 "foo" 2 10 1 2))) 2689 (fail 'string-contains)) 2690 2691(OR (eqv? 4 2692 (string-cursor->index ABCDEFFFFOO 2693 (string-contains ABCDEFFFFOO 2694 "efffoo" 2 10 0 2))) 2695 (fail 'string-contains)) 2696 2697(OR (eqv? 0 2698 (string-cursor->index EMPTY 2699 (string-contains-right EMPTY EMPTY 0 0 0 0))) 2700 (fail 'string-contains-right)) 2701 2702(OR (eqv? 10 2703 (string-cursor->index ABCDEFFFFOO 2704 (string-contains-right ABCDEFFFFOO 2705 EMPTY 2 10 0 0))) 2706 (fail 'string-contains-right)) 2707 2708(OR (eqv? 10 2709 (string-cursor->index ABCDEFFFFOO 2710 (string-contains-right ABCDEFFFFOO 2711 "a" 2 10 1 1))) 2712 (fail 'string-contains-right)) 2713 2714(OR (eqv? 8 2715 (string-cursor->index ABCDEFFFFOO 2716 (string-contains-right ABCDEFFFFOO 2717 "ff" 2 10 1 2))) 2718 (fail 'string-contains-right)) 2719 2720(OR (eqv? 8 2721 (string-cursor->index ABCDEFFFFOO 2722 (string-contains-right ABCDEFFFFOO 2723 "eff" 2 10 1 2))) 2724 (fail 'string-contains-right)) 2725 2726(OR (eqv? 9 2727 (string-cursor->index ABCDEFFFFOO 2728 (string-contains-right ABCDEFFFFOO 2729 "foo" 2 10 1 2))) 2730 (fail 'string-contains-right)) 2731 2732(OR (eqv? 7 2733 (string-cursor->index ABCDEFFFFOO 2734 (string-contains-right ABCDEFFFFOO 2735 "efffoo" 2 10 1 3))) 2736 (fail 'string-contains-right)) 2737 2738;;----------------------------------------------------------------------- 2739(test-section "The whole string") 2740 2741(OR (string=? "" (string-reverse "")) 2742 (fail 'string-reverse)) 2743 2744(OR (string=? "fedcba" (string-reverse "abcdef")) 2745 (fail 'string-reverse)) 2746 2747(OR (string=? "" (string-reverse "" 0)) 2748 (fail 'string-reverse)) 2749 2750(OR (string=? "fedcba" (string-reverse "abcdef" 0)) 2751 (fail 'string-reverse)) 2752 2753(OR (string=? "fedc" (string-reverse "abcdef" 2)) 2754 (fail 'string-reverse)) 2755 2756(OR (string=? "" (string-reverse "" 0 0)) 2757 (fail 'string-reverse)) 2758 2759(OR (string=? "fedcba" (string-reverse "abcdef" 0 6)) 2760 (fail 'string-reverse)) 2761 2762(OR (string=? "edc" (string-reverse "abcdef" 2 5)) 2763 (fail 'string-reverse)) 2764 2765 2766(OR (string=? "" (string-concatenate '())) 2767 (fail 'string-concatenate)) 2768 2769(OR (string=? "abcdef" (string-concatenate '("" "a" "bcd" "" "ef" "" ""))) 2770 (fail 'string-concatenate)) 2771 2772(OR (string=? "" (string-concatenate-reverse '())) 2773 (fail 'string-concatenate-reverse)) 2774 2775(OR (string=? "efbcda" 2776 (string-concatenate-reverse '("" "a" "bcd" "" "ef" "" ""))) 2777 (fail 'string-concatenate-reverse)) 2778 2779(OR (string=? "huh?" (string-concatenate-reverse '() "huh?")) 2780 (fail 'string-concatenate-reverse)) 2781 2782(OR (string=? "efbcdaxy" 2783 (string-concatenate-reverse '("" "a" "bcd" "" "ef" "" "") "xy")) 2784 (fail 'string-concatenate-reverse)) 2785 2786(OR (string=? "huh" (string-concatenate-reverse '() "huh?" 3)) 2787 (fail 'string-concatenate-reverse)) 2788 2789(OR (string=? "efbcdax" 2790 (string-concatenate-reverse '("" "a" "bcd" "" "ef" "" "") "x" 1)) 2791 (fail 'string-concatenate-reverse)) 2792 2793 2794(OR (= 8 2795 (string-fold (lambda (c count) 2796 (if (char-whitespace? c) 2797 (+ count 1) 2798 count)) 2799 0 2800 " ...a couple of spaces in this one... ")) 2801 (fail 'string-fold)) 2802 2803(OR (= 7 2804 (string-fold (lambda (c count) 2805 (if (char-whitespace? c) 2806 (+ count 1) 2807 count)) 2808 0 2809 " ...a couple of spaces in this one... " 2810 1)) 2811 (fail 'string-fold)) 2812 2813(OR (= 6 2814 (string-fold (lambda (c count) 2815 (if (char-whitespace? c) 2816 (+ count 1) 2817 count)) 2818 0 2819 " ...a couple of spaces in this one... " 2820 1 2821 32)) 2822 (fail 'string-fold)) 2823 2824(OR (equal? (string->list "abcdef") 2825 (string-fold-right cons '() "abcdef")) 2826 (fail 'string-fold-right)) 2827 2828(OR (equal? (string->list "def") 2829 (string-fold-right cons '() "abcdef" 3)) 2830 (fail 'string-fold-right)) 2831 2832(OR (equal? (string->list "cde") 2833 (string-fold-right cons '() "abcdef" 2 5)) 2834 (fail 'string-fold-right)) 2835 2836(OR (string=? "aabraacaadaabraa" 2837 (let* ((s "abracadabra") 2838 (ans-len (string-fold (lambda (c sum) 2839 (+ sum (if (char=? c #\a) 2 1))) 2840 0 s)) 2841 (ans (make-string ans-len))) 2842 (string-fold (lambda (c i) 2843 (let ((i (if (char=? c #\a) 2844 (begin (string-set! ans i #\a) 2845 (+ i 1)) 2846 i))) 2847 (string-set! ans i c) 2848 (+ i 1))) 2849 0 s) 2850 ans)) 2851 (fail 'string-fold)) 2852 2853 2854(OR (equal? '(101 100 99 98 97) 2855 (let ((s "abcde") (v '())) 2856 (string-for-each-cursor 2857 (lambda (cur) 2858 (set! v (cons (char->integer (string-ref/cursor s cur)) v))) 2859 s) 2860 v)) 2861 (fail 'string-for-each-cursor)) 2862 2863(OR (string=? "cdefabcdefabcd" 2864 (string-replicate "abcdef" -4 10)) 2865 (fail 'string-replicate)) 2866 2867(OR (string=? "bcdefbcdefbcd" 2868 (string-replicate "abcdef" 90 103 1)) 2869 (fail 'string-replicate)) 2870 2871(OR (string=? "ecdecdecde" 2872 (string-replicate "abcdef" -13 -3 2 5)) 2873 (fail 'string-replicate)) 2874 2875(test* "string-replicate" "ecdecdecde" 2876 (let ([s "abcdef"]) 2877 (string-replicate s -13 -3 (string-index->cursor s 2) (string-index->cursor s 5)))) 2878 2879(OR (= 6 (string-count "abcdef" char?)) 2880 (fail 'string-count)) 2881 2882(OR (= 4 (string-count "counting whitespace, again " char-whitespace? 5)) 2883 (fail 'string-count)) 2884 2885(OR (= 3 (string-count "abcdefwxyz" 2886 (lambda (c) (odd? (char->integer c))) 2887 2 8)) 2888 (fail 'string-count)) 2889 2890 2891(OR (string=? "It's lots of fun to code it up in Scheme." 2892 (string-replace "It's easy to code it up in Scheme." 2893 "lots of fun" 2894 5 9)) 2895 (fail 'string-replace)) 2896 2897(OR (string=? "The miserable perl programmer endured daily ridicule." 2898 (string-replace "The TCL programmer endured daily ridicule." 2899 "another miserable perl drone" 2900 4 7 8 22)) 2901 (fail 'string-replace)) 2902 2903(OR (string=? "It's really easy to code it up in Scheme." 2904 (string-replace "It's easy to code it up in Scheme." 2905 "really " 2906 5 5)) 2907 (fail 'string-replace)) 2908 2909 2910(OR (equal? '() (string-split "" "")) 2911 (fail 'string-split)) 2912 2913(OR (equal? '("a" "b" "c") (string-split "abc" "")) 2914 (fail 'string-split)) 2915 2916(OR (equal? '("too" "" "much" "" "data") 2917 (string-split "too much data" " ")) 2918 (fail 'string-split)) 2919 2920(OR (equal? '("" "there" "ya" "go" "") 2921 (string-split "***there***ya***go***" "***")) 2922 (fail 'string-split)) 2923 2924(OR (equal? '() (string-split "" "" 'infix)) 2925 (fail 'string-split)) 2926 2927(OR (equal? '("a" "b" "c") (string-split "abc" "" 'infix)) 2928 (fail 'string-split)) 2929 2930(OR (equal? '("too" "" "much" "" "data") 2931 (string-split "too much data" " " 'infix)) 2932 (fail 'string-split)) 2933 2934(OR (equal? '("" "there" "ya" "go" "") 2935 (string-split "***there***ya***go***" "***" 'infix)) 2936 (fail 'string-split)) 2937 2938(OR (equal? 'error 2939 (guard (exn (else 'error)) 2940 (string-split "" "" 'strict-infix))) 2941 (fail 'string-split)) 2942 2943(OR (equal? '("a" "b" "c") (string-split "abc" "" 'strict-infix)) 2944 (fail 'string-split)) 2945 2946(OR (equal? '("too" "" "much" "" "data") 2947 (string-split "too much data" " " 'strict-infix)) 2948 (fail 'string-split)) 2949 2950(OR (equal? '("" "there" "ya" "go" "") 2951 (string-split "***there***ya***go***" "***" 'strict-infix)) 2952 (fail 'string-split)) 2953 2954(OR (equal? '() (string-split "" "" 'prefix)) 2955 (fail 'string-split)) 2956 2957(OR (equal? '("a" "b" "c") (string-split "abc" "" 'prefix)) 2958 (fail 'string-split)) 2959 2960(OR (equal? '("too" "" "much" "" "data") 2961 (string-split "too much data" " " 'prefix)) 2962 (fail 'string-split)) 2963 2964(OR (equal? '("there" "ya" "go" "") 2965 (string-split "***there***ya***go***" "***" 'prefix)) 2966 (fail 'string-split)) 2967 2968(OR (equal? '() (string-split "" "" 'suffix)) 2969 (fail 'string-split)) 2970 2971(OR (equal? '("a" "b" "c") (string-split "abc" "" 'suffix)) 2972 (fail 'string-split)) 2973 2974(OR (equal? '("too" "" "much" "" "data") 2975 (string-split "too much data" " " 'suffix)) 2976 (fail 'string-split)) 2977 2978(OR (equal? '("" "there" "ya" "go") 2979 (string-split "***there***ya***go***" "***" 'suffix)) 2980 (fail 'string-split)) 2981 2982 2983(OR (equal? '() (string-split "" "" 'infix #f)) 2984 (fail 'string-split)) 2985 2986(OR (equal? '("a" "b" "c") (string-split "abc" "" 'infix #f)) 2987 (fail 'string-split)) 2988 2989(OR (equal? '("too" "" "much" "" "data") 2990 (string-split "too much data" " " 'infix #f)) 2991 (fail 'string-split)) 2992 2993(OR (equal? '("" "there" "ya" "go" "") 2994 (string-split "***there***ya***go***" "***" 'infix #f)) 2995 (fail 'string-split)) 2996 2997(OR (equal? 'error 2998 (guard (exn (else 'error)) 2999 (string-split "" "" 'strict-infix #f))) 3000 (fail 'string-split)) 3001 3002(OR (equal? '("a" "b" "c") (string-split "abc" "" 'strict-infix #f)) 3003 (fail 'string-split)) 3004 3005(OR (equal? '("too" "" "much" "" "data") 3006 (string-split "too much data" " " 'strict-infix #f)) 3007 (fail 'string-split)) 3008 3009(OR (equal? '("" "there" "ya" "go" "") 3010 (string-split "***there***ya***go***" "***" 'strict-infix #f)) 3011 (fail 'string-split)) 3012 3013(OR (equal? '() (string-split "" "" 'prefix #f)) 3014 (fail 'string-split)) 3015 3016(OR (equal? '("a" "b" "c") (string-split "abc" "" 'prefix #f)) 3017 (fail 'string-split)) 3018 3019(OR (equal? '("too" "" "much" "" "data") 3020 (string-split "too much data" " " 'prefix #f)) 3021 (fail 'string-split)) 3022 3023(OR (equal? '("there" "ya" "go" "") 3024 (string-split "***there***ya***go***" "***" 'prefix #f)) 3025 (fail 'string-split)) 3026 3027(OR (equal? '() (string-split "" "" 'suffix #f)) 3028 (fail 'string-split)) 3029 3030(OR (equal? '("a" "b" "c") (string-split "abc" "" 'suffix #f)) 3031 (fail 'string-split)) 3032 3033(OR (equal? '("too" "" "much" "" "data") 3034 (string-split "too much data" " " 'suffix #f)) 3035 (fail 'string-split)) 3036 3037(OR (equal? '("" "there" "ya" "go") 3038 (string-split "***there***ya***go***" "***" 'suffix #f)) 3039 (fail 'string-split)) 3040 3041 3042(OR (equal? 'error 3043 (guard (exn (else 'error)) 3044 (string-split "" "" 'strict-infix 3))) 3045 (fail 'string-split)) 3046 3047(OR (equal? '("a" "b" "c") (string-split "abc" "" 'strict-infix 3)) 3048 (fail 'string-split)) 3049 3050(OR (equal? '("too" "" "much" " data") 3051 (string-split "too much data" " " 'strict-infix 3)) 3052 (fail 'string-split)) 3053 3054(OR (equal? '("" "there" "ya" "go***") 3055 (string-split "***there***ya***go***" "***" 'strict-infix 3)) 3056 (fail 'string-split)) 3057 3058(OR (equal? '() (string-split "" "" 'prefix 3)) 3059 (fail 'string-split)) 3060 3061(OR (equal? '("a" "b" "c") (string-split "abc" "" 'prefix 3)) 3062 (fail 'string-split)) 3063 3064(OR (equal? '("too" "" "much" " data") 3065 (string-split "too much data" " " 'prefix 3)) 3066 (fail 'string-split)) 3067 3068(OR (equal? '("there" "ya" "go***") 3069 (string-split "***there***ya***go***" "***" 'prefix 3)) 3070 (fail 'string-split)) 3071 3072(OR (equal? '() (string-split "" "" 'suffix 3)) 3073 (fail 'string-split)) 3074 3075(OR (equal? '("a" "b" "c") (string-split "abc" "" 'suffix 3)) 3076 (fail 'string-split)) 3077 3078(OR (equal? '("too" "" "much" " data") 3079 (string-split "too much data" " " 'suffix 3)) 3080 (fail 'string-split)) 3081 3082(OR (equal? '("" "there" "ya" "go***") 3083 (string-split "***there***ya***go***" "***" 'suffix 3)) 3084 (fail 'string-split)) 3085 3086 3087(OR (equal? 'error 3088 (guard (exn (else 'error)) 3089 (string-split "" "" 'strict-infix 3 0))) 3090 (fail 'string-split)) 3091 3092(OR (equal? '("b" "c") (string-split "abc" "" 'strict-infix 3 1)) 3093 (fail 'string-split)) 3094 3095(OR (equal? '("oo" "" "much" " data") 3096 (string-split "too much data" " " 'strict-infix 3 1)) 3097 (fail 'string-split)) 3098 3099(OR (equal? '("**there" "ya" "go" "") 3100 (string-split "***there***ya***go***" "***" 'strict-infix 3 1)) 3101 (fail 'string-split)) 3102 3103(OR (equal? '() (string-split "" "" 'prefix 3 0)) 3104 (fail 'string-split)) 3105 3106(OR (equal? '("b" "c") (string-split "abc" "" 'prefix 3 1)) 3107 (fail 'string-split)) 3108 3109(OR (equal? '("oo" "" "much" " data") 3110 (string-split "too much data" " " 'prefix 3 1)) 3111 (fail 'string-split)) 3112 3113(OR (equal? '("**there" "ya" "go" "") 3114 (string-split "***there***ya***go***" "***" 'prefix 3 1)) 3115 (fail 'string-split)) 3116 3117(OR (equal? '() (string-split "" "" 'suffix 3 0)) 3118 (fail 'string-split)) 3119 3120(OR (equal? '("b" "c") (string-split "abc" "" 'suffix 3 1)) 3121 (fail 'string-split)) 3122 3123(OR (equal? '("oo" "" "much" " data") 3124 (string-split "too much data" " " 'suffix 3 1)) 3125 (fail 'string-split)) 3126 3127(OR (equal? '("**there" "ya" "go") 3128 (string-split "***there***ya***go***" "***" 'suffix 3 1)) 3129 (fail 'string-split)) 3130 3131 3132(OR (equal? 'error 3133 (guard (exn (else 'error)) 3134 (string-split "" "" 'strict-infix 3 0 0))) 3135 (fail 'string-split)) 3136 3137(OR (equal? '("b") (string-split "abc" "" 'strict-infix 3 1 2)) 3138 (fail 'string-split)) 3139 3140(OR (equal? '("oo" "" "much" " ") 3141 (string-split "too much data" " " 'strict-infix 3 1 11)) 3142 (fail 'string-split)) 3143 3144(test* "string-split" 3145 '("oo" "" "much" " ") 3146 (let ([s "too much data"]) 3147 (string-split s " " 'strict-infix 3 3148 (string-index->cursor s 1) 3149 (string-index->cursor s 11)))) 3150 3151(OR (equal? '() (string-split "" "" 'prefix 3 0 0)) 3152 (fail 'string-split)) 3153 3154(OR (equal? '("b") (string-split "abc" "" 'prefix 3 1 2)) 3155 (fail 'string-split)) 3156 3157(OR (equal? '("oo" "" "much" " ") 3158 (string-split "too much data" " " 'prefix 3 1 11)) 3159 (fail 'string-split)) 3160 3161(OR (equal? '() (string-split "" "" 'suffix 3 0 0)) 3162 (fail 'string-split)) 3163 3164(OR (equal? '("b") (string-split "abc" "" 'suffix 3 1 2)) 3165 (fail 'string-split)) 3166 3167(OR (equal? '("oo" "" "much" " ") 3168 (string-split "too much data" " " 'suffix 3 1 11)) 3169 (fail 'string-split)) 3170 3171 3172(OR (string=? "aiueaaaoi" 3173 (string-filter (lambda (c) (memv c (string->list "aeiou"))) 3174 "What is number, that man may know it?")) 3175 (fail 'string-filter)) 3176 3177(OR (string=? "And wmn, tht sh my knw nmbr?" 3178 (string-remove (lambda (c) (memv c (string->list "aeiou"))) 3179 "And woman, that she may know number?")) 3180 (fail 'string-remove)) 3181 3182(OR (string=? "iueaaaoi" 3183 (string-filter (lambda (c) (memv c (string->list "aeiou"))) 3184 "What is number, that man may know it?" 3185 4)) 3186 (fail 'string-filter)) 3187 3188(OR (string=? "mn, tht sh my knw nmbr?" 3189 (string-remove (lambda (c) (memv c (string->list "aeiou"))) 3190 "And woman, that she may know number?" 3191 6)) 3192 (fail 'string-remove)) 3193 3194(OR (string=? "aaao" 3195 (string-filter (lambda (c) (memv c (string->list "aeiou"))) 3196 "What is number, that man may know it?" 3197 16 32)) 3198 (fail 'string-filter)) 3199 3200(OR (string=? "And woman, that sh may know" 3201 (string-remove (lambda (c) (memv c (string->list "eiu"))) 3202 "And woman, that she may know number?" 3203 0 28)) 3204 (fail 'string-remove)) 3205