forked from Shopify/go-lua
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparse_locals_test.go
More file actions
42 lines (39 loc) · 862 Bytes
/
parse_locals_test.go
File metadata and controls
42 lines (39 loc) · 862 Bytes
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
package lua
import (
"fmt"
"testing"
)
func TestTableConstruct(t *testing.T) {
l := NewState()
OpenLibraries(l)
snippets := []struct {
name string
code string
}{
{"empty", "local t = {}; return #t"},
{"one", "local t = {42}; return t[1]"},
{"three", "local t = {10, 20, 30}; return t[1]"},
{"hash", "local t = {x=1}; return t.x"},
{"mixed", "local t = {10, x=1}; return t[1]"},
{"len", "local t = {10, 20, 30}; return #t"},
}
for _, s := range snippets {
t.Run(s.name, func(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Fatalf("panic: %v", r)
}
}()
ll := NewState()
OpenLibraries(ll)
err := LoadString(ll, s.code)
if err != nil {
t.Fatalf("parse error: %v", err)
}
ll.Call(0, 1)
val := ll.ToValue(-1)
fmt.Printf("[%s] result: %v\n", s.name, val)
ll.Pop(1)
})
}
}