Q1A,0.5,Loop through the Participant objects in $participants ,q1/view1.php
Q1A,0.5,Use in_array or any other function/code to make sure no duplicates exist in the table ,q1/view1.php
Q1A,1,"Correct column 1 (""School"" column) using test case ",q1/view1.php
Q1A,1,"Correct column 2 (""Solo or Multiple"" column) using test case ",q1/view1.php
Q1A,-0.25,For each visual discrepancy; up to a maximum of -0.5,q1/view1.php
Q1B,0.5,Loop through the Participant objects in $participant,q1/view2.php
Q1B,0.5,Use substr or any other function/code to compare the first 3 characters of the participant id,q1/view2.php
Q1B,0.5," Correct column 1 (""Team ID"" column) using test case ",q1/view2.php
Q1B,0.5," Correct column 2 (""Category"" column) using test case ",q1/view2.php
Q1B,0.5," Correct column 3 (""Early Bird"" column) using test case ",q1/view2.php
Q1B,0.5," Correct column 4 (""Paid in Full"" column) using test case ",q1/view2.php
Q1B,-0.25,For each visual discrepancy; up to a maximum of -0.5,q1/view2.php
Q1C,0.5,Loop through the Category objects in $categories ,q1/view3.php
Q1C,0.5,Loop through the Participant objects in $participants ,q1/view3.php
Q1C,1,"Correct column 1 (""Category"" column) using test case ",q1/view3.php
Q1C,1,"Correct column 2 (""Number of participants"" column) using test case ",q1/view3.php
Q1C,-0.25,For each visual discrepancy; up to a maximum of -0.5,q1/view3.php
Q2A,0.75,spl_autoload_register() called correctly ,q2/autoload.php
Q2A,0.25,The hardcoded require_once statements commented out ,q2/autoload.php
Q2A,0.2,ConnectionManager used ,q2/classes/UserDAO.php
Q2A,0.3,password_verify() used ,q2/classes/UserDAO.php
Q2A,0.2,$row fetched ,q2/classes/UserDAO.php
Q2A,0.2,$user object created and returned ,q2/classes/UserDAO.php
Q2A,0.1,$stmt = $pdo = null ,q2/classes/UserDAO.php
Q2A,-0.25,The hardcoded UserDAO::_autheticateUser() is not commented out ,q2/classes/UserDAO.php
Q2A,0.2,ConnectionManager used (rather than new PDO()) ,q2/classes/UserDAO.php
Q2A,0.3,password_hash() used ,q2/classes/UserDAO.php
Q2A,0.2,4 correct bindParam() calls ,q2/classes/UserDAO.php
Q2A,0.2,The status from PDOStatement::execute() returned to the caller ,q2/classes/UserDAO.php
Q2A,0.1,$stmt = $pdo = null ,q2/classes/UserDAO.php
Q2A,-0.25,The hardcoded UserDAO::_addUser() is not commented out ,q2/classes/UserDAO.php
Q2B,0.25,session_start() called ,q2/login.php
Q2B,0.25,The hourOfTheDay = 6 checked correctly ,q2/login.php
Q2B,0.5,Checking of the user is logged in ,q2/login.php
Q2B,0.25,"Redirecting header(""Location: $role-page.php"") if logged in ",q2/login.php
Q2B,0.75,Displaying the form only if not submitted ,q2/login.php
Q2B,0.25,Authenticating the user ,q2/login.php
Q2B,0.5,Setting the session variables for user and role ,q2/login.php
Q2B,0.25,"Redirecting header(""Location: $role-page.php"") if logged in ",q2/login.php
Q2B,0.25,Correct Registration Pending message ,q2/login.php
Q2B,0.25,Correct Registration Failed message ,q2/login.php
Q2B,0.5,Correct Authentication Failed message ,q2/login.php
Q2C,1.5,Table displayed as in the screenshot of Test 1 using BookDao::getAvailableBooks() ,q2/user-page.php
Q2C,-0.25,For each visual discrepancy; up to a maximum of -0.75,q2/user-page.php
Q2C,0.25,Checking if the form is submitted ,q2/user-page.php
Q2C,0.5,Looping over the $_POST['isbn'] array ,q2/user-page.php
Q2C,0.5,Using BookDao::checkout($isbn) ,q2/user-page.php
Q2C,0.25,Realizing that BookDao::checkout($isbn) returns a book object and using the getters ,q2/user-page.php
Q2C,0.5,Creating the checked out/failed to check out messages as in Test 2 ,q2/user-page.php
Q2C,0.5,Displaying the table only if there are books to be checked out (Test 3) ,q2/user-page.php
Q2D,0.5,Test 1: Registration status checked using session variables ,q2/register.php
Q2D,0.25,Test 1: Message shown with the right link to logout ,q2/register.php
Q2D,0.5,Test 2: Register form displayed with empty rows only when not submitted ,q2/register.php
Q2D,0.5,Test 3: Empty form submission: All error messages displayed ,q2/register.php
Q2D,0.25,Test 4: Form displayed again with values persisted ,q2/register.php
Q2D,0.25,Test 4: Number of characters in the password counted ,q2/register.php
Q2D,0.25,Test 4: Form displayed again with values persisted ,q2/register.php
Q2D,0.25,Test 5: Email validity check ,q2/register.php
Q2D,0.25,Test 6: Password validity check ,q2/register.php
Q2D,0.25,Test 7: Email validity check again ,q2/register.php
Q2D,0.25,Test 7: Password validity check again: Too many characters ,q2/register.php
Q2D,0.25,Test 8: Registration successful message ,q2/register.php
Q2D,0.25,Test 9: Registration failure message ,q2/register.php
Q3,6,Autograded: 0.5 for each test case passed,q3/q3.php