&sectionHeader('Avelo FL Destinations from HVN (36 points)');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('001', 'Given order');
$subtotal += &runTest('002', 'Farthest algorithm');
$subtotal += &runTest('003', 'Exchange adjacent algorithm');
$subtotal = $subtotal * 36 / 3;
$total += floor($subtotal);
&sectionResults('Avelo FL Destinations from HVN (36 points)', $subtotal, 3, $checkpoint );
$testCount += 3;

&sectionHeader('Additional Inputs (20 points)');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('004', 'Given');
$subtotal += &runTest('005', 'Farthest');
$subtotal += &runTest('006', 'Exchange adjacent');
$subtotal += &runTest('007', 'Farthest with ties');
$subtotal = $subtotal * 20 / 4;
$total += floor($subtotal);
&sectionResults('Additional Inputs (20 points)', $subtotal, 4, $checkpoint );
$testCount += 4;

&sectionHeader('Error Messages (24 points)');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('008', 'No arguments');
$subtotal += &runTest('009', 'File not found');
$subtotal += &runTest('010', 'No cities');
$subtotal += &runTest('011', 'Invalid method first');
$subtotal += &runTest('012', 'Missing exchange argument');
$subtotal += &runTest('013', 'Invalid exchange argument');
$subtotal += &runTest('014', 'Empty algorithm');
$subtotal += &runTest('015', 'Empty string for exchange argument');
$subtotal = $subtotal * 24 / 8;
$total += floor($subtotal);
&sectionResults('Error Messages (24 points)', $subtotal, 8, $checkpoint );
$testCount += 8;

&sectionHeader('Valgrind (20 points; not awarded to do-nothing submissions)');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('016', 'Given order');
$subtotal += &runTest('017', 'Farthest algorithm');
$subtotal += &runTest('018', 'Exchange adjacent algorithm');
$subtotal += &runTest('019', 'No cities');
$subtotal += &runTest('020', 'Missing exchange argument');
$subtotal = $subtotal * 20 / 5;
$subtotal = $total > 20 ? $subtotal : 0;
$total += floor($subtotal);
&sectionResults('Valgrind (20 points; not awarded to do-nothing submissions)', $subtotal, 5, $checkpoint );
$testCount += 5;

&sectionHeader('Exchange any');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('021', 'Example');
$subtotal += &runTest('022', '9 cities');
$subtotal += &runTest('023', '19 cities');
$checkpoint = $total;
$total = 0;
$testCount = 0;
$total += floor($subtotal);
&sectionResults('Exchange any', $subtotal, 3, $checkpoint );
$testCount += 3;

&sectionHeader('Multiple Methods');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('024', 'All methods');
$subtotal += &runTest('025', 'All methods, Connecticut');
$subtotal += &runTest('026', 'Exchange adjacent, exchange any');
$subtotal += &runTest('027', 'Repeated methods');
$subtotal += &runTest('028', 'No methods');
$total += floor($subtotal);
&sectionResults('Multiple Methods', $subtotal, 5, $checkpoint );
$testCount += 5;

&sectionHeader('Additional Error messages');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('029', 'Missing exchange argument');
$subtotal += &runTest('030', 'Algorithm in place of exchange argument');
$subtotal += &runTest('031', 'Invalid exchange argument last');
$subtotal += &runTest('032', 'Multiple invalid methods');
$subtotal += &runTest('033', 'Multiple invalid exchange arguments');
$subtotal += &runTest('034', 'File not found and invalid algorithm');
$total += floor($subtotal);
&sectionResults('Additional Error messages', $subtotal, 6, $checkpoint );
$testCount += 6;

&sectionHeader('Large Inputs');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('035', '512 cities, farthest');
$subtotal += &runTest('036', '256 cities, exchange adjacent');
$subtotal += &runTest('037', '512 cities, exchange adjacent');
$subtotal += &runTest('038', '256 cities, exchange any');
$total += floor($subtotal);
&sectionResults('Large Inputs', $subtotal, 4, $checkpoint );
$testCount += 4;

