-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfuncs_test.go
36 lines (28 loc) · 837 Bytes
/
funcs_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package expressions_test
import (
"fmt"
"math/big"
"strings"
exprs "github.com/zephyrtronium/expressions"
)
type nargin struct{}
func (nargin) CanCall(n int) bool {
return true
}
func (nargin) Call(ctx *exprs.Context, invoc []*big.Float, semis []int, r *big.Float) error {
r.SetInt64(int64(len(invoc)))
return nil
}
func ExampleFunc() {
ctx := exprs.NewContext(exprs.Prec(32))
a, _ := exprs.Parse(strings.NewReader("nargin"), exprs.ParseFunc("nargin", nargin{}))
b, _ := exprs.Parse(strings.NewReader("nargin 100"), exprs.ParseFunc("nargin", nargin{}))
c, _ := exprs.Parse(strings.NewReader("nargin{3, 2, 1}"), exprs.ParseFunc("nargin", nargin{}))
fmt.Println(ctx.Eval(a), a)
fmt.Println(ctx.Eval(b), b)
fmt.Println(ctx.Eval(c), c)
// Output:
// 0 (nargin[])
// 1 (nargin[(100)])
// 3 (nargin[(3), (2), (1)])
}