Loading extract/extract.go +22 −1 Original line number Diff line number Diff line Loading @@ -255,7 +255,7 @@ func Probability(r *http.Request, dp float64) float64 { return dp } // Inv returns the value of inv param from HTTP request. // Inv returns the value of inv param from an HTTP request. // Default value is false func Inverse(r *http.Request) (inverse bool) { strInv := r.FormValue("inv") Loading @@ -268,3 +268,24 @@ func Inverse(r *http.Request) (inverse bool) { } return } // Order returns an array of integers from an HTTP request. // url parameter is 'ord'. It is supose to contain integer numbers. // Default is an empty array func Order(r *http.Request) (order []int) { if err := r.ParseForm(); err != nil { return []int{} } strOrders := r.Form["order"] if len(strOrders) == 0 { return []int{} } for _, o := range strOrders { if io, err := strconv.ParseInt(o, 0, 64); err == nil { order = append(order, int(io)) } } return } extract/extract_test.go +38 −0 Original line number Diff line number Diff line Loading @@ -460,3 +460,41 @@ func TestInverse(t *testing.T) { } } } func TestOrder(t *testing.T) { t.Parallel() tests := []struct { title string url string order []int }{ {"test wrong input", "http://www.tg.c?order=hello&order=e", []int{}}, {"test no input", "http://www.tg.c", []int{}}, {"test good input", "http://www.tg.c?order=0", []int{0}}, {"test good input", "http://www.tg.c?order=0&order=2&order=1", []int{0, 2, 1}}, } for _, test := range tests { t.Log(test.title) r := &http.Request{Method: "GET"} r.URL, _ = url.Parse(test.url) order := Order(r) if !areEqual(order, test.order) { t.Errorf("expected %v got %v", test.order, order) } } } func areEqual(a, b []int) bool { if len(a) != len(b) { return false } for i, _ := range a { if a[i] != b[i] { return false } } return true } Loading
extract/extract.go +22 −1 Original line number Diff line number Diff line Loading @@ -255,7 +255,7 @@ func Probability(r *http.Request, dp float64) float64 { return dp } // Inv returns the value of inv param from HTTP request. // Inv returns the value of inv param from an HTTP request. // Default value is false func Inverse(r *http.Request) (inverse bool) { strInv := r.FormValue("inv") Loading @@ -268,3 +268,24 @@ func Inverse(r *http.Request) (inverse bool) { } return } // Order returns an array of integers from an HTTP request. // url parameter is 'ord'. It is supose to contain integer numbers. // Default is an empty array func Order(r *http.Request) (order []int) { if err := r.ParseForm(); err != nil { return []int{} } strOrders := r.Form["order"] if len(strOrders) == 0 { return []int{} } for _, o := range strOrders { if io, err := strconv.ParseInt(o, 0, 64); err == nil { order = append(order, int(io)) } } return }
extract/extract_test.go +38 −0 Original line number Diff line number Diff line Loading @@ -460,3 +460,41 @@ func TestInverse(t *testing.T) { } } } func TestOrder(t *testing.T) { t.Parallel() tests := []struct { title string url string order []int }{ {"test wrong input", "http://www.tg.c?order=hello&order=e", []int{}}, {"test no input", "http://www.tg.c", []int{}}, {"test good input", "http://www.tg.c?order=0", []int{0}}, {"test good input", "http://www.tg.c?order=0&order=2&order=1", []int{0, 2, 1}}, } for _, test := range tests { t.Log(test.title) r := &http.Request{Method: "GET"} r.URL, _ = url.Parse(test.url) order := Order(r) if !areEqual(order, test.order) { t.Errorf("expected %v got %v", test.order, order) } } } func areEqual(a, b []int) bool { if len(a) != len(b) { return false } for i, _ := range a { if a[i] != b[i] { return false } } return true }