27 lines
649 B
Go
27 lines
649 B
Go
package handler
|
||
|
||
import (
|
||
"net/http/httptest"
|
||
"testing"
|
||
)
|
||
|
||
func TestIntQueryClampsAndFallsBack(t *testing.T) {
|
||
cases := []struct {
|
||
q string
|
||
want int
|
||
}{
|
||
{"", 40}, // 缺省
|
||
{"limit=10", 10}, // 正常
|
||
{"limit=0", 1}, // 低于下限 → 夹到下限
|
||
{"limit=999", 200}, // 高于上限 → 夹到上限
|
||
{"limit=abc", 40}, // 非法 → 回落默认值,而不是让整个请求 400
|
||
{"limit=-5", 1},
|
||
}
|
||
for _, c := range cases {
|
||
r := httptest.NewRequest("GET", "/x?"+c.q, nil)
|
||
if got := intQuery(r, "limit", 40, 1, 200); got != c.want {
|
||
t.Fatalf("intQuery(%q) = %d,期望 %d", c.q, got, c.want)
|
||
}
|
||
}
|
||
}
|