siddontang.golib/config/config_test.go

80 lines
1.4 KiB
Go

package config
import (
"bytes"
"fmt"
"testing"
)
func testConfig(cfg *Config, t *testing.T) {
if v, err := cfg.GetBool("a"); err != nil {
t.Fatal(err)
} else if v != true {
t.Fatal(v)
}
checkInt := func(t *testing.T, cfg *Config, key string, check int) {
if v, err := cfg.GetInt(key); err != nil {
t.Fatal(err)
} else if v != check {
t.Fatal(fmt.Sprintf("%s %d != %d", key, v, check))
}
}
checkInt(t, cfg, "b", 100)
checkInt(t, cfg, "kb", 1024)
checkInt(t, cfg, "k", 1000)
checkInt(t, cfg, "mb", 1024*1024)
checkInt(t, cfg, "m", 1000*1000)
checkInt(t, cfg, "gb", 1024*1024*1024)
checkInt(t, cfg, "g", 1000*1000*1000)
}
func TestGetConfig(t *testing.T) {
cfg := NewConfig()
cfg.Values["a"] = "true"
cfg.Values["b"] = "100"
cfg.Values["kb"] = "1kb"
cfg.Values["k"] = "1k"
cfg.Values["mb"] = "1mb"
cfg.Values["m"] = "1m"
cfg.Values["gb"] = "1gb"
cfg.Values["g"] = "1g"
testConfig(cfg, t)
}
func TestReadWriteConfig(t *testing.T) {
var b = []byte(`
# comment
a = true
b = 100
kb = 1kb
k = 1k
mb = 1mb
m = 1m
gb = 1gb
g = 1g
`)
cfg, err := ReadConfig(b)
if err != nil {
t.Fatal(err)
}
testConfig(cfg, t)
var buf bytes.Buffer
if err := cfg.Write(&buf); err != nil {
t.Fatal(err)
}
cfg.Values = make(map[string]string)
if err := cfg.Read(&buf); err != nil {
t.Fatal(err)
}
testConfig(cfg, t)
}