mirror of https://github.com/siddontang/go.git
80 lines
1.4 KiB
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)
|
|
}
|