&sectionHeader('Basic Execution');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('001', 'One trackpoint');
$subtotal += &runTest('002', 'Two trackpoints');
$subtotal += &runTest('003', 'Alternative format');
$subtotal += &runTest('004', 'Poorly formatted');
$subtotal += &runTest('005', 'Many trackpoints');
$subtotal += &runTest('006', 'With Header');
$subtotal += &runTest('007', 'time element in header');
$subtotal += &runTest('008', 'Other attributes for trkpt');
$subtotal += &runTest('009', 'Other elements in trkpt');
$total += floor($subtotal);
&sectionResults('Basic Execution', $subtotal, 9, $checkpoint );
$testCount += 9;

&sectionHeader('Quotes');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('010', 'Single quotes around attributes');
$subtotal += &runTest('011', 'Single inside double');
$total += floor($subtotal);
&sectionResults('Quotes', $subtotal, 2, $checkpoint );
$testCount += 2;

&sectionHeader('Upper/lower/mixed case');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('012', 'Upper case for element types');
$subtotal += &runTest('013', 'Mixed case for element types');
$subtotal += &runTest('014', 'Mismatched cases in start/end tags');
$total += floor($subtotal);
&sectionResults('Upper/lower/mixed case', $subtotal, 3, $checkpoint );
$testCount += 3;

&sectionHeader('Whitespace');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('015', 'Single space after lat, before =');
$subtotal += &runTest('016', 'Single space after lat, after =');
$subtotal += &runTest('017', 'Single space after other attributes, before =');
$subtotal += &runTest('018', 'Single before end of tag');
$subtotal += &runTest('019', 'Multiple after lat, before =');
$total += floor($subtotal);
&sectionResults('Whitespace', $subtotal, 5, $checkpoint );
$testCount += 5;

&sectionHeader('Commas');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('020', 'Comma in time text');
$subtotal += &runTest('021', 'Comma in ele text');
$subtotal += &runTest('022', 'Comma in trkpt attribute');
$subtotal += &runTest('023', 'Comma in time element not in trkpt');
$total += floor($subtotal);
&sectionResults('Commas', $subtotal, 4, $checkpoint );
$testCount += 4;

&sectionHeader('Data other than in track points');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('024', 'Lat/lon attributes in ele');
$total += floor($subtotal);
&sectionResults('Data other than in track points', $subtotal, 1, $checkpoint );
$testCount += 1;

&sectionHeader('Long tokens');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('025', 'Long element type');
$subtotal += &runTest('026', 'Long attribute name');
$subtotal += &runTest('027', 'Long attribute value');
$total += floor($subtotal);
&sectionResults('Long tokens', $subtotal, 3, $checkpoint );
$testCount += 3;

&sectionHeader('Invalid Input');
$subtotal = 0;
@SOURCE = ();
@LINK = ();
$subtotal = &runTest('028', 'Missing end');
$subtotal += &runTest('029', 'Badly nested tags');
$subtotal += &runTest('030', 'Whitespace after tag start');
$subtotal += &runTest('031', 'Whitespace after /');
$subtotal += &runTest('032', 'Missing attribute equals');
$subtotal += &runTest('033', 'Missing attribute value');
$subtotal += &runTest('034', 'Missing attribute quotes');
$subtotal += &runTest('035', 'Quotes in text');
$subtotal += &runTest('036', 'EOF in element type');
$subtotal += &runTest('037', 'EOF in latitude');
$total += floor($subtotal);
&sectionResults('Invalid Input', $subtotal, 10, $checkpoint );
$testCount += 10;

