use matchit::Router;
fn main() {
println!("=== Test 1: Simple static route ===");
let mut r1 = Router::new();
r1.insert("/hello", "static_hello").unwrap();
match r1.at("/hello") {
Ok(m) => println!("✓ Matched /hello: {:?}", m.value),
Err(e) => println!("✗ Failed: {:?}", e),
}
println!("\n=== Test 2: Dynamic route with colon syntax ===");
let mut r2 = Router::new();
let insert_result = r2.insert("/users/:id", "dynamic_user");
println!("Insert result: {:?}", insert_result);
match r2.at("/users/123") {
Ok(m) => {
println!("✓ Matched /users/123");
println!(" Value: {:?}", m.value);
println!(" Params:");
for (k, v) in m.params.iter() {
println!(" {} = {}", k, v);
}
}
Err(e) => println!("✗ Failed to match: {:?}", e),
}
println!("\n=== Test 3: Dynamic route with curly braces ===");
let mut r3 = Router::new();
let insert_result = r3.insert("/posts/{post_id}", "dynamic_post");
println!("Insert result: {:?}", insert_result);
match r3.at("/posts/456") {
Ok(m) => {
println!("✓ Matched /posts/456");
println!(" Value: {:?}", m.value);
println!(" Params:");
for (k, v) in m.params.iter() {
println!(" {} = {}", k, v);
}
}
Err(e) => println!("✗ Failed to match: {:?}", e),
}
println!("\n=== Test 4: Wildcard route ===");
let mut r4 = Router::new();
r4.insert("/files/*path", "files").unwrap();
match r4.at("/files/docs/readme.txt") {
Ok(m) => {
println!("✓ Matched /files/docs/readme.txt");
println!(" Value: {:?}", m.value);
println!(" Params:");
for (k, v) in m.params.iter() {
println!(" {} = {}", k, v);
}
}
Err(e) => println!("✗ Failed to match: {:?}", e),
}
}