todo-server/server/ajax/form/form_test.go

133 lines
1.5 KiB
Go
Executable File

package form
import (
"net/http"
"net/http/httptest"
"strings"
"testing"
)
func TestGet(t *testing.T) {
r := testReq()
if v := Get(r, "a"); v != "b" {
t.Error(v)
}
if v := Get(r, "c"); v != "4" {
t.Error(v)
}
if v := Get(r, "d"); v != "e, f,g" {
t.Error(v)
}
}
func TestToStrArr(t *testing.T) {
cases := []struct {
in string
out int
}{
{
in: "4",
out: 1,
},
{
in: "a,b,c",
out: 3,
},
{
in: " a, b, c ",
out: 3,
},
{
in: "a,b, c",
out: 3,
},
{
in: "a,b",
out: 2,
},
{
in: "a,",
out: 1,
},
{
in: "a",
out: 1,
},
{
in: "",
out: 0,
},
}
for _, c := range cases {
if len(ToStrArr(c.in)) != c.out {
t.Error(c)
}
}
}
func TestToTime(t *testing.T) {
cases := []struct {
in string
out string
}{
{
in: "2001-02-03 04:05:06",
out: "2001-02-03 04:05:06",
},
{
in: "5",
out: "0001-01-01 00:00:00",
},
}
for _, c := range cases {
time := ToTime(c.in)
if v := time.Format("2006-01-02 15:04:05"); v != c.out {
t.Error(c, v)
}
}
}
func TestToInt(t *testing.T) {
cases := []struct {
in string
out int
}{
{
in: "4",
out: 4,
},
{
in: "a",
out: 0,
},
{
in: "",
out: 0,
},
{
in: "-1",
out: -1,
},
{
in: "5",
out: 5,
},
}
for _, c := range cases {
if ToInt(c.in) != c.out {
t.Error(c)
}
}
}
func testReq() *http.Request {
return httptest.NewRequest("POST", "/path/to", strings.NewReader(`{
"a": "b",
"c": 4,
"d": "e, f,g"
}`))
}