mock: Add mock config interface
This commit is contained in:
parent
ea41137c9c
commit
7e5a78fef7
26
mock/config.go
Normal file
26
mock/config.go
Normal file
@ -0,0 +1,26 @@
|
||||
package mock
|
||||
|
||||
import "iter"
|
||||
import "git.tebibyte.media/sashakoshka/camfish"
|
||||
|
||||
var _ camfish.Config = new(Config)
|
||||
|
||||
// Config implements camfish.Config.
|
||||
type Config map[string] []string
|
||||
|
||||
func (config Config) Get(key string) string {
|
||||
list, ok := config[key]
|
||||
if !ok { return "" }
|
||||
if len(list) == 0 { return "" }
|
||||
return list[0]
|
||||
}
|
||||
|
||||
func (config Config) GetAll(key string) iter.Seq2[int, string] {
|
||||
return func(yield func(int, string) bool) {
|
||||
list, ok := config[key]
|
||||
if !ok { return }
|
||||
for index, value := range list {
|
||||
yield(index, value)
|
||||
}
|
||||
}
|
||||
}
|
46
mock/config_test.go
Normal file
46
mock/config_test.go
Normal file
@ -0,0 +1,46 @@
|
||||
package mock
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestConfig(test *testing.T) {
|
||||
config := Config {
|
||||
"single": []string { "aslkdjasd" },
|
||||
"multiple": []string { "item0", "item1" },
|
||||
"empty": []string { },
|
||||
}
|
||||
if correct, got := config.Get("single"), "aslkdjasd"; correct != got {
|
||||
test.Fatal("not equal:", got)
|
||||
}
|
||||
if correct, got := config.Get("multiple"), "item0"; correct != got {
|
||||
test.Fatal("not equal:", got)
|
||||
}
|
||||
if correct, got := config.Get("empty"), ""; correct != got {
|
||||
test.Fatal("not equal:", got)
|
||||
}
|
||||
if correct, got := config.Get("non-existent"), ""; correct != got {
|
||||
test.Fatal("not equal:", got)
|
||||
}
|
||||
for index, value := range config.GetAll("single") {
|
||||
if index < 0 { test.Fatal("index too small") }
|
||||
if index > 0 { test.Fatal("index too large") }
|
||||
if value != "aslkdjasd" {
|
||||
test.Fatal("not equal:", value)
|
||||
}
|
||||
}
|
||||
for index, value := range config.GetAll("multiple") {
|
||||
if index < 0 { test.Fatal("index too small") }
|
||||
if index > 1 { test.Fatal("index too large") }
|
||||
switch value {
|
||||
case "item0": if index != 0 { test.Fatal("not equal:", index, value) }
|
||||
case "item1": if index != 1 { test.Fatal("not equal:", index, value) }
|
||||
default:
|
||||
test.Fatal("should not have value:", index, value)
|
||||
}
|
||||
}
|
||||
for index, value := range config.GetAll("empty") {
|
||||
test.Fatal("should not have value:", index, value)
|
||||
}
|
||||
for index, value := range config.GetAll("non-existent") {
|
||||
test.Fatal("should not have value:", index, value)
|
||||
}
|
||||
}
|
3
mock/doc.go
Normal file
3
mock/doc.go
Normal file
@ -0,0 +1,3 @@
|
||||
// Package mock implements mock interface implementations and other utilities
|
||||
// for testing actors.
|
||||
package mock
|
Loading…
Reference in New Issue
Block a user