-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
atom_test.go
54 lines (42 loc) · 1.44 KB
/
atom_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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package predicates
import (
"testing"
"github.com/guregu/predicates/internal"
"github.com/ichiban/prolog/engine"
)
func TestUpcaseAtom(t *testing.T) {
p := internal.NewTestProlog()
p.Register2("upcase_atom", UpcaseAtom)
t.Run("lower is variable", func(t *testing.T) {
t.Run("atom is lowercase", p.Expect([]map[string]engine.Term{
{"X": engine.Atom("ABC")},
}, `upcase_atom('abc', X).`))
t.Run("atom is uppercase", p.Expect([]map[string]engine.Term{
{"X": engine.Atom("ABC")},
}, `upcase_atom('ABC', X).`))
})
t.Run("lower is ground", func(t *testing.T) {
t.Run("atom is lowercase", p.Expect(internal.TestOK,
`upcase_atom('abc', 'ABC'), OK = true.`))
t.Run("atom is uppercase", p.Expect(internal.TestOK,
`upcase_atom('ABC', 'ABC'), OK = true.`))
})
}
func TestDowncaseAtom(t *testing.T) {
p := internal.NewTestProlog()
p.Register2("downcase_atom", DowncaseAtom)
t.Run("lower is variable", func(t *testing.T) {
t.Run("atom is lowercase", p.Expect([]map[string]engine.Term{
{"X": engine.Atom("abc")},
}, `downcase_atom('abc', X).`))
t.Run("atom is uppercase", p.Expect([]map[string]engine.Term{
{"X": engine.Atom("abc")},
}, `downcase_atom('ABC', X).`))
})
t.Run("lower is ground", func(t *testing.T) {
t.Run("atom is lowercase", p.Expect(internal.TestOK,
`downcase_atom('abc', 'abc'), OK = true.`))
t.Run("atom is uppercase", p.Expect(internal.TestOK,
`downcase_atom('ABC', 'abc'), OK = true.`))
})
}