Ignore:
Timestamp:
Dec 27, 2020, 5:59:17 PM (3 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
1e6f632f
Parents:
a3a76ea
Message:

code review extended collection testing and add a few more tests

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/collections/sequence.cfa

    ra3a76ea r62a7cc0  
    1414                i = p;
    1515        }
    16 
    1716        Fred *& Back( Fred * n ) {
    1817                return (Fred *)Back( (Seqable *)n );
    1918        }
    20 
    2119        Fred *& Next( Fred * n ) {
    2220                return (Fred *)Next( (Colable *)n );
     
    3836        }
    3937
     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         for ( over( fredIter, fred ); fredIter >> f; ) {
    58                 sout | f.i | ' ';
    59         }
    60         sout | nl;
    61 
    62         for ( i; 9 ) {
     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 ) {
    6379                delete( &dropTail( fred ) );
    6480        }
     
    6985
    7086        for ( over( fredIter, fred ); fredIter >> f; ) {
    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;
     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 );
    8199                }
    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; ) {
     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; ) {
    101122                sout | f.i | ' ';
    102123        }
     
    105126        Sequence(Fred) fred2;
    106127
    107         split( fred2, fred0, *middle);
    108 
    109         for ( over( fredIter, fred0 ); fredIter >> f; ) {
     128        split( fred2, fred, middle );
     129
     130        for ( over( fredIter, fred ); fredIter >> f; ) {
    110131                sout | f.i | ' ';
    111132        }
     
    117138        sout | nl;
    118139
    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; ) {
     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; ) {
    127148                delete( &f );
    128149        }
     
    139160                j = p;
    140161        }
    141 
    142162        Mary *& Back( Mary * n ) {
    143163                return (Mary *)Back( (Fred *)n );
    144164        }
    145 
    146165        Mary *& Next( Mary * n ) {
    147166                return (Mary *)Next( (Fred *)n );
     
    149168
    150169        Sequence(Mary) mary;
    151         Sequence(Mary) baz;
    152170        SeqIter(Mary) maryIter = { mary };
    153171        Mary & m;
     
    160178        for ( i; 10 ) {
    161179                add( mary, *new( 2 * i ) );
    162                 add( baz, *new( 2 * i ) );
    163         }
     180        }
     181
     182        sout | head( mary ).i | tail( mary ).i | nl;
    164183
    165184        for ( SeqIter(Mary) iter = { mary }; iter >> m; ) {
     
    180199                addTail( mary, *new( 2 * i + 1 ) );
    181200        }
    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 
     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;
    207251        for ( over( maryIter, mary ); maryIter >> m; ) {
    208252                delete( &m );
Note: See TracChangeset for help on using the changeset viewer.