1package fakes 2 3import ( 4 "fmt" 5 "strings" 6) 7 8type FakeDigestCalculator struct { 9 calculateInputs map[string]CalculateInput 10 CalculateStringInputs map[string]string 11} 12 13func NewFakeDigestCalculator() *FakeDigestCalculator { 14 return &FakeDigestCalculator{} 15} 16 17type CalculateInput struct { 18 DigestStr string 19 Err error 20} 21 22func (c *FakeDigestCalculator) Calculate(path string) (string, error) { 23 calculateInput := c.calculateInputs[path] 24 return calculateInput.DigestStr, calculateInput.Err 25} 26 27func (c *FakeDigestCalculator) CalculateString(data string) string { 28 if sha1, found := c.CalculateStringInputs[data]; found { 29 return sha1 30 } 31 32 var availableData []string 33 for key, _ := range c.CalculateStringInputs { 34 availableData = append(availableData, key) 35 } 36 37 panic(fmt.Sprintf("Did not find SHA1 result for '%s'. Available result keys:'%s'", data, strings.Join(availableData, ", "))) 38} 39 40func (c *FakeDigestCalculator) SetCalculateBehavior(calculateInputs map[string]CalculateInput) { 41 c.calculateInputs = calculateInputs 42} 43