util_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package jmespath
  2. import (
  3. "github.com/stretchr/testify/assert"
  4. "testing"
  5. )
  6. func TestSlicePositiveStep(t *testing.T) {
  7. assert := assert.New(t)
  8. input := make([]interface{}, 5)
  9. input[0] = 0
  10. input[1] = 1
  11. input[2] = 2
  12. input[3] = 3
  13. input[4] = 4
  14. result, err := slice(input, []sliceParam{sliceParam{0, true}, sliceParam{3, true}, sliceParam{1, true}})
  15. assert.Nil(err)
  16. assert.Equal(input[:3], result)
  17. }
  18. func TestIsFalseJSONTypes(t *testing.T) {
  19. assert := assert.New(t)
  20. assert.True(isFalse(false))
  21. assert.True(isFalse(""))
  22. var empty []interface{}
  23. assert.True(isFalse(empty))
  24. m := make(map[string]interface{})
  25. assert.True(isFalse(m))
  26. assert.True(isFalse(nil))
  27. }
  28. func TestIsFalseWithUserDefinedStructs(t *testing.T) {
  29. assert := assert.New(t)
  30. type nilStructType struct {
  31. SliceOfPointers []*string
  32. }
  33. nilStruct := nilStructType{SliceOfPointers: nil}
  34. assert.True(isFalse(nilStruct.SliceOfPointers))
  35. // A user defined struct will never be false though,
  36. // even if it's fields are the zero type.
  37. assert.False(isFalse(nilStruct))
  38. }
  39. func TestIsFalseWithNilInterface(t *testing.T) {
  40. assert := assert.New(t)
  41. var a *int = nil
  42. var nilInterface interface{}
  43. nilInterface = a
  44. assert.True(isFalse(nilInterface))
  45. }
  46. func TestIsFalseWithMapOfUserStructs(t *testing.T) {
  47. assert := assert.New(t)
  48. type foo struct {
  49. Bar string
  50. Baz string
  51. }
  52. m := make(map[int]foo)
  53. assert.True(isFalse(m))
  54. }
  55. func TestObjsEqual(t *testing.T) {
  56. assert := assert.New(t)
  57. assert.True(objsEqual("foo", "foo"))
  58. assert.True(objsEqual(20, 20))
  59. assert.True(objsEqual([]int{1, 2, 3}, []int{1, 2, 3}))
  60. assert.True(objsEqual(nil, nil))
  61. assert.True(!objsEqual(nil, "foo"))
  62. assert.True(objsEqual([]int{}, []int{}))
  63. assert.True(!objsEqual([]int{}, nil))
  64. }