func TestBinderbindForm(t *testing.T) {
	ts := new(binderTestStruct)
	b := new(binder)
	b.bindData(ts, values)
	assertBinderTestStruct(t, ts)
}
func assertCustomer(t *testing.T, c *user) {
assert.Equal(t, 1, c.ID)
assert.Equal(t, "Joe", c.Name)
}
package vodka
import (
	"bytes"
	"io"
	"mime/multipart"
	"net/http"
	"reflect"
	"strings"
	"testing"
	"github.com/insionng/vodka/test"
	"github.com/stretchr/testify/assert"
)
type (
	binderTestStruct struct {
		I           int
		I8          int8
		I16         int16
		I32         int32
		I64         int64
		UI          uint
		UI8         uint8
		UI16        uint16
		UI32        uint32
		UI64        uint64
		B           bool
		F32         float32
		F64         float64
		S           string
		cantSet     string
		DoesntExist string
	}
)
func (t binderTestStruct) GetCantSet() string {
	return t.cantSet
}
var values = map[string][]string{
	"I":       {"0"},
	"I8":      {"8"},
	"I16":     {"16"},
	"I32":     {"32"},
	"I64":     {"64"},
	"UI":      {"0"},
	"UI8":     {"8"},
	"UI16":    {"16"},
	"UI32":    {"32"},
	"UI64":    {"64"},
	"B":       {"true"},
	"F32":     {"32.5"},
	"F64":     {"64.5"},
	"S":       {"test"},
	"cantSet": {"test"},
}
func TestBinderJSON(t *testing.T) {
	testBinderOkay(t, strings.NewReader(userJSON), MIMEApplicationJSON)
	testBinderError(t, strings.NewReader(invalidContent), MIMEApplicationJSON)
}
func TestBinderXML(t *testing.T) {
	testBinderOkay(t, strings.NewReader(userXML), MIMEApplicationXML)
	testBinderError(t, strings.NewReader(invalidContent), MIMEApplicationXML)
}
func TestBinderForm(t *testing.T) {
	testBinderOkay(t, strings.NewReader(userForm), MIMEApplicationForm)
	testBinderError(t, nil, MIMEApplicationForm)
	e := New()
	req := test.NewRequest(POST, "/", strings.NewReader(userForm))
	rec := test.NewResponseRecorder()
	c := e.NewContext(req, rec)
	req.Header().Set(HeaderContentType, MIMEApplicationForm)
	var obj = make([]struct{ Field string }, 0)
	err := c.Bind(&obj)
	assert.Error(t, err)
}
func TestBinderQueryParams(t *testing.T) {
	e := New()
	req := test.NewRequest(GET, "/?id=1&name=Jon Snow", nil)
	rec := test.NewResponseRecorder()
	c := e.NewContext(req, rec)
	u := new(user)
	err := c.Bind(u)
	if assert.NoError(t, err) {
		assert.Equal(t, 1, u.ID)
		assert.Equal(t, "Jon Snow", u.Name)
	}
}
func TestBinderMultipartForm(t *testing.T) {
	body := new(bytes.Buffer)
	mw := multipart.NewWriter(body)
	mw.WriteField("id", "1")
	mw.WriteField("name", "Jon Snow")
	mw.Close()
	testBinderOkay(t, body, mw.FormDataContentType())
}
func TestBinderUnsupportedMediaType(t *testing.T) {
	testBinderError(t, strings.NewReader(invalidContent), MIMEApplicationJSON)
}