\begin{longtable}{|X|X|X|}

\caption{Basic test suite} \\

\multicolumn{1}{c}{\bf Test case ID / file name} & \multicolumn{1}{c}{\bf Applies to} & \multicolumn{1}{c}{\bf Description} \endfirsthead \hline

\label{Level1Table}
1-basic-1ofM.sql &
{\em Voting system} &
Small 1-of-M contest, no write-ins, no rejected ballots. \\ \hline

1-basic-AbsenteeByCategory.sql &
{\em Absentee voting}\footnotemark[2] &
Small 1-of-M contest with absentee ballots via categories. \\ \hline

1-basic-AbsenteeByCategory-CrossPartyEndorsement.sql & 
{\em Absentee voting}\footnotemark[2] $\wedge$ {\em Cross-party endorsement} &
Small straight party + 1-of-M contest with cross-party endorsement,
three absentee ballots via categories. \\ \hline

1-basic-AbsenteeByCategory-Cumulative.sql &
{\em Absentee voting}\footnotemark[2] $\wedge$ {\em Cumulative voting} &
Small Cumulative contest, N=3, no write-ins, no rejected ballots, three
absentee ballots via categories. \\ \hline

1-basic-AbsenteeByCategory-NofM.sql &
{\em Absentee voting}\footnotemark[2] $\wedge$ {\em N of M voting} &
Small 2-of-M contest, no write-ins, no rejected ballots, three 
absentee ballots via categories. \\ \hline

1-basic-AbsenteeByCategory-Provisional.sql &
{\em Absentee voting}\footnotemark[2] $\wedge$ {\em Provisional / challenged ballots} &
Small 1-of-M contest with absentee ballots via categories,
accepted and rejected provisionals.
\\ \hline

1-basic-AbsenteeByCategory-RankedOrder.sql &
{\em Absentee voting}\footnotemark[2] $\wedge$ {\em Ranked order voting} &
Small ranked order contest with absentee ballots via categories.
\\ \hline

1-basic-AbsenteeByCategory-StraightParty.sql &
{\em Absentee voting}\footnotemark[2] $\wedge$ {\em Straight party voting} &
Small straight party + 1-of-M contest, absentee ballots via categories.
\\ \hline

1-basic-AbsenteeByCategory-WriteIns.sql &
{\em Absentee voting}\footnotemark[2] $\wedge$ {\em Write-ins} &
Small 1-of-M contest with absentee ballots via categories and write-ins, no
aliasing. \\ \hline

1-basic-AbsenteeBySpecialPrecinct.sql &
{\em Absentee voting} &
Small 1-of-M contest with absentee ballots via a special precinct
and ballot style. \\ \hline

1-basic-AbsenteeBySpecialPrecinct-CrossPartyEndorsement.sql &
{\em Absentee voting} $\wedge$ {\em Cross-party endorsement} &
Small straight party + 1-of-M contest with cross-party endorsement,
absentee ballots via a special precinct and ballot style.
\\ \hline

1-basic-AbsenteeBySpecialPrecinct-Cumulative.sql &
{\em Absentee voting} $\wedge$ {\em Cumulative voting} &
Small Cumulative contest, N=3, with absentee ballots via a special precinct
and ballot style, no write-in, no rejected ballots. \\ \hline

1-basic-AbsenteeBySpecialPrecinct-NofM.sql & 
{\em Absentee voting} $\wedge$ {\em N of M voting} &
Small 3-of-M contest with absentee ballots via a special precinct
and ballot style, no write-in, no rejected ballots. \\ \hline

1-basic-AbsenteeBySpecialPrecinct-NofM-Provisional.sql &
{\em Absentee voting} $\wedge$ {\em N of M voting} $\wedge$ {\em Provisional / challenged ballots} &
Small 3-of-M contest with absentee ballots via a special precinct,
accepted and rejected provisionals, no write-ins.\\ \hline

1-basic-AbsenteeBySpecialPrecinct-Provisional.sql &
{\em Absentee voting} $\wedge$ {\em Provisional / challenged ballots} &
Small 1-of-M contest with absentee ballots via a special precinct
and ballot style, accepted and rejected provisionals.
\\ \hline

1-basic-AbsenteeBySpecialPrecinct-RankedOrder.sql & 
{\em Absentee voting} $\wedge$ {\em Ranked order voting} &
Small ranked order contest with absentee ballots via a special precinct
and ballot style.
\\ \hline

1-basic-AbsenteeBySpecialPrecinct-SplitPrecinct.sql & 
{\em Absentee voting} $\wedge$ {\em Split precincts} &
Small 1-of-M contest with absentee ballots via a special precinct
and a split precinct.
\\ \hline

1-basic-AbsenteeBySpecialPrecinct-StraightParty.sql & 
{\em Absentee voting} $\wedge$ {\em Straight party voting} &
Small straight party + 1-of-M contest, absentee ballots via a special
precinct and ballot style.
\\ \hline

1-basic-AbsenteeBySpecialPrecinct-WriteIns.sql & 
{\em Absentee voting} $\wedge$ {\em Write-ins} &
Small 1-of-M contest with absentee ballots via a special precinct
and write-ins.\\ \hline

1-basic-AbsenteeBySpecialPrecinct-Yes-or-No.sql &
{\em Absentee voting} &
Small Yes-or-No contest with absentee ballots via a special precinct
and ballot style.\\ \hline

1-basic-BallotRotation.sql &
{\em Ballot rotation} &
Small 1-of-M contest with ballot rotation. \\ \hline

1-basic-BallotRotation-AbsenteeByCategory.sql &
{\em Ballot rotation} $\wedge$ {\em Absentee voting}\footnotemark[2] &
Small 1-of-M contest with ballot rotation and absentee ballots via categories. \\ \hline

1-basic-BallotRotation-AbsenteeBySpecialPrecinct.sql &
{\em Ballot rotation} $\wedge$ {\em Absentee voting} &
Small 1-of-M contest with ballot rotation, absentee ballots via a special precinct. \\ \hline

1-basic-BallotRotation-CrossPartyEndorsement.sql &
{\em Ballot rotation} $\wedge$ {\em Cross-party endorsement} &
Small straight party + 1-of-M contest with cross-party endorsement and
ballot rotation.
\\ \hline

1-basic-BallotRotation-Cumulative.sql &
{\em Ballot rotation} $\wedge$ {\em Cumulative voting} &
Small cumulative voting contest, N=2, with ballot rotation, no write-ins, no rejected ballots. \\ \hline

1-basic-BallotRotation-NofM.sql &
{\em Ballot rotation} $\wedge$ {\em N of M voting} &
Small 2-of-M contest, with ballot rotation. \\ \hline

1-basic-BallotRotation-Provisional.sql &
{\em Ballot rotation} $\wedge$ {\em Provisional / challenged ballots} &
Small 1-of-M contest with ballot rotation, accepted and rejected provisionals. \\ \hline

1-basic-BallotRotation-RankedOrder.sql &
{\em Ballot rotation} $\wedge$ {\em Ranked order voting} &
Small ranked order contest with ballot rotation.
\\ \hline

1-basic-BallotRotation-StraightParty.sql &
{\em Ballot rotation} $\wedge$ {\em Straight party voting} &
Small straight party + 1-of-M contest with ballot rotation.
\\ \hline

1-basic-BallotRotation-WriteInsAliases.sql &
{\em Ballot rotation} $\wedge$ {\em Write-ins} &
Small 1-of-M contest with write-ins and aliases and ballot rotation.
\\ \hline

1-basic-CrossPartyEndorsement.sql &
{\em Cross-party endorsement} &
Small straight party + 1-of-M contest with cross-party endorsement. \\ \hline

1-basic-CrossPartyEndorsement-Cumulative.sql &
{\em Cross-party endorsement} $\wedge$ {\em Cumulative voting} &
Small straight party + cumulative contest with cross-party endorsement, no write-ins, no rejected ballots. \\ \hline

1-basic-CrossPartyEndorsement-NofM.sql &
{\em Cross-party endorsement} $\wedge$ {\em N of M voting} &
Small straight party + 2-of-M contest with cross-party endorsement.
\\ \hline

1-basic-CrossPartyEndorsement-Provisional.sql &
{\em Cross-party endorsement} $\wedge$ {\em Provisional / challenged ballots} &
Small straight party + 1-of-M contest with cross-party endorsement,
accepted and rejected provisionals.
\\ \hline

1-basic-CrossPartyEndorsement-WriteIns.sql &
{\em Cross-party endorsement} $\wedge$ {\em Write-ins} &
Small straight party + 1-of-M contest with cross-party endorsement
and write-ins.
\\ \hline

1-basic-Cumulative.sql & {\em Cumulative voting} & Small cumulative voting contest, no write-ins, no rejected ballots. \\ \hline

1-basic-Cumulative-NofM.sql &
{\em Cumulative voting} $\wedge$ {\em N of M voting} &
Small cumulative voting contest plus small N-of-M contest,
no write-ins, no rejected ballots.
\\ \hline

1-basic-Cumulative-Provisional.sql &
{\em Cumulative voting} $\wedge$ {\em Provisional / challenged ballots} &
Small cumulative voting contest with accepted and rejected provisionals.
\\ \hline

1-basic-Cumulative-RankedOrder.sql &
{\em Cumulative voting} $\wedge$ {\em Ranked order voting} &
Small ranked order contest plus small cumulative contest, no special cases.
\\ \hline

1-basic-NoBallots-1ofM.sql & {\em Voting system} & Small 1-of-M contest with no ballots cast. \\ \hline
1-basic-NoBallots-RankedOrder.sql & {\em Ranked order voting} & Small ranked order contest with no ballots cast. \\ \hline
1-basic-NoChoices-1ofM.sql & {\em Write-ins} & Small 1-of-M contest with no choices (write-ins only). \\ \hline
1-basic-NoChoicesNoBallots-1ofM.sql & {\em Write-ins} & Small 1-of-M contest with no choices (write-ins only) and no ballots. \\ \hline

1-basic-NofM.sql & {\em N of M voting} & Small 2-of-M contest, no write-ins, no rejected ballots. \\ \hline

1-basic-NofM-Provisional.sql &
{\em N of M voting} $\wedge$ {\em Provisional / challenged ballots} &
Small 2-of-M contest with accepted and rejected provisionals.
\\ \hline

1-basic-NofM-WriteIns.sql &
{\em N of M voting} $\wedge$ {\em Write-ins} &
Small 2-of-M contest with write-ins, no aliasing. \\ \hline

1-basic-Primary.sql & {\em Primary elections} & Small primary election, no write-ins, no rejected ballots. \\ \hline

1-basic-Primary-AbsenteeByCategory.sql &
{\em Primary elections} $\wedge$ {\em Absentee voting}\footnotemark[2] &
Small primary election with absentee ballots via categories, no write-ins,
no rejected ballots.
\\ \hline

1-basic-Primary-AbsenteeBySpecialPrecinct.sql &
{\em Primary elections} $\wedge$ {\em Absentee voting} &
Small primary election with absentee ballots via a special precinct and
ballot style, no write-ins, no rejected ballots.
\\ \hline

1-basic-Primary-BallotRotation.sql &
{\em Primary elections} $\wedge$ {\em Ballot rotation} &
Small primary election with ballot rotations, no write-ins,
no rejected ballots.
\\ \hline

1-basic-Primary-CrossPartyEndorsement.sql &
{\em Primary elections} $\wedge$ {\em Cross-party endorsement} &
Small primary election with straight party voting and cross-party
endorsement in a non-party-specific contest.
\\ \hline

1-basic-Primary-Cumulative.sql &
{\em Primary elections} $\wedge$ {\em Cumulative voting} &
Small primary election with cumulative voting, no write-ins, no rejected ballots. \\ \hline

1-basic-Primary-NofM.sql &
{\em Primary elections} $\wedge$ {\em N of M voting} &
Small primary election with N-of-M voting, no write-ins, no rejected ballots.
\\ \hline

1-basic-Primary-Provisional.sql &
{\em Primary elections} $\wedge$ {\em Provisional / challenged ballots} &
Small primary election, no write-ins, with accepted and rejected provisionals. \\ \hline

1-basic-Primary-RankedOrder.sql &
{\em Primary elections} $\wedge$ {\em Ranked order voting} &
Small primary election with ranked order voting, no write-ins,
no rejected ballots.
\\ \hline

1-basic-Primary-SplitPrecinct.sql &
{\em Primary elections} $\wedge$ {\em Split precincts} &
Small primary election with a split precinct, no write-ins,
no rejected ballots.
\\ \hline

1-basic-Primary-StraightParty.sql &
{\em Primary elections} $\wedge$ {\em Straight party voting} &
Small primary election with straight party voting in a non-party-specific
contest.
\\ \hline

1-basic-Primary-WriteIns.sql &
{\em Primary elections} $\wedge$ {\em Write-ins} &
Small primary election with write-ins, no rejected ballots. \\ \hline

1-basic-Provisional.sql & {\em Provisional / challenged ballots} & Small 1-of-M contest with accepted and rejected provisionals. \\ \hline

1-basic-RankedOrder-1.sql & {\em Ranked order voting} & Small ranked order contest, N=1, M=4, no special cases. \\ \hline

1-basic-RankedOrder-2.sql & {\em Ranked order voting} & Small ranked order contest, N=2, M=4, no special cases. \\ \hline

1-basic-RankedOrder-NofM.sql &
{\em Ranked order voting} $\wedge$ {\em N of M voting} &
Small ranked order contest plus small N-of-M contest, no special cases.
\\ \hline

1-basic-RankedOrder-Provisional.sql &
{\em Ranked order voting} $\wedge$ {\em Provisional / challenged ballots} &
Small ranked order contest, N=1, M=4, with accepted and
rejected provisionals. \\ \hline

1-basic-RankedOrder-WriteIns.sql &
{\em Ranked order voting} $\wedge$ {\em Write-ins} &
Small ranked order contest, N=1, M=4, with write-in. \\ \hline

1-basic-SplitPrecinct-1.sql & {\em Split precincts} & Small 1-of-M contest with a split precinct. \\ \hline

1-basic-SplitPrecinct-2.sql & {\em Split precincts} & Two districts, three precincts (one split), three contests, four ballot styles, forty ballots. \\ \hline

1-basic-SplitPrecinct-AbsenteeByCategory.sql &
{\em Split precincts} $\wedge$ {\em Absentee voting}\footnotemark[2]
& Small 1-of-M contest with a split precinct and absentee ballots via
categories. \\ \hline

1-basic-SplitPrecinct-BallotRotation.sql &
{\em Split precincts} $\wedge$ {\em Ballot rotation} &
Like SplitPrecinct-2 except with ballot rotation. \\ \hline

1-basic-SplitPrecinct-CrossPartyEndorsement.sql &
{\em Split precincts} $\wedge$ {\em Cross-party endorsement} &
Like SplitPrecinct-2 except with straight party voting and cross-party endorsement.
\\ \hline

1-basic-SplitPrecinct-Cumulative.sql &
{\em Split precincts} $\wedge$ {\em Cumulative voting}
& Small Cumulative contest, N=2, with a split precinct. \\ \hline

1-basic-SplitPrecinct-NofM.sql &
{\em Split precincts} $\wedge$ {\em N of M voting}
& Small 3-of-M contest with a split precinct, no write-ins, no
rejected ballots. \\ \hline

1-basic-SplitPrecinct-Provisional.sql &
{\em Split precincts} $\wedge$ {\em Provisional / challenged ballots}
& Small 1-of-M contest with a split precinct and accepted and
rejected provisionals.
\\ \hline

1-basic-SplitPrecinct-RankedOrder.sql &
{\em Split precincts} $\wedge$ {\em Ranked order voting} &
Like SplitPrecinct-2 except with ranked order contests at the district level.
\\ \hline

1-basic-SplitPrecinct-StraightParty.sql &
{\em Split precincts} $\wedge$ {\em Straight party voting} &
Like SplitPrecinct-2 except with straight party voting. \\ \hline

1-basic-SplitPrecinct-WriteIns.sql &
{\em Split precincts} $\wedge$ {\em Write-ins}
& Small 1-of-M contest with split precinct and write-in.
\\ \hline

1-basic-StraightParty.sql & {\em Straight party voting} & Small straight party + 1-of-M contest, no write-ins, no rejected ballots. \\ \hline

1-basic-StraightParty-Cumulative.sql &
{\em Straight party voting} $\wedge$ {\em Cumulative voting} &
Small straight party + cumulative contest, no write-ins, no rejected ballots. \\ \hline

1-basic-StraightParty-NofM.sql &
{\em Straight party voting} $\wedge$ {\em N of M voting} &
Small straight party + 2-of-M contest, no write-ins, no rejected ballots.
\\ \hline

1-basic-StraightParty-Provisional.sql &
{\em Straight party voting} $\wedge$ {\em Provisional / challenged ballots} &
Small straight party + 1-of-M contest with accepted and rejected provisionals.
\\ \hline

1-basic-StraightParty-RankedOrder.sql &
{\em Straight party voting} $\wedge$ {\em Ranked order voting} &
Small ranked order contest, N=1, M=4, with straight-party voting. \\ \hline

1-basic-StraightParty-WriteIns.sql &
{\em Straight party voting} $\wedge$ {\em Write-ins} &
Small straight party + 1-of-M contest with write-ins.
\\ \hline

1-basic-WriteIns.sql & {\em Write-ins} & Small 1-of-M contest with write-ins, no aliasing. \\ \hline

1-basic-WriteInsAliases.sql & {\em Write-ins} & Small 1-of-M contest with write-ins and aliases. \\ \hline

1-basic-WriteInsAliases-AbsenteeByCategory.sql
  & {\em Write-ins} $\wedge$ {\em Absentee voting}\footnotemark[2]
  & Small 1-of-M contest with write-ins, aliases and absentee ballots via categories.
  \\ \hline
1-basic-WriteInsAliases-AbsenteeBySpecialPrecinct.sql
  & {\em Write-ins} $\wedge$ {\em Absentee voting}
  & Small 1-of-M contest with write-ins, aliases, absentee ballots via a special precinct
and ballot style.
  \\ \hline
1-basic-WriteInsAliases-Cumulative.sql
  & {\em Write-ins} $\wedge$ {\em Cumulative voting}
  & Small Cumulative contest, N=2, with write-ins and aliases, no rejected ballots.
  \\ \hline
1-basic-WriteInsAliases-NofM.sql
  & {\em Write-ins} $\wedge$ {\em N of M voting}
  & Small 2-of-M contest with write-ins and aliases, no rejected ballots.
  \\ \hline
1-basic-WriteInsAliases-Provisional.sql
  & {\em Write-ins} $\wedge$ {\em Provisional / challenged ballots}
  & Small 1-of-M contest with write-ins, aliases, accepted and rejected provisionals.
  \\ \hline

1-basic-Yes-or-No.sql & {\em Voting system} & Small Yes-or-No contest, no rejected ballots. \\ \hline

1-basic-samples-AlleganyGeneral2004.sql &
{\em Write-ins} $\wedge$ {\em N of M voting} &
Test spec based on Allegany County, MD sample ballot for
congressional district 6, general election, 2004-11-02.
\\ \hline

1-basic-samples-CecilRPrimary1998.sql &
{\em N of M voting} &
Test spec based on Cecil County, MD sample ballot for Republican
primary election, 1st congressional district, legislative district
35, 1998-09-15.  The generated test does not include anything specific to primary elections.
\\ \hline

1-basic-samples-FairfaxGeneral2004.sql &
{\em Write-ins} &
Test spec based on Fairfax County, VA sample ballot for 8th
district, general election, 2004-11-02.
\\ \hline

\end{longtable}
