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