1// Copyright (c) 2021, Peter Ohler, All rights reserved.
2
3package asm_test
4
5import (
6	"testing"
7
8	"github.com/ohler55/ojg/asm"
9	"github.com/ohler55/ojg/sen"
10	"github.com/ohler55/ojg/tt"
11)
12
13func TestMod(t *testing.T) {
14	root := testPlan(t,
15		`[
16           [set $.asm.a [mod 7 3]]
17           [set $.asm.b [mod 6 3]]
18         ]`,
19		"{src: []}",
20	)
21	opt := sopt
22	opt.Indent = 2
23	tt.Equal(t,
24		`{
25  a: 1
26  b: 0
27}`, sen.String(root["asm"], &opt))
28}
29
30func TestModArgCount(t *testing.T) {
31	p := asm.NewPlan([]interface{}{
32		[]interface{}{"mod", 1, 2, 3},
33	})
34	err := p.Execute(map[string]interface{}{})
35	tt.NotNil(t, err)
36}
37
38func TestModArgType(t *testing.T) {
39	p := asm.NewPlan([]interface{}{
40		[]interface{}{"mod", 1, true},
41	})
42	err := p.Execute(map[string]interface{}{})
43	tt.NotNil(t, err)
44}
45
46func TestModArgType2(t *testing.T) {
47	p := asm.NewPlan([]interface{}{
48		[]interface{}{"mod", true, 1},
49	})
50	err := p.Execute(map[string]interface{}{})
51	tt.NotNil(t, err)
52}
53