File: config_test.go

package info (click to toggle)
golang-github-siddontang-go 0.0~git20170517.0.cb568a3-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 492 kB
  • sloc: makefile: 3
file content (79 lines) | stat: -rw-r--r-- 1,476 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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)
}