You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.9 KiB
85 lines
1.9 KiB
package conf_test |
|
|
|
import ( |
|
. "conf" |
|
"testing" |
|
"strconv" |
|
) |
|
|
|
const confFile = ` |
|
[default] |
|
host = example.com |
|
port = 43 |
|
compression = on |
|
active = false |
|
|
|
[service-1] |
|
port = 443 |
|
url = http://%(host)s/something |
|
` |
|
|
|
type stringtest struct { |
|
section string |
|
option string |
|
answer string |
|
} |
|
|
|
type inttest struct { |
|
section string |
|
option string |
|
answer int |
|
} |
|
|
|
type booltest struct { |
|
section string |
|
option string |
|
answer bool |
|
} |
|
|
|
var testSet = []interface{}{ |
|
stringtest{"", "host", "example.com"}, |
|
inttest{"default", "port", 43}, |
|
booltest{"default", "compression", true}, |
|
booltest{"default", "active", false}, |
|
inttest{"service-1", "port", 443}, |
|
stringtest{"service-1", "url", "http://example.com/something"}, |
|
} |
|
|
|
func TestBuild(t *testing.T) { |
|
c, err := ReadConfigBytes([]byte(confFile)) |
|
if err != nil { |
|
t.Error(err.Error()) |
|
} |
|
|
|
for _, element := range testSet { |
|
switch element.(type) { |
|
case stringtest: |
|
e := element.(stringtest) |
|
ans, err := c.GetString(e.section, e.option) |
|
if err != nil { |
|
t.Error("c.GetString(\"" + e.section + "\",\"" + e.option + "\") returned error: " + err.Error()) |
|
} |
|
if ans != e.answer { |
|
t.Error("c.GetString(\"" + e.section + "\",\"" + e.option + "\") returned incorrect answer: " + ans) |
|
} |
|
case inttest: |
|
e := element.(inttest) |
|
ans, err := c.GetInt(e.section, e.option) |
|
if err != nil { |
|
t.Error("c.GetInt(\"" + e.section + "\",\"" + e.option + "\") returned error: " + err.Error()) |
|
} |
|
if ans != e.answer { |
|
t.Error("c.GetInt(\"" + e.section + "\",\"" + e.option + "\") returned incorrect answer: " + strconv.Itoa(ans)) |
|
} |
|
case booltest: |
|
e := element.(booltest) |
|
ans, err := c.GetBool(e.section, e.option) |
|
if err != nil { |
|
t.Error("c.GetBool(\"" + e.section + "\",\"" + e.option + "\") returned error: " + err.Error()) |
|
} |
|
if ans != e.answer { |
|
t.Error("c.GetBool(\"" + e.section + "\",\"" + e.option + "\") returned incorrect answer") |
|
} |
|
} |
|
} |
|
}
|
|
|