check(); if (is_bool($allowed)) { echo '✓ PASS: check() returns boolean (allowed: ' . ($allowed ? 'yes' : 'no') . ")\n\n"; } else { throw new Exception('check() did not return boolean'); } // Test 3: Headers method echo "Test 3: Send Headers Method\n"; ob_start(); $rateLimit->sendHeaders(); ob_end_clean(); echo "✓ PASS: sendHeaders() executed without error\n\n"; // Test 4: Get reset time echo "Test 4: Get Reset Time\n"; $resetTime = $rateLimit->getResetTime(); if (is_int($resetTime) && $resetTime >= 0) { echo "✓ PASS: getResetTime() returns valid value ($resetTime seconds)\n\n"; } else { throw new Exception('Invalid reset time'); } // Test 5: Cleanup method echo "Test 5: Cleanup Method\n"; $rateLimit->cleanup(); echo "✓ PASS: cleanup() executed without error\n\n"; echo "✅ All rate limit tests passed!\n"; return true; } catch (Exception $e) { echo '❌ FAIL: ' . $e->getMessage() . "\n"; return false; }