177 lines
2.5 KiB
Go
177 lines
2.5 KiB
Go
|
package gluayaml
|
||
|
|
||
|
import (
|
||
|
"github.com/yuin/gopher-lua"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestLoader(t *testing.T) {
|
||
|
L := lua.NewState()
|
||
|
defer L.Close()
|
||
|
|
||
|
L.PreloadModule("yaml", Loader)
|
||
|
if err := L.DoString(`
|
||
|
local yaml = require("yaml")
|
||
|
`); err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestParse(t *testing.T) {
|
||
|
L := lua.NewState()
|
||
|
defer L.Close()
|
||
|
|
||
|
L.PreloadModule("yaml", Loader)
|
||
|
if err := L.DoString(`
|
||
|
local yaml = require("yaml")
|
||
|
|
||
|
local str = [==[
|
||
|
- aaa
|
||
|
- bbb
|
||
|
- ccc
|
||
|
]==]
|
||
|
|
||
|
local tb, err = yaml.parse(str)
|
||
|
if tb == nil then
|
||
|
error("parse error" .. err)
|
||
|
end
|
||
|
|
||
|
assert(tb[1] == "aaa")
|
||
|
assert(tb[2] == "bbb")
|
||
|
assert(tb[3] == "ccc")
|
||
|
|
||
|
`); err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestParse2(t *testing.T) {
|
||
|
L := lua.NewState()
|
||
|
defer L.Close()
|
||
|
|
||
|
L.PreloadModule("yaml", Loader)
|
||
|
if err := L.DoString(`
|
||
|
local yaml = require("yaml")
|
||
|
|
||
|
local str = [==[
|
||
|
aaa: bbb
|
||
|
bbb: ccc
|
||
|
]==]
|
||
|
|
||
|
local tb, err = yaml.parse(str)
|
||
|
if tb == nil then
|
||
|
error("parse error" .. err)
|
||
|
end
|
||
|
|
||
|
assert(tb.aaa == "bbb")
|
||
|
assert(tb.bbb == "ccc")
|
||
|
|
||
|
`); err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestParse3(t *testing.T) {
|
||
|
L := lua.NewState()
|
||
|
defer L.Close()
|
||
|
|
||
|
L.PreloadModule("yaml", Loader)
|
||
|
if err := L.DoString(`
|
||
|
local yaml = require("yaml")
|
||
|
|
||
|
local str = [==[
|
||
|
aaa: true
|
||
|
bbb: false
|
||
|
]==]
|
||
|
|
||
|
local tb, err = yaml.parse(str)
|
||
|
if tb == nil then
|
||
|
error("parse error" .. err)
|
||
|
end
|
||
|
|
||
|
assert(tb.aaa == true)
|
||
|
assert(tb.bbb == false)
|
||
|
|
||
|
`); err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestParse4(t *testing.T) {
|
||
|
L := lua.NewState()
|
||
|
defer L.Close()
|
||
|
|
||
|
L.PreloadModule("yaml", Loader)
|
||
|
if err := L.DoString(`
|
||
|
local yaml = require("yaml")
|
||
|
|
||
|
local str = [==[
|
||
|
aaa: 1234
|
||
|
bbb: 1234.567
|
||
|
ccc: [aa, bb, cc]
|
||
|
ddd:
|
||
|
- aa
|
||
|
- bb
|
||
|
eee:
|
||
|
aa : bb
|
||
|
bb : cc
|
||
|
|
||
|
]==]
|
||
|
|
||
|
local tb, err = yaml.parse(str)
|
||
|
if tb == nil then
|
||
|
error("parse error" .. err)
|
||
|
end
|
||
|
|
||
|
assert(tb.aaa == 1234)
|
||
|
assert(tb.bbb == 1234.567)
|
||
|
assert(tb.ccc[1] == "aa")
|
||
|
assert(tb.ccc[2] == "bb")
|
||
|
assert(tb.ccc[3] == "cc")
|
||
|
assert(tb.ddd[1] == "aa")
|
||
|
assert(tb.ddd[2] == "bb")
|
||
|
assert(tb.eee.aa == "bb")
|
||
|
assert(tb.eee.bb == "cc")
|
||
|
|
||
|
`); err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestParseError(t *testing.T) {
|
||
|
L := lua.NewState()
|
||
|
defer L.Close()
|
||
|
|
||
|
L.PreloadModule("yaml", Loader)
|
||
|
if err := L.DoString(`
|
||
|
local yaml = require("yaml")
|
||
|
|
||
|
local str = [==[
|
||
|
- aaa
|
||
|
aaaaa
|
||
|
- bbb
|
||
|
- ccc
|
||
|
]==]
|
||
|
|
||
|
local tb, err = yaml.parse(str)
|
||
|
assert(tb == nil)
|
||
|
|
||
|
|
||
|
`); err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestDump(t *testing.T) {
|
||
|
L := lua.NewState()
|
||
|
defer L.Close()
|
||
|
|
||
|
L.PreloadModule("yaml", Loader)
|
||
|
if err := L.DoString(`
|
||
|
local yaml = require("yaml")
|
||
|
|
||
|
`); err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
}
|