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  }