Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/collections/sequence.cfa

    r62a7cc0 rde2f969  
    1414                i = p;
    1515        }
     16
    1617        Fred *& Back( Fred * n ) {
    1718                return (Fred *)Back( (Seqable *)n );
    1819        }
     20
    1921        Fred *& Next( Fred * n ) {
    2022                return (Fred *)Next( (Colable *)n );
     
    3638        }
    3739
    38         sout | head( fred ).i | tail( fred ).i | nl;
    39 
    4040        for ( SeqIter(Fred) iter = { fred }; iter >> f; ) {
    4141                sout | f.i | ' ';
     
    5555                addTail( fred, *new( 2 * i + 1 ) );
    5656        }
    57 
    58         Fred * head = new( -1 ), tail = { -2 };
    59         addHead( fred, *head );
    60         addTail( fred, tail );
    61 
    62         sout | head( fred ).i | succ( fred, head )->i | tail( fred ).i | nl;
    63         for ( over( fredIter, fred ); fredIter >> f; ) {
    64                 sout | f.i | ' ';
    65         }
    66         sout | nl;
    67 
    68         remove( fred, *head );
    69         remove( fred, tail );
    70         delete( head );
    71         delete( &dropTail( fred ) );
    72 
    73         for ( over( fredIter, fred ); fredIter >> f; ) {
    74                 sout | f.i | ' ';
    75         }
    76         sout | nl;
    77 
    78         for ( i; 5 ) {
     57        for ( over( fredIter, fred ); fredIter >> f; ) {
     58                sout | f.i | ' ';
     59        }
     60        sout | nl;
     61
     62        for ( i; 9 ) {
    7963                delete( &dropTail( fred ) );
    8064        }
     
    8569
    8670        for ( over( fredIter, fred ); fredIter >> f; ) {
    87                 delete( &remove( fred, f ) );
    88         }
    89         for ( over( fredIter, fred ); fredIter >> f; ) {
    90                 sout | f.i | ' ';
    91         }
    92         sout | "empty" | nl;
    93 
    94         Fred & middle;
    95         for ( i; 10 ) {
    96                 addHead( fred, *new( i ) );                                             // reverse oder
    97                 if ( i == 5 ) {
    98                         &middle = &head( fred );
     71                delete( &f );
     72        }
     73
     74        Sequence(Fred) fred0;
     75        Fred * middle;
     76        for ( i; 10 ) {
     77                if( i == 5) {
     78                        middle = new( i );
     79                        addHead( fred0, *middle );
     80                        continue;
    9981                }
    100         }
    101         for ( SeqIterRev(Fred) iter = { fred }; iter >> f; ) {
    102                 sout | f.i | ' ';
    103         }
    104         sout | nl;
    105 
    106         head = new( -1 );
    107         insertBef( fred, *head, head( fred ) );
    108         insertAft( fred, *head, tail );
    109 
    110         sout | head( fred ).i | succ( fred, head )->i | tail( fred ).i | nl;
    111         for ( over( fredIter, fred ); fredIter >> f; ) {
    112                 sout | f.i | ' ';
    113         }
    114         sout | nl;
    115 
    116         remove( fred, *head );
    117         remove( fred, tail );
    118         delete( head );
    119         delete( &dropTail( fred ) );
    120 
    121         for ( over( fredIter, fred ); fredIter >> f; ) {
     82                addHead( fred0, *new( i ) );
     83        }
     84
     85        for ( SeqIterRev(Fred) iter = { fred0 }; iter >> f; ) {
     86                sout | f.i | ' ';
     87        }
     88        sout | nl;
     89
     90        Fred * front = new( -1 );
     91        insertBef( fred0, *front, tail(fred0));
     92        insertAft( fred0, *front, *new( -2 ) );
     93        remove( fred0, *front );
     94        delete( front );
     95
     96        sout | head(fred0).i | nl;
     97        Fred & end = dropTail( fred );
     98        delete( &end );
     99
     100        for ( over( fredIter, fred0 ); fredIter >> f; ) {
    122101                sout | f.i | ' ';
    123102        }
     
    126105        Sequence(Fred) fred2;
    127106
    128         split( fred2, fred, middle );
    129 
    130         for ( over( fredIter, fred ); fredIter >> f; ) {
     107        split( fred2, fred0, *middle);
     108
     109        for ( over( fredIter, fred0 ); fredIter >> f; ) {
    131110                sout | f.i | ' ';
    132111        }
     
    138117        sout | nl;
    139118
    140         transfer( fred, fred2 );
    141 
    142         for ( over( fredIter, fred ); fredIter >> f; ) {
    143                 sout | f.i | ' ';
    144         }
    145         sout | nl;
    146 
    147         for ( over( fredIter, fred ); fredIter >> f; ) {
     119        transfer( fred0, fred2);
     120
     121        for ( over( fredIter, fred0 ); fredIter >> f; ) {
     122                sout | f.i | ' ';
     123        }
     124        sout | nl;
     125
     126        for ( over( fredIter, fred0 ); fredIter >> f; ) {
    148127                delete( &f );
    149128        }
     
    160139                j = p;
    161140        }
     141
    162142        Mary *& Back( Mary * n ) {
    163143                return (Mary *)Back( (Fred *)n );
    164144        }
     145
    165146        Mary *& Next( Mary * n ) {
    166147                return (Mary *)Next( (Fred *)n );
     
    168149
    169150        Sequence(Mary) mary;
     151        Sequence(Mary) baz;
    170152        SeqIter(Mary) maryIter = { mary };
    171153        Mary & m;
     
    178160        for ( i; 10 ) {
    179161                add( mary, *new( 2 * i ) );
    180         }
    181 
    182         sout | head( mary ).i | tail( mary ).i | nl;
     162                add( baz, *new( 2 * i ) );
     163        }
    183164
    184165        for ( SeqIter(Mary) iter = { mary }; iter >> m; ) {
     
    199180                addTail( mary, *new( 2 * i + 1 ) );
    200181        }
    201 
    202         Mary * head = new( -1 ), tail = { -1 };
    203         addHead( mary, *head );
    204         addTail( mary, tail );
    205         sout | head( mary ).i | succ( mary, head )->i | tail( mary ).i | nl;
    206         remove( mary, *head );
    207         remove( mary, tail );
    208         delete( (Mary *)head );
    209         delete( &dropTail( mary ) );
    210 
    211         for ( over( maryIter, mary ); maryIter >> m; ) {
    212                 sout | m.i | m.j | ' ';
    213         }
    214         sout | nl;
    215 
    216         for ( over( maryIter, mary ); maryIter >> m; ) {
    217                 delete( &remove( mary, m ) );
    218         }
    219 
    220         Mary & middle;
    221         for ( i; 10 ) {
    222                 add( mary, *new( i ) );
    223                 if ( i == 4 ) {
    224                         &middle = &tail( mary );
    225                 }
    226         }
    227         for ( SeqIter(Mary) iter = { mary }; iter >> m; ) {
    228                 sout | m.i | m.j | ' ';
    229         }
    230         sout | nl;
    231 
    232         Sequence(Mary) mary2;
    233 
    234         split( mary2, mary, middle );
    235 
    236         for ( over( maryIter, mary ); maryIter >> m; ) {
    237                 sout | m.i | m.j | ' ';
    238         }
    239         sout | nl;
    240         for ( over( maryIter, mary2 ); maryIter >> m; ) {
    241                 sout | m.i | m.j | ' ';
    242         }
    243         sout | nl;
    244 
    245         transfer( mary, mary2 );
    246 
    247         for ( over( maryIter, mary ); maryIter >> m; ) {
    248                 sout | m.i | m.j | ' ';
    249         }
    250         sout | nl;
     182        for ( over( maryIter, mary ); maryIter >> m; ) {
     183                sout | m.i | m.j | ' ';
     184        }
     185        sout | nl;
     186
     187        for ( i; 9 ) {
     188                delete( &dropTail( mary ) );
     189        }
     190        for ( over( maryIter, mary ); maryIter >> m; ) {
     191                sout | m.i | m.j | ' ';
     192        }
     193        sout | nl;
     194
     195        transfer( mary, baz );
     196
     197        for ( over( maryIter, baz ); maryIter >> m; ) {
     198                sout | m.i | m.j | ' ';
     199        }
     200        sout | "empty" | nl;
     201
     202        for ( over( maryIter, mary ); maryIter >> m; ) {
     203                sout | m.i | m.j | ' ';
     204        }
     205        sout | nl;
     206
    251207        for ( over( maryIter, mary ); maryIter >> m; ) {
    252208                delete( &m );
Note: See TracChangeset for help on using the changeset viewer.