Annotation of embedaddon/php/ext/standard/tests/array/array_splice_variation3.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Test array_splice() function : usage variations - lengths and offsets
                      3: --FILE--
                      4: <?php
                      5: /* 
                      6:  * proto array array_splice(array input, int offset [, int length [, array replacement]])
                      7:  * Function is implemented in ext/standard/array.c
                      8: */ 
                      9: 
                     10: echo "*** array_splice() function : usage variations - lengths and offsets\n";
                     11: 
                     12: 
                     13: function test_splice ($offset, $length)
                     14: {
                     15:        echo "  - No replacement\n";
                     16:        $input_array=array(0,1,2,3,4,5);
                     17:        var_dump (array_splice ($input_array,$offset,$length));
                     18:        var_dump ($input_array);
                     19:     echo "  - With replacement\n";
                     20:     $input_array=array(0,1,2,3,4,5);
                     21:     var_dump (array_splice ($input_array,$offset,$length,array ("A","B","C")));
                     22:        var_dump ($input_array);
                     23: }
                     24: 
                     25: echo "absolute offset - absolute length - cut from beginning\n";
                     26: test_splice (0,2);
                     27: echo "absolute offset - absolute length - cut from middle\n";
                     28: test_splice (2,2);
                     29: echo "absolute offset - absolute length - cut from end\n";
                     30: test_splice (4,2);
                     31: echo "absolute offset - absolute length - attempt to cut past end\n";
                     32: test_splice (4,4);
                     33: echo "absolute offset - absolute length - cut everything\n";
                     34: test_splice (0,7);
                     35: echo "absolute offset - absolute length - cut nothing\n";
                     36: test_splice (3,0);
                     37: 
                     38: echo "absolute offset - relative length - cut from beginning\n";
                     39: test_splice (0,-4);
                     40: 
                     41: echo "absolute offset - relative length - cut from middle\n";
                     42: test_splice (2,-2);
                     43: 
                     44: echo "absolute offset - relative length - attempt to cut form before beginning \n";
                     45: test_splice (0,-7);
                     46: 
                     47: echo "absolute offset - relative length - cut nothing\n";
                     48: test_splice (2,-7);
                     49: 
                     50: echo "relative offset - absolute length - cut from beginning\n";
                     51: test_splice (-6,2);
                     52: 
                     53: echo "relative offset - absolute length - cut from middle\n";
                     54: test_splice (-4,2);
                     55: echo "relative offset - absolute length - cut from end\n";
                     56: test_splice (-2,2);
                     57: echo "relative offset - absolute length - attempt to cut past end\n";
                     58: test_splice (-2,4);
                     59: echo "relative offset - absolute length - cut everything\n";
                     60: test_splice (-6,6);
                     61: echo "relative offset - absolute length - cut nothing\n";
                     62: test_splice (-6,0);
                     63: 
                     64: echo "relative offset - relative length - cut from beginning\n";
                     65: test_splice (-6,-4);
                     66: 
                     67: echo "relative offset - relative length - cut from middle\n";
                     68: test_splice (-4,-2);
                     69: 
                     70: echo "relative offset - relative length - cut nothing\n";
                     71: test_splice (-4,-7);
                     72: echo "Done\n";
                     73: ?>
                     74: 
                     75: --EXPECT--
                     76: *** array_splice() function : usage variations - lengths and offsets
                     77: absolute offset - absolute length - cut from beginning
                     78:   - No replacement
                     79: array(2) {
                     80:   [0]=>
                     81:   int(0)
                     82:   [1]=>
                     83:   int(1)
                     84: }
                     85: array(4) {
                     86:   [0]=>
                     87:   int(2)
                     88:   [1]=>
                     89:   int(3)
                     90:   [2]=>
                     91:   int(4)
                     92:   [3]=>
                     93:   int(5)
                     94: }
                     95:   - With replacement
                     96: array(2) {
                     97:   [0]=>
                     98:   int(0)
                     99:   [1]=>
                    100:   int(1)
                    101: }
                    102: array(7) {
                    103:   [0]=>
                    104:   string(1) "A"
                    105:   [1]=>
                    106:   string(1) "B"
                    107:   [2]=>
                    108:   string(1) "C"
                    109:   [3]=>
                    110:   int(2)
                    111:   [4]=>
                    112:   int(3)
                    113:   [5]=>
                    114:   int(4)
                    115:   [6]=>
                    116:   int(5)
                    117: }
                    118: absolute offset - absolute length - cut from middle
                    119:   - No replacement
                    120: array(2) {
                    121:   [0]=>
                    122:   int(2)
                    123:   [1]=>
                    124:   int(3)
                    125: }
                    126: array(4) {
                    127:   [0]=>
                    128:   int(0)
                    129:   [1]=>
                    130:   int(1)
                    131:   [2]=>
                    132:   int(4)
                    133:   [3]=>
                    134:   int(5)
                    135: }
                    136:   - With replacement
                    137: array(2) {
                    138:   [0]=>
                    139:   int(2)
                    140:   [1]=>
                    141:   int(3)
                    142: }
                    143: array(7) {
                    144:   [0]=>
                    145:   int(0)
                    146:   [1]=>
                    147:   int(1)
                    148:   [2]=>
                    149:   string(1) "A"
                    150:   [3]=>
                    151:   string(1) "B"
                    152:   [4]=>
                    153:   string(1) "C"
                    154:   [5]=>
                    155:   int(4)
                    156:   [6]=>
                    157:   int(5)
                    158: }
                    159: absolute offset - absolute length - cut from end
                    160:   - No replacement
                    161: array(2) {
                    162:   [0]=>
                    163:   int(4)
                    164:   [1]=>
                    165:   int(5)
                    166: }
                    167: array(4) {
                    168:   [0]=>
                    169:   int(0)
                    170:   [1]=>
                    171:   int(1)
                    172:   [2]=>
                    173:   int(2)
                    174:   [3]=>
                    175:   int(3)
                    176: }
                    177:   - With replacement
                    178: array(2) {
                    179:   [0]=>
                    180:   int(4)
                    181:   [1]=>
                    182:   int(5)
                    183: }
                    184: array(7) {
                    185:   [0]=>
                    186:   int(0)
                    187:   [1]=>
                    188:   int(1)
                    189:   [2]=>
                    190:   int(2)
                    191:   [3]=>
                    192:   int(3)
                    193:   [4]=>
                    194:   string(1) "A"
                    195:   [5]=>
                    196:   string(1) "B"
                    197:   [6]=>
                    198:   string(1) "C"
                    199: }
                    200: absolute offset - absolute length - attempt to cut past end
                    201:   - No replacement
                    202: array(2) {
                    203:   [0]=>
                    204:   int(4)
                    205:   [1]=>
                    206:   int(5)
                    207: }
                    208: array(4) {
                    209:   [0]=>
                    210:   int(0)
                    211:   [1]=>
                    212:   int(1)
                    213:   [2]=>
                    214:   int(2)
                    215:   [3]=>
                    216:   int(3)
                    217: }
                    218:   - With replacement
                    219: array(2) {
                    220:   [0]=>
                    221:   int(4)
                    222:   [1]=>
                    223:   int(5)
                    224: }
                    225: array(7) {
                    226:   [0]=>
                    227:   int(0)
                    228:   [1]=>
                    229:   int(1)
                    230:   [2]=>
                    231:   int(2)
                    232:   [3]=>
                    233:   int(3)
                    234:   [4]=>
                    235:   string(1) "A"
                    236:   [5]=>
                    237:   string(1) "B"
                    238:   [6]=>
                    239:   string(1) "C"
                    240: }
                    241: absolute offset - absolute length - cut everything
                    242:   - No replacement
                    243: array(6) {
                    244:   [0]=>
                    245:   int(0)
                    246:   [1]=>
                    247:   int(1)
                    248:   [2]=>
                    249:   int(2)
                    250:   [3]=>
                    251:   int(3)
                    252:   [4]=>
                    253:   int(4)
                    254:   [5]=>
                    255:   int(5)
                    256: }
                    257: array(0) {
                    258: }
                    259:   - With replacement
                    260: array(6) {
                    261:   [0]=>
                    262:   int(0)
                    263:   [1]=>
                    264:   int(1)
                    265:   [2]=>
                    266:   int(2)
                    267:   [3]=>
                    268:   int(3)
                    269:   [4]=>
                    270:   int(4)
                    271:   [5]=>
                    272:   int(5)
                    273: }
                    274: array(3) {
                    275:   [0]=>
                    276:   string(1) "A"
                    277:   [1]=>
                    278:   string(1) "B"
                    279:   [2]=>
                    280:   string(1) "C"
                    281: }
                    282: absolute offset - absolute length - cut nothing
                    283:   - No replacement
                    284: array(0) {
                    285: }
                    286: array(6) {
                    287:   [0]=>
                    288:   int(0)
                    289:   [1]=>
                    290:   int(1)
                    291:   [2]=>
                    292:   int(2)
                    293:   [3]=>
                    294:   int(3)
                    295:   [4]=>
                    296:   int(4)
                    297:   [5]=>
                    298:   int(5)
                    299: }
                    300:   - With replacement
                    301: array(0) {
                    302: }
                    303: array(9) {
                    304:   [0]=>
                    305:   int(0)
                    306:   [1]=>
                    307:   int(1)
                    308:   [2]=>
                    309:   int(2)
                    310:   [3]=>
                    311:   string(1) "A"
                    312:   [4]=>
                    313:   string(1) "B"
                    314:   [5]=>
                    315:   string(1) "C"
                    316:   [6]=>
                    317:   int(3)
                    318:   [7]=>
                    319:   int(4)
                    320:   [8]=>
                    321:   int(5)
                    322: }
                    323: absolute offset - relative length - cut from beginning
                    324:   - No replacement
                    325: array(2) {
                    326:   [0]=>
                    327:   int(0)
                    328:   [1]=>
                    329:   int(1)
                    330: }
                    331: array(4) {
                    332:   [0]=>
                    333:   int(2)
                    334:   [1]=>
                    335:   int(3)
                    336:   [2]=>
                    337:   int(4)
                    338:   [3]=>
                    339:   int(5)
                    340: }
                    341:   - With replacement
                    342: array(2) {
                    343:   [0]=>
                    344:   int(0)
                    345:   [1]=>
                    346:   int(1)
                    347: }
                    348: array(7) {
                    349:   [0]=>
                    350:   string(1) "A"
                    351:   [1]=>
                    352:   string(1) "B"
                    353:   [2]=>
                    354:   string(1) "C"
                    355:   [3]=>
                    356:   int(2)
                    357:   [4]=>
                    358:   int(3)
                    359:   [5]=>
                    360:   int(4)
                    361:   [6]=>
                    362:   int(5)
                    363: }
                    364: absolute offset - relative length - cut from middle
                    365:   - No replacement
                    366: array(2) {
                    367:   [0]=>
                    368:   int(2)
                    369:   [1]=>
                    370:   int(3)
                    371: }
                    372: array(4) {
                    373:   [0]=>
                    374:   int(0)
                    375:   [1]=>
                    376:   int(1)
                    377:   [2]=>
                    378:   int(4)
                    379:   [3]=>
                    380:   int(5)
                    381: }
                    382:   - With replacement
                    383: array(2) {
                    384:   [0]=>
                    385:   int(2)
                    386:   [1]=>
                    387:   int(3)
                    388: }
                    389: array(7) {
                    390:   [0]=>
                    391:   int(0)
                    392:   [1]=>
                    393:   int(1)
                    394:   [2]=>
                    395:   string(1) "A"
                    396:   [3]=>
                    397:   string(1) "B"
                    398:   [4]=>
                    399:   string(1) "C"
                    400:   [5]=>
                    401:   int(4)
                    402:   [6]=>
                    403:   int(5)
                    404: }
                    405: absolute offset - relative length - attempt to cut form before beginning 
                    406:   - No replacement
                    407: array(0) {
                    408: }
                    409: array(6) {
                    410:   [0]=>
                    411:   int(0)
                    412:   [1]=>
                    413:   int(1)
                    414:   [2]=>
                    415:   int(2)
                    416:   [3]=>
                    417:   int(3)
                    418:   [4]=>
                    419:   int(4)
                    420:   [5]=>
                    421:   int(5)
                    422: }
                    423:   - With replacement
                    424: array(0) {
                    425: }
                    426: array(9) {
                    427:   [0]=>
                    428:   string(1) "A"
                    429:   [1]=>
                    430:   string(1) "B"
                    431:   [2]=>
                    432:   string(1) "C"
                    433:   [3]=>
                    434:   int(0)
                    435:   [4]=>
                    436:   int(1)
                    437:   [5]=>
                    438:   int(2)
                    439:   [6]=>
                    440:   int(3)
                    441:   [7]=>
                    442:   int(4)
                    443:   [8]=>
                    444:   int(5)
                    445: }
                    446: absolute offset - relative length - cut nothing
                    447:   - No replacement
                    448: array(0) {
                    449: }
                    450: array(6) {
                    451:   [0]=>
                    452:   int(0)
                    453:   [1]=>
                    454:   int(1)
                    455:   [2]=>
                    456:   int(2)
                    457:   [3]=>
                    458:   int(3)
                    459:   [4]=>
                    460:   int(4)
                    461:   [5]=>
                    462:   int(5)
                    463: }
                    464:   - With replacement
                    465: array(0) {
                    466: }
                    467: array(9) {
                    468:   [0]=>
                    469:   int(0)
                    470:   [1]=>
                    471:   int(1)
                    472:   [2]=>
                    473:   string(1) "A"
                    474:   [3]=>
                    475:   string(1) "B"
                    476:   [4]=>
                    477:   string(1) "C"
                    478:   [5]=>
                    479:   int(2)
                    480:   [6]=>
                    481:   int(3)
                    482:   [7]=>
                    483:   int(4)
                    484:   [8]=>
                    485:   int(5)
                    486: }
                    487: relative offset - absolute length - cut from beginning
                    488:   - No replacement
                    489: array(2) {
                    490:   [0]=>
                    491:   int(0)
                    492:   [1]=>
                    493:   int(1)
                    494: }
                    495: array(4) {
                    496:   [0]=>
                    497:   int(2)
                    498:   [1]=>
                    499:   int(3)
                    500:   [2]=>
                    501:   int(4)
                    502:   [3]=>
                    503:   int(5)
                    504: }
                    505:   - With replacement
                    506: array(2) {
                    507:   [0]=>
                    508:   int(0)
                    509:   [1]=>
                    510:   int(1)
                    511: }
                    512: array(7) {
                    513:   [0]=>
                    514:   string(1) "A"
                    515:   [1]=>
                    516:   string(1) "B"
                    517:   [2]=>
                    518:   string(1) "C"
                    519:   [3]=>
                    520:   int(2)
                    521:   [4]=>
                    522:   int(3)
                    523:   [5]=>
                    524:   int(4)
                    525:   [6]=>
                    526:   int(5)
                    527: }
                    528: relative offset - absolute length - cut from middle
                    529:   - No replacement
                    530: array(2) {
                    531:   [0]=>
                    532:   int(2)
                    533:   [1]=>
                    534:   int(3)
                    535: }
                    536: array(4) {
                    537:   [0]=>
                    538:   int(0)
                    539:   [1]=>
                    540:   int(1)
                    541:   [2]=>
                    542:   int(4)
                    543:   [3]=>
                    544:   int(5)
                    545: }
                    546:   - With replacement
                    547: array(2) {
                    548:   [0]=>
                    549:   int(2)
                    550:   [1]=>
                    551:   int(3)
                    552: }
                    553: array(7) {
                    554:   [0]=>
                    555:   int(0)
                    556:   [1]=>
                    557:   int(1)
                    558:   [2]=>
                    559:   string(1) "A"
                    560:   [3]=>
                    561:   string(1) "B"
                    562:   [4]=>
                    563:   string(1) "C"
                    564:   [5]=>
                    565:   int(4)
                    566:   [6]=>
                    567:   int(5)
                    568: }
                    569: relative offset - absolute length - cut from end
                    570:   - No replacement
                    571: array(2) {
                    572:   [0]=>
                    573:   int(4)
                    574:   [1]=>
                    575:   int(5)
                    576: }
                    577: array(4) {
                    578:   [0]=>
                    579:   int(0)
                    580:   [1]=>
                    581:   int(1)
                    582:   [2]=>
                    583:   int(2)
                    584:   [3]=>
                    585:   int(3)
                    586: }
                    587:   - With replacement
                    588: array(2) {
                    589:   [0]=>
                    590:   int(4)
                    591:   [1]=>
                    592:   int(5)
                    593: }
                    594: array(7) {
                    595:   [0]=>
                    596:   int(0)
                    597:   [1]=>
                    598:   int(1)
                    599:   [2]=>
                    600:   int(2)
                    601:   [3]=>
                    602:   int(3)
                    603:   [4]=>
                    604:   string(1) "A"
                    605:   [5]=>
                    606:   string(1) "B"
                    607:   [6]=>
                    608:   string(1) "C"
                    609: }
                    610: relative offset - absolute length - attempt to cut past end
                    611:   - No replacement
                    612: array(2) {
                    613:   [0]=>
                    614:   int(4)
                    615:   [1]=>
                    616:   int(5)
                    617: }
                    618: array(4) {
                    619:   [0]=>
                    620:   int(0)
                    621:   [1]=>
                    622:   int(1)
                    623:   [2]=>
                    624:   int(2)
                    625:   [3]=>
                    626:   int(3)
                    627: }
                    628:   - With replacement
                    629: array(2) {
                    630:   [0]=>
                    631:   int(4)
                    632:   [1]=>
                    633:   int(5)
                    634: }
                    635: array(7) {
                    636:   [0]=>
                    637:   int(0)
                    638:   [1]=>
                    639:   int(1)
                    640:   [2]=>
                    641:   int(2)
                    642:   [3]=>
                    643:   int(3)
                    644:   [4]=>
                    645:   string(1) "A"
                    646:   [5]=>
                    647:   string(1) "B"
                    648:   [6]=>
                    649:   string(1) "C"
                    650: }
                    651: relative offset - absolute length - cut everything
                    652:   - No replacement
                    653: array(6) {
                    654:   [0]=>
                    655:   int(0)
                    656:   [1]=>
                    657:   int(1)
                    658:   [2]=>
                    659:   int(2)
                    660:   [3]=>
                    661:   int(3)
                    662:   [4]=>
                    663:   int(4)
                    664:   [5]=>
                    665:   int(5)
                    666: }
                    667: array(0) {
                    668: }
                    669:   - With replacement
                    670: array(6) {
                    671:   [0]=>
                    672:   int(0)
                    673:   [1]=>
                    674:   int(1)
                    675:   [2]=>
                    676:   int(2)
                    677:   [3]=>
                    678:   int(3)
                    679:   [4]=>
                    680:   int(4)
                    681:   [5]=>
                    682:   int(5)
                    683: }
                    684: array(3) {
                    685:   [0]=>
                    686:   string(1) "A"
                    687:   [1]=>
                    688:   string(1) "B"
                    689:   [2]=>
                    690:   string(1) "C"
                    691: }
                    692: relative offset - absolute length - cut nothing
                    693:   - No replacement
                    694: array(0) {
                    695: }
                    696: array(6) {
                    697:   [0]=>
                    698:   int(0)
                    699:   [1]=>
                    700:   int(1)
                    701:   [2]=>
                    702:   int(2)
                    703:   [3]=>
                    704:   int(3)
                    705:   [4]=>
                    706:   int(4)
                    707:   [5]=>
                    708:   int(5)
                    709: }
                    710:   - With replacement
                    711: array(0) {
                    712: }
                    713: array(9) {
                    714:   [0]=>
                    715:   string(1) "A"
                    716:   [1]=>
                    717:   string(1) "B"
                    718:   [2]=>
                    719:   string(1) "C"
                    720:   [3]=>
                    721:   int(0)
                    722:   [4]=>
                    723:   int(1)
                    724:   [5]=>
                    725:   int(2)
                    726:   [6]=>
                    727:   int(3)
                    728:   [7]=>
                    729:   int(4)
                    730:   [8]=>
                    731:   int(5)
                    732: }
                    733: relative offset - relative length - cut from beginning
                    734:   - No replacement
                    735: array(2) {
                    736:   [0]=>
                    737:   int(0)
                    738:   [1]=>
                    739:   int(1)
                    740: }
                    741: array(4) {
                    742:   [0]=>
                    743:   int(2)
                    744:   [1]=>
                    745:   int(3)
                    746:   [2]=>
                    747:   int(4)
                    748:   [3]=>
                    749:   int(5)
                    750: }
                    751:   - With replacement
                    752: array(2) {
                    753:   [0]=>
                    754:   int(0)
                    755:   [1]=>
                    756:   int(1)
                    757: }
                    758: array(7) {
                    759:   [0]=>
                    760:   string(1) "A"
                    761:   [1]=>
                    762:   string(1) "B"
                    763:   [2]=>
                    764:   string(1) "C"
                    765:   [3]=>
                    766:   int(2)
                    767:   [4]=>
                    768:   int(3)
                    769:   [5]=>
                    770:   int(4)
                    771:   [6]=>
                    772:   int(5)
                    773: }
                    774: relative offset - relative length - cut from middle
                    775:   - No replacement
                    776: array(2) {
                    777:   [0]=>
                    778:   int(2)
                    779:   [1]=>
                    780:   int(3)
                    781: }
                    782: array(4) {
                    783:   [0]=>
                    784:   int(0)
                    785:   [1]=>
                    786:   int(1)
                    787:   [2]=>
                    788:   int(4)
                    789:   [3]=>
                    790:   int(5)
                    791: }
                    792:   - With replacement
                    793: array(2) {
                    794:   [0]=>
                    795:   int(2)
                    796:   [1]=>
                    797:   int(3)
                    798: }
                    799: array(7) {
                    800:   [0]=>
                    801:   int(0)
                    802:   [1]=>
                    803:   int(1)
                    804:   [2]=>
                    805:   string(1) "A"
                    806:   [3]=>
                    807:   string(1) "B"
                    808:   [4]=>
                    809:   string(1) "C"
                    810:   [5]=>
                    811:   int(4)
                    812:   [6]=>
                    813:   int(5)
                    814: }
                    815: relative offset - relative length - cut nothing
                    816:   - No replacement
                    817: array(0) {
                    818: }
                    819: array(6) {
                    820:   [0]=>
                    821:   int(0)
                    822:   [1]=>
                    823:   int(1)
                    824:   [2]=>
                    825:   int(2)
                    826:   [3]=>
                    827:   int(3)
                    828:   [4]=>
                    829:   int(4)
                    830:   [5]=>
                    831:   int(5)
                    832: }
                    833:   - With replacement
                    834: array(0) {
                    835: }
                    836: array(9) {
                    837:   [0]=>
                    838:   int(0)
                    839:   [1]=>
                    840:   int(1)
                    841:   [2]=>
                    842:   string(1) "A"
                    843:   [3]=>
                    844:   string(1) "B"
                    845:   [4]=>
                    846:   string(1) "C"
                    847:   [5]=>
                    848:   int(2)
                    849:   [6]=>
                    850:   int(3)
                    851:   [7]=>
                    852:   int(4)
                    853:   [8]=>
                    854:   int(5)
                    855: }
                    856: Done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>