Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/list/dlist-insert-remove.cfa

    rf2d05e9 r4d741e9  
    11871187////////////////////////////////////////////////////////////
    11881188//
    1189 // Section 4f
    1190 //
    1191 // Test cases of pop_first, pop_last
    1192 //
    1193 // Example of call-side user code
    1194 //
    1195 ////////////////////////////////////////////////////////////
    1196 
    1197 // These cases assume element removal at first-last is correct
    1198 
    1199 void test__pop_first__fred_mine() {
    1200 
    1201         fred f1 = {1.7};
    1202         fred f2 = {2.7};
    1203         fred f3 = {3.7};
    1204 
    1205         dlist(fred_in_mine, fred) flm;
    1206         insert_last(flm, f1);
    1207         insert_last(flm, f2);
    1208         insert_last(flm, f3);
    1209 
    1210         dlist(fred_in_yours, fred) fly;
    1211         insert_last(fly, f1);
    1212         insert_last(fly, f2);
    1213         insert_last(fly, f3);
    1214 
    1215         printMyFreddies(flm`first, flm`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1216         printYourFreddies(fly`first, fly`last, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1217 
    1218         verify(validate(fly));
    1219         verify(validate(flm));
    1220 
    1221         fred & popped = pop_first(flm);
    1222 
    1223         verify(validate(fly));
    1224         verify(validate(flm));
    1225 
    1226         printMyFreddies(flm`first, flm`last, 0);     // 2.7, 3.7;       2.7;  3.7;  3.7, 2.7      (modified)
    1227         printYourFreddies(fly`first, fly`last, 0);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
    1228 
    1229         // observe f1 is now solo in mine; in yours, it was just traversed
    1230         printMyFreddies(f1, *0p, 0);    // 1.7; 1.7; ;
    1231 
    1232         assert( &popped == & f1 );
    1233 }
    1234 
    1235 void test__pop_first__fred_yours() {
    1236 
    1237         fred f1 = {1.7};
    1238         fred f2 = {2.7};
    1239         fred f3 = {3.7};
    1240 
    1241         dlist(fred_in_mine, fred) flm;
    1242         insert_last(flm, f1);
    1243         insert_last(flm, f2);
    1244         insert_last(flm, f3);
    1245 
    1246         dlist(fred_in_yours, fred) fly;
    1247         insert_last(fly, f1);
    1248         insert_last(fly, f2);
    1249         insert_last(fly, f3);
    1250 
    1251         printMyFreddies(flm`first, flm`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1252         printYourFreddies(fly`first, fly`last, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1253 
    1254         verify(validate(fly));
    1255         verify(validate(flm));
    1256 
    1257         fred & popped = pop_first(fly);
    1258 
    1259         verify(validate(fly));
    1260         verify(validate(flm));
    1261 
    1262         printMyFreddies(flm`first, flm`last, 0);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
    1263         printYourFreddies(fly`first, fly`last, 0);   // 2.7, 3.7;       2.7;  3.7;  3.7, 2.7      (modified)
    1264 
    1265         // observe f1 is now solo in yours; in mine, it was just traversed
    1266         printYourFreddies(f1, *0p, 0);    // 1.7; 1.7; ;
    1267 
    1268         assert( &popped == &f1 );
    1269 }
    1270 
    1271 void test__pop_first__maries() {
    1272 
    1273         mary m1 = {1.7};
    1274         mary m2 = {2.7};
    1275         mary m3 = {3.7};
    1276 
    1277         dlist(mary, mary) ml;
    1278         insert_last(ml, m1);
    1279         insert_last(ml, m2);
    1280         insert_last(ml, m3);
    1281 
    1282         printMariatheotokos(ml`first, ml`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1283 
    1284         verify(validate(ml));
    1285 
    1286         mary & popped = pop_first(ml);
    1287 
    1288         verify(validate(ml));
    1289 
    1290         printMariatheotokos(ml`first, ml`last, 0);     // 2.7, 3.7;       2.7;  3.7;  3.7, 2.7      (modified)
    1291 
    1292         // observe m1 is now solo
    1293         printMariatheotokos(m1, *0p, 0);               // 1.7; 1.7; ;
    1294 
    1295         assert( &popped == &m1 );
    1296 }
    1297 
    1298 void test__pop_last__fred_mine() {
    1299 
    1300         fred f1 = {1.7};
    1301         fred f2 = {2.7};
    1302         fred f3 = {3.7};
    1303 
    1304         dlist(fred_in_mine, fred) flm;
    1305         insert_last(flm, f1);
    1306         insert_last(flm, f2);
    1307         insert_last(flm, f3);
    1308 
    1309         dlist(fred_in_yours, fred) fly;
    1310         insert_last(fly, f1);
    1311         insert_last(fly, f2);
    1312         insert_last(fly, f3);
    1313 
    1314         printMyFreddies(flm`first, flm`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1315         printYourFreddies(fly`first, fly`last, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1316 
    1317         verify(validate(fly));
    1318         verify(validate(flm));
    1319 
    1320         fred & popped = pop_last(flm);
    1321 
    1322         verify(validate(fly));
    1323         verify(validate(flm));
    1324 
    1325         printMyFreddies(flm`first, flm`last, 0);     // 1.7, 2.7;       1.7;  2.7;  2.7, 1.7      (modified)
    1326         printYourFreddies(fly`first, fly`last, 0);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
    1327 
    1328         // observe f3 is now solo in mine; in yours, it was just traversed
    1329         printMyFreddies(f3, *0p, 0);    // 3.7; 3.7; ;
    1330 
    1331         assert( &popped == & f3 );
    1332 }
    1333 
    1334 void test__pop_last__fred_yours() {
    1335 
    1336         fred f1 = {1.7};
    1337         fred f2 = {2.7};
    1338         fred f3 = {3.7};
    1339 
    1340         dlist(fred_in_mine, fred) flm;
    1341         insert_last(flm, f1);
    1342         insert_last(flm, f2);
    1343         insert_last(flm, f3);
    1344 
    1345         dlist(fred_in_yours, fred) fly;
    1346         insert_last(fly, f1);
    1347         insert_last(fly, f2);
    1348         insert_last(fly, f3);
    1349 
    1350         printMyFreddies(flm`first, flm`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1351         printYourFreddies(fly`first, fly`last, 1);   // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1352 
    1353         verify(validate(fly));
    1354         verify(validate(flm));
    1355 
    1356         fred & popped = pop_last(fly);
    1357 
    1358         verify(validate(fly));
    1359         verify(validate(flm));
    1360 
    1361         printMyFreddies(flm`first, flm`last, 0);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7 (unmodified)
    1362         printYourFreddies(fly`first, fly`last, 0);   // 1.7, 2.7;       1.7;  2.7;  2.7, 1.7      (modified)
    1363 
    1364         // observe f3 is now solo in yours; in mine, it was just traversed
    1365         printYourFreddies(f3, *0p, 0);    // 3.7; 3.7; ;
    1366 
    1367         assert( &popped == & f3 );
    1368 }
    1369 
    1370 void test__pop_last__maries() {
    1371 
    1372         mary m1 = {1.7};
    1373         mary m2 = {2.7};
    1374         mary m3 = {3.7};
    1375 
    1376         dlist(mary, mary) ml;
    1377         insert_last(ml, m1);
    1378         insert_last(ml, m2);
    1379         insert_last(ml, m3);
    1380 
    1381         printMariatheotokos(ml`first, ml`last, 1);     // 1.7, 2.7, 3.7;  1.7;  3.7;  3.7, 2.7, 1.7
    1382 
    1383         verify(validate(ml));
    1384 
    1385         mary & popped = pop_last(ml);
    1386 
    1387         verify(validate(ml));
    1388 
    1389         printMariatheotokos(ml`first, ml`last, 0);     // 1.7, 1.7;       1.7;  2.7;  2.7, 1.7      (modified)
    1390 
    1391         // observe m1 is now solo
    1392         printMariatheotokos(m3, *0p, 0);               // 3.7; 3.7; ;
    1393 
    1394         assert( &popped == &m3 );
    1395 }
    1396 
    1397 ////////////////////////////////////////////////////////////
    1398 //
    13991189// Section 5
    14001190//
     
    16321422        test__remove_of_sole__mary();
    16331423
    1634         sout | "";
    1635         sout | "~~~~~~~~~~ End removal tests on Headed List: First ~~~~~~~~~~";
    1636         sout | "";
    1637 
    1638         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1639         sout | "Test 16-i.  Modifying Freds on MINE";
    1640         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1641         test__pop_first__fred_mine();
    1642 
    1643         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1644         sout | "Test 16-ii.  Modifying Freds on YOURS";
    1645         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1646         test__pop_first__fred_yours();
    1647 
    1648         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1649         sout | "Test 16-iii.  Modifying Maries";
    1650         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1651         test__pop_first__maries();
    1652 
    1653         sout | "";
    1654         sout | "~~~~~~~~~~ End removal tests on Headed List: Last ~~~~~~~~~~";
    1655         sout | "";
    1656 
    1657         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1658         sout | "Test 17-i.  Modifying Freds on MINE";
    1659         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1660         test__pop_last__fred_mine();
    1661 
    1662         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1663         sout | "Test 17-ii.  Modifying Freds on YOURS";
    1664         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1665         test__pop_last__fred_yours();
    1666 
    1667         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1668         sout | "Test 17-iii.  Modifying Maries";
    1669         sout | "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
    1670         test__pop_last__maries();
    1671 
    16721424        return 0;
    16731425}
Note: See TracChangeset for help on using the changeset viewer.