Route text: Root route works!';
        if (Flight::request()->query->redirected) {
            echo '
Redirected from /redirect route successfully!';
        }
    });
    Flight::route('/querytestpath', function () {
        echo 'Route text: This is query route
';
        echo "Query parameters:
";
        print_r(Flight::request()->query);
        echo "";
    }, false, "querytestpath");
    // Test 2: Simple route
    Flight::route('/test', function () {
        echo 'Route text: Test route works!';
    });
    // Test 3: Route with parameter
    Flight::route('/user/@name', function ($name) {
        echo "Route text: Hello, $name!";
    });
    Flight::route('POST /postpage', function () {
        echo 'Route text: THIS IS POST METHOD PAGE';
    }, false, "postpage");
    // Test 4: Grouped routes
    Flight::group('/group', function () {
        Flight::route('/test', function () {
            echo 'Route text: Group test route works!';
        });
        Flight::route('/user/@name', function ($name) {
            echo "Route text: There is variable called name and it is $name";
        });
        Flight::group('/group1', function () {
            Flight::group('/group2', function () {
                Flight::group('/group3', function () {
                    Flight::group('/group4', function () {
                        Flight::group('/group5', function () {
                            Flight::group('/group6', function () {
                                Flight::group('/group7', function () {
                                    Flight::group('/group8', function () {
                                        Flight::route('/final_group', function () {
                                            echo 'Mega Group test route works!';
                                        }, false, "final_group");
                                    });
                                });
                            });
                        });
                    });
                });
            });
        });
    });
    // Test 5: Route alias
    Flight::route('/alias', function () {
        echo 'Route text: Alias route works!';
    }, false, 'aliasroute');
    /** Middleware test */
    include_once 'AuthCheck.php';
    $middle = new AuthCheck();
    // Test 6: Route with middleware
    Flight::route('/protected', function () {
        echo 'Route text: Protected route works!';
    })->addMiddleware([$middle]);
    // Test 7: Route with template
    Flight::route('/template/@name', function ($name) {
        Flight::render('template.phtml', ['name' => $name]);
    });
    // Test 8: Throw an error
    Flight::route('/error', function () {
        trigger_error('This is a successful error');
    });
    // Test 10: Halt
    Flight::route('/halt', function () {
        Flight::halt(400, 'Halt worked successfully');
    });
    // Test 11: Redirect
    Flight::route('/redirect', function () {
        Flight::redirect('/?redirected=1');
    });
    // Test 12: Redirect with status code
    Flight::route('/streamResponse', function () {
        echo "Streaming a response";
        for ($i = 1; $i <= 50; $i++) {
            echo ".";
            usleep(50000);
            ob_flush();
        }
        echo "is successful!!";
    })->streamWithHeaders(['Content-Type' => 'text/html', 'status' => 200 ]);
    // Test 14: Overwrite the body with a middleware
    Flight::route('/overwrite', function () {
        echo 'Route text: This route status is that it failed';
    })->addMiddleware([new OverwriteBodyMiddleware()]);
}, [ new LayoutMiddleware() ]);
// Test 9: JSON output (should not output any other html)
Flight::route('/json', function () {
    Flight::json(['message' => 'JSON renders successfully!']);
});
// Test 13: JSONP output (should not output any other html)
Flight::route('/jsonp', function () {
    Flight::jsonp(['message' => 'JSONP renders successfully!'], 'jsonp');
});
Flight::map('error', function (Throwable $e) {
    echo sprintf(
        '%s', $e->getMessage(), $e->getCode(), str_replace(getenv('PWD'), '***CONFIDENTIAL***', $e->getTraceAsString()) ); echo "