Skip to content

Commit d3db691

Browse files
committed
test(function): simple test
1 parent 2852564 commit d3db691

2 files changed

Lines changed: 39 additions & 4 deletions

File tree

function.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ var (
1313

1414
type Function func(map[string]string) (Result, error)
1515

16-
func NewFunction(s string) (Function, error) {
16+
func NewFunction(s string) (Function, int, error) {
1717
splits := strings.Split(s, "->")
1818
if len(splits) != 2 {
19-
return nil, errors.Join(ErrInvalidFunction, errors.New("a function is defined by 'args -> expression'"))
19+
return nil, 0, errors.Join(ErrInvalidFunction, errors.New("a function is defined by 'args -> expression'"))
2020
}
2121
before := splits[0]
22-
expression := splits[1]
22+
expression := strings.TrimSpace(splits[1])
2323
var params []string
2424
for _, p := range strings.Split(before, ",") {
2525
params = append(params, strings.TrimSpace(p))
@@ -37,5 +37,5 @@ func NewFunction(s string) (Function, error) {
3737
cp = strings.ReplaceAll(cp, p, v)
3838
}
3939
return Parse(cp)
40-
}, nil
40+
}, len(params), nil
4141
}

function_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package gomath
2+
3+
import "testing"
4+
5+
func TestNewFunction(t *testing.T) {
6+
f, n, err := NewFunction("x -> x^2")
7+
if err != nil {
8+
t.Fatal(err)
9+
}
10+
if n != 1 {
11+
t.Errorf("got %d, want 1", n)
12+
}
13+
result, err := f(map[string]string{"x": "5"})
14+
if err != nil {
15+
t.Fatal(err)
16+
}
17+
if result.String() != "25" {
18+
t.Errorf("got %s, want 25", result.String())
19+
}
20+
21+
f, n, err = NewFunction("x, y -> x^y")
22+
if err != nil {
23+
t.Fatal(err)
24+
}
25+
if n != 2 {
26+
t.Errorf("got %d, want 2", n)
27+
}
28+
result, err = f(map[string]string{"x": "5", "y": "2"})
29+
if err != nil {
30+
t.Fatal(err)
31+
}
32+
if result.String() != "25" {
33+
t.Errorf("got %s, want 25", result.String())
34+
}
35+
}

0 commit comments

Comments
 (0)