github.com/square/finch@v0.0.0-20240412205204-6530c03e2b96/test/mock/data_generator.go (about) 1 package mock 2 3 import ( 4 "fmt" 5 6 "github.com/square/finch/data" 7 ) 8 9 type DataGeneratorFactory struct { 10 MakeFunc func(name, dataKey string, params map[string]string) (data.Generator, error) 11 } 12 13 func (f DataGeneratorFactory) Make(name, dataKey string, params map[string]string) (data.Generator, error) { 14 if f.MakeFunc != nil { 15 return f.MakeFunc(name, dataKey, params) 16 } 17 return nil, fmt.Errorf("MakeFunc not set in mock.DataGeneratorFactory") 18 } 19 20 var _ data.Factory = DataGeneratorFactory{} 21 22 type DataGenerator struct { 23 FormatFunc func() (uint, string) 24 CopyFunc func() data.Generator 25 ValuesFunc func(data.RunCount) []interface{} 26 ScanFunc func(any interface{}) error 27 NameFunc func() string 28 } 29 30 var _ data.Generator = DataGenerator{} 31 32 func (g DataGenerator) Format() (uint, string) { 33 if g.FormatFunc != nil { 34 return g.FormatFunc() 35 } 36 return 0, "" 37 } 38 39 func (g DataGenerator) Copy() data.Generator { 40 if g.CopyFunc != nil { 41 return g.CopyFunc() 42 } 43 return g 44 } 45 46 func (g DataGenerator) Values(rc data.RunCount) []interface{} { 47 if g.ValuesFunc != nil { 48 return g.ValuesFunc(rc) 49 } 50 return nil 51 } 52 53 func (g DataGenerator) Scan(any interface{}) error { 54 if g.ScanFunc != nil { 55 return g.ScanFunc(any) 56 } 57 return nil 58 } 59 60 func (g DataGenerator) Name() string { 61 if g.NameFunc != nil { 62 return g.NameFunc() 63 } 64 return "mock" 65 }