Files
chaisql/internal/expr/functions/definition_test.go
Jean Hadrien Chabran e556fc3048 Add functions packages support (#419)
* Add packaged functions support

* Add tests for math.floor func

* Export FunctionsTable

* Extract func stuff into its own package

* Rename stuff

* Fix tests

* Move doc package to cmd/genji

* Adjust naming, typos
2021-07-17 13:07:16 +02:00

59 lines
1.4 KiB
Go

package functions_test
import (
"testing"
"github.com/genjidb/genji/document"
"github.com/genjidb/genji/internal/expr"
"github.com/genjidb/genji/internal/expr/functions"
"github.com/stretchr/testify/require"
)
func TestDefinitions(t *testing.T) {
packages := functions.DefaultPackages()
def, err := packages.GetFunc("", "count")
require.NoError(t, err)
t.Run("String()", func(t *testing.T) {
require.Equal(t, "count(arg1)", def.String())
})
t.Run("Function()", func(t *testing.T) {
fexpr, err := def.Function(expr.Path(document.NewPath("a")))
require.NoError(t, err)
require.NotNil(t, fexpr)
})
t.Run("Arity()", func(t *testing.T) {
require.Equal(t, 1, def.Arity())
})
}
func TestPackages(t *testing.T) {
table := functions.DefaultPackages()
t.Run("OK GetFunc()", func(t *testing.T) {
def, err := table.GetFunc("math", "floor")
require.NoError(t, err)
require.Equal(t, "floor", def.Name())
def, err = table.GetFunc("", "count")
require.NoError(t, err)
require.Equal(t, "count", def.Name())
})
t.Run("NOK GetFunc() missing func", func(t *testing.T) {
def, err := table.GetFunc("math", "foobar")
require.Error(t, err)
require.Nil(t, def)
def, err = table.GetFunc("", "foobar")
require.Error(t, err)
require.Nil(t, def)
})
t.Run("NOK GetFunc() missing package", func(t *testing.T) {
def, err := table.GetFunc("foobar", "foobar")
require.Error(t, err)
require.Nil(t, def)
})
}