Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/collections/queue.cfa

    r62a7cc0 rde2f969  
    3333        }
    3434
    35         sout | head( fred ).i | tail( fred ).i | nl;
     35        sout | head(fred).i | nl;
     36        sout | tail(fred).i | nl;
    3637
    3738        for ( QueueIter(Fred) iter = { fred }; iter >> f; ) {
     
    5354        }
    5455
    55         Fred * head = new( -1 ), tail = { -2 };
    56         addHead( fred, *head );
    57         addTail( fred, tail );
     56        Fred * front = new( -1 );
     57        addHead( fred, *front );
     58        sout | succ( fred, front )->i | nl;
     59        remove( fred, *front );
     60        delete( front );
    5861
    59         sout | head( fred ).i | succ( fred, head )->i | tail( fred ).i | nl;
    60         for ( over( fredIter, fred ); fredIter >> f; ) {
    61                 sout | f.i | ' ';
    62         }
    63         sout | nl;
    64 
    65         remove( fred, *head );
    66         remove( fred, tail );
    67         delete( head );
    68         delete( &dropTail( fred ) );
     62        Fred & end = dropTail( fred );
     63        delete( &end );
    6964
    7065        for ( over( fredIter, fred ); fredIter >> f; ) {
     
    7368        sout | nl;
    7469
    75         for ( i; 5 ) {
    76                 delete( &dropTail( fred ) );
     70        for ( over( fredIter, fred ); fredIter >> f; ) {
     71                delete( &f );
    7772        }
    78         for ( over( fredIter, fred ); fredIter >> f; ) {
    79                 sout | f.i | ' ';
     73
     74        Queue(Fred) fred0;
     75        Fred * middle;
     76        for ( i; 10 ) {
     77                if( i == 5) {
     78                        middle = new( i );
     79                        add( fred0, *middle );
     80                        continue;
     81                }
     82                add( fred0, *new( i ) );
    8083        }
    81         sout | nl;
    8284
    83         for ( over( fredIter, fred ); fredIter >> f; ) {
    84                 delete( &remove( fred, f ) );
    85         }
    86         for ( over( fredIter, fred ); fredIter >> f; ) {
    87                 sout | f.i | ' ';
    88         }
    89         sout | "empty" | nl;
    90 
    91         Fred & middle;
    92         for ( i; 10 ) {
    93                 add( fred, *new( i ) );
    94                 if ( i == 4 ) {
    95                         &middle = &tail( fred );
    96                 }
    97         }
    98         for ( QueueIter(Fred) iter = { fred }; iter >> f; ) {
     85        for ( QueueIter(Fred) iter = { fred0 }; iter >> f; ) {
    9986                sout | f.i | ' ';
    10087        }
     
    10390        Queue(Fred) fred2;
    10491
    105         split( fred2, fred, middle );
     92        split( fred2, fred0, *middle);
    10693
    107         for ( over( fredIter, fred ); fredIter >> f; ) {
     94        for ( over( fredIter, fred0 ); fredIter >> f; ) {
    10895                sout | f.i | ' ';
    10996        }
     
    115102        sout | nl;
    116103
    117         transfer( fred, fred2 );
     104        transfer( fred0, fred2);
    118105
    119         for ( over( fredIter, fred ); fredIter >> f; ) {
     106        for ( over( fredIter, fred0 ); fredIter >> f; ) {
    120107                sout | f.i | ' ';
    121108        }
    122109        sout | nl;
    123110
    124         for ( over( fredIter, fred ); fredIter >> f; ) {
     111        for ( over( fredIter, fred0 ); fredIter >> f; ) {
    125112                delete( &f );
    126113        }
     
    135122        void ?{}( Mary & mary, int p ) with( mary ) {
    136123                ((Fred &)mary){ p };
    137                 j = p;
     124                j = i = p;
    138125        }
     126
    139127        Mary *& Next( Mary * n ) {
    140128                return (Mary *)Next( (Fred *)n );
     
    153141                add( mary, *new( 2 * i ) );
    154142        }
    155 
    156         sout | head( mary ).i | tail( mary ).i | nl;
    157143
    158144        for ( QueueIter(Mary) iter = { mary }; iter >> m; ) {
     
    173159                add( mary, *new( 2 * i + 1 ) );
    174160        }
    175 
    176         Mary * head = new( -1 ), tail = { -1 };
    177         addHead( mary, *head );
    178         addTail( mary, tail );
    179         sout | head( mary ).i | succ( mary, head )->i | tail( mary ).i | nl;
    180         remove( mary, *head );
    181         remove( mary, tail );
    182         delete( (Mary *)head );
    183         delete( &dropTail( mary ) );
    184 
    185161        for ( over( maryIter, mary ); maryIter >> m; ) {
    186162                sout | m.i | m.j | ' ';
     
    189165
    190166        for ( over( maryIter, mary ); maryIter >> m; ) {
    191                 delete( &remove( mary, m ) );
    192         }
    193 
    194         Mary & middle;
    195         for ( i; 10 ) {
    196                 add( mary, *new( i ) );
    197                 if ( i == 4 ) {
    198                         &middle = &tail( mary );
    199                 }
    200         }
    201         for ( QueueIter(Mary) iter = { mary }; iter >> m; ) {
    202                 sout | m.i | m.j | ' ';
    203         }
    204         sout | nl;
    205 
    206         Queue(Mary) mary2;
    207 
    208         split( mary2, mary, middle );
    209 
    210         for ( over( maryIter, mary ); maryIter >> m; ) {
    211                 sout | m.i | m.j | ' ';
    212         }
    213         sout | nl;
    214         for ( over( maryIter, mary2 ); maryIter >> m; ) {
    215                 sout | m.i | m.j | ' ';
    216         }
    217         sout | nl;
    218 
    219         transfer( mary, mary2 );
    220 
    221         for ( over( maryIter, mary ); maryIter >> m; ) {
    222                 sout | m.i | m.j | ' ';
    223         }
    224         sout | nl;
    225         for ( over( maryIter, mary ); maryIter >> m; ) {
    226167                delete( &m );
    227168        }
Note: See TracChangeset for help on using the changeset viewer.