basic version
This commit is contained in:
106
conf_test.go
Normal file
106
conf_test.go
Normal file
@@ -0,0 +1,106 @@
|
||||
package conf
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var testConf = []byte(`port=10000
|
||||
# removed
|
||||
two = two words
|
||||
commas = abc, def, ghi
|
||||
token=test
|
||||
bool1=1
|
||||
bool2=true
|
||||
|
||||
editor = vim
|
||||
distance=13.42
|
||||
floats=0.5,2.37,6
|
||||
floatswithstring = 0.5, hello, 0.9
|
||||
no missedme
|
||||
color`)
|
||||
|
||||
func TestPackage(t *testing.T) {
|
||||
r := bytes.NewReader(testConf)
|
||||
c := parseReader(r)
|
||||
if _, err := c.Get("floatswithstring").Float64Slice(); err == nil {
|
||||
t.Log("Float64Slice accepting incorrect values")
|
||||
t.Fail()
|
||||
}
|
||||
if _, err := c.Get("floats").Float64Slice(); err != nil {
|
||||
t.Log("Float64Slice failing on correct values")
|
||||
t.Fail()
|
||||
}
|
||||
if v := c.Get("token").String(); v != "test" {
|
||||
t.Log("failed finding key value")
|
||||
t.Fail()
|
||||
}
|
||||
if v := c.Get("editor").String(); v != "vim" {
|
||||
t.Log("failed finding key value")
|
||||
t.Fail()
|
||||
}
|
||||
if v, _ := c.Get("port").Int(); v != 10000 {
|
||||
t.Log("failed finding int")
|
||||
t.Fail()
|
||||
}
|
||||
if v, _ := c.Get("distance").Float64(); v != 13.42 {
|
||||
t.Log("failed finding key value")
|
||||
t.Fail()
|
||||
}
|
||||
if c.HasOption("color") != true {
|
||||
t.Log("failed finding option")
|
||||
t.Fail()
|
||||
}
|
||||
if v, _ := c.Get("bool1").Bool(); v != true {
|
||||
t.Log("failed finding bool1 value")
|
||||
t.Fail()
|
||||
}
|
||||
if v, _ := c.Get("bool2").Bool(); v != true {
|
||||
t.Log("failed finding bool2 value")
|
||||
t.Fail()
|
||||
}
|
||||
if v := c.Get("two").String(); v != "two words" {
|
||||
t.Log("failed finding key value")
|
||||
t.Fail()
|
||||
}
|
||||
if v := c.Get("commas").String(); v != "abc, def, ghi" {
|
||||
t.Log("failed finding key value")
|
||||
t.Fail()
|
||||
}
|
||||
if v := c.Get("nonexistent").String(); v != "" {
|
||||
t.Log("returned non-empty string for nonexistent key")
|
||||
t.Fail()
|
||||
}
|
||||
if c.HasOption("removed") {
|
||||
t.Log("commented out line shows up in config")
|
||||
t.Fail()
|
||||
}
|
||||
splitted := c.Get("commas").StringSlice()
|
||||
if len(splitted) != 3 {
|
||||
t.Log("could not split string")
|
||||
t.Fail()
|
||||
}
|
||||
abc := splitted[0]
|
||||
ghi := splitted[2]
|
||||
if abc != "abc" || ghi != "ghi" {
|
||||
t.Log("Split() returned incorrect values")
|
||||
t.Fail()
|
||||
}
|
||||
if c.HasOption("no") != true {
|
||||
t.Log("should capture one option per line even if line holds two")
|
||||
t.Fail()
|
||||
}
|
||||
if c.HasOption("missedme") == true {
|
||||
t.Log("should only capture one option per line")
|
||||
t.Fail()
|
||||
}
|
||||
st := Setting{}
|
||||
if v, err := st.Float64(); v != 0.0 || err == nil {
|
||||
t.Log("empty string erroneously converts to float")
|
||||
t.Fail()
|
||||
}
|
||||
if def := c.GetDefault("non-existant-key", "myvalue"); def.Value != "myvalue" {
|
||||
t.Log("GetDefault fails to apply default value")
|
||||
t.Fail()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user