validate_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. // Copyright 2014 Manu Martinez-Almeida. All rights reserved.
  2. // Use of this source code is governed by a MIT style
  3. // license that can be found in the LICENSE file.
  4. package binding
  5. import (
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. type struct1 struct {
  10. Value float64 `binding:"required"`
  11. }
  12. type struct2 struct {
  13. RequiredValue string `binding:"required"`
  14. Value float64
  15. }
  16. type struct3 struct {
  17. Integer int
  18. String string
  19. BasicSlice []int
  20. Boolean bool
  21. RequiredInteger int `binding:"required"`
  22. RequiredString string `binding:"required"`
  23. RequiredAnotherStruct struct1 `binding:"required"`
  24. RequiredBasicSlice []int `binding:"required"`
  25. RequiredComplexSlice []struct2 `binding:"required"`
  26. RequiredBoolean bool `binding:"required"`
  27. }
  28. func createStruct() struct3 {
  29. return struct3{
  30. RequiredInteger: 2,
  31. RequiredString: "hello",
  32. RequiredAnotherStruct: struct1{1.5},
  33. RequiredBasicSlice: []int{1, 2, 3, 4},
  34. RequiredComplexSlice: []struct2{
  35. {RequiredValue: "A"},
  36. {RequiredValue: "B"},
  37. },
  38. RequiredBoolean: true,
  39. }
  40. }
  41. func TestValidateGoodObject(t *testing.T) {
  42. test := createStruct()
  43. assert.Nil(t, validate(&test))
  44. }
  45. type Object map[string]interface{}
  46. type MyObjects []Object
  47. func TestValidateSlice(t *testing.T) {
  48. var obj MyObjects
  49. var obj2 Object
  50. var nu = 10
  51. assert.NoError(t, validate(obj))
  52. assert.NoError(t, validate(&obj))
  53. assert.NoError(t, validate(obj2))
  54. assert.NoError(t, validate(&obj2))
  55. assert.NoError(t, validate(nu))
  56. assert.NoError(t, validate(&nu))
  57. }