...

Source file src/github.com/jmespath/go-jmespath/api_test.go

Documentation: github.com/jmespath/go-jmespath

     1  package jmespath
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/jmespath/go-jmespath/internal/testify/assert"
     8  )
     9  
    10  func TestValidUncompiledExpressionSearches(t *testing.T) {
    11  	assert := assert.New(t)
    12  	var j = []byte(`{"foo": {"bar": {"baz": [0, 1, 2, 3, 4]}}}`)
    13  	var d interface{}
    14  	err := json.Unmarshal(j, &d)
    15  	assert.Nil(err)
    16  	result, err := Search("foo.bar.baz[2]", d)
    17  	assert.Nil(err)
    18  	assert.Equal(2.0, result)
    19  }
    20  
    21  func TestValidPrecompiledExpressionSearches(t *testing.T) {
    22  	assert := assert.New(t)
    23  	data := make(map[string]interface{})
    24  	data["foo"] = "bar"
    25  	precompiled, err := Compile("foo")
    26  	assert.Nil(err)
    27  	result, err := precompiled.Search(data)
    28  	assert.Nil(err)
    29  	assert.Equal("bar", result)
    30  }
    31  
    32  func TestInvalidPrecompileErrors(t *testing.T) {
    33  	assert := assert.New(t)
    34  	_, err := Compile("not a valid expression")
    35  	assert.NotNil(err)
    36  }
    37  
    38  func TestInvalidMustCompilePanics(t *testing.T) {
    39  	defer func() {
    40  		r := recover()
    41  		assert.NotNil(t, r)
    42  	}()
    43  	MustCompile("not a valid expression")
    44  }
    45  

View as plain text