package restful import "testing" func TestMatchesPath_OneParam(t *testing.T) { params := doExtractParams("/from/{source}", 2, "/from/here", t) if params["source"] != "here" { t.Errorf("parameter mismatch here") } } func TestMatchesPath_Slash(t *testing.T) { params := doExtractParams("/", 0, "/", t) if len(params) != 0 { t.Errorf("expected empty parameters") } } func TestMatchesPath_SlashNonVar(t *testing.T) { params := doExtractParams("/any", 1, "/any", t) if len(params) != 0 { t.Errorf("expected empty parameters") } } func TestMatchesPath_TwoVars(t *testing.T) { params := doExtractParams("/from/{source}/to/{destination}", 4, "/from/AMS/to/NY", t) if params["source"] != "AMS" { t.Errorf("parameter mismatch AMS") } } func TestMatchesPath_VarOnFront(t *testing.T) { params := doExtractParams("{what}/from/{source}/", 3, "who/from/SOS/", t) if params["source"] != "SOS" { t.Errorf("parameter mismatch SOS") } } func TestExtractParameters_EmptyValue(t *testing.T) { params := doExtractParams("/fixed/{var}", 2, "/fixed/", t) if params["var"] != "" { t.Errorf("parameter mismatch var") } } func doExtractParams(routePath string, size int, urlPath string, t *testing.T) map[string]string { r := Route{Path: routePath} r.postBuild() if len(r.pathParts) != size { t.Fatalf("len not %v %v, but %v", size, r.pathParts, len(r.pathParts)) } pathProcessor := defaultPathProcessor{} return pathProcessor.ExtractParameters(&r, nil, urlPath) }