You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
moon/doc_test.go

143 lines
2.4 KiB
Go

package moon
import (
"fmt"
"testing"
)
func TestDoc(t *testing.T) {
doc, err := ReadString(`
name: "jordan"
`)
if err != nil {
t.Error(err)
return
}
var name string
if err := doc.Get("name", &name); err != nil {
t.Error(err)
return
}
if name != "jordan" {
t.Errorf("unexpected name value, expected 'jordan', saw '%s'", name)
}
}
func TestFill(t *testing.T) {
doc, err := ReadString(`
# this is just a comment
firstname: jordan
port: 9000
`)
if err != nil {
t.Error(err)
return
}
var dest struct {
FirstName string `name: firstname; required: true`
HostName string `name: hostname; default: localhost`
Port int `name: port; default: 9001`
}
if err := doc.Fill(&dest); err != nil {
t.Error(err)
return
}
if dest.FirstName != "jordan" {
t.Errorf("unexpected firstname value, expected 'jordan', saw '%s'", dest.FirstName)
}
if dest.HostName != "localhost" {
t.Errorf("unexpected hostname value, expected 'localhost', saw '%s'", dest.HostName)
}
if dest.Port != 9000 {
t.Errorf("unexpected port value, expected 9000, saw %d", dest.Port)
}
}
func ExampleDoc_Fill() {
input := `
name: jordan
age: 29
`
var config struct {
Name string `name: "name"`
Age int `name: "age"`
City string `name: "city" default: "Brooklyn"`
}
doc, err := ReadString(input)
if err != nil {
fmt.Printf("error reading input: %s", err)
return
}
if err := doc.Fill(&config); err != nil {
fmt.Printf("error filling config value: %s", err)
return
}
fmt.Println(config)
// Output: {jordan 29 Brooklyn}
}
func ExampleDoc_Get_one() {
input := `
name: jordan
age: 29
`
doc, err := ReadString(input)
if err != nil {
fmt.Printf("error reading input: %s", err)
return
}
var name string
if err := doc.Get("name", &name); err != nil {
fmt.Printf("error filling config value: %s", err)
return
}
fmt.Println(name)
// Output: jordan
}
func ExampleDoc_Get_two() {
input := `
@todd: {
name: todd
age: 38
}
@sean: {
name: sean
age: 34
}
@jordan: {
name: jordan
age: 29
}
brothers: [@todd @sean @jordan]
`
doc, err := ReadString(input)
if err != nil {
fmt.Printf("error reading input: %s", err)
return
}
var name string
if err := doc.Get("brothers/1/name", &name); err != nil {
fmt.Printf("error filling config value: %s", err)
return
}
fmt.Println(name)
// Output: sean
}