e2etest/newe2e_variations.go (36 lines of code) (raw):
package e2etest
import "fmt"
// VariationDataContainer acts like a reverse linked list, sort of like a Context.
// It, too implements VariationData, if for some reason that's necessary
type VariationDataContainer struct {
Previous *VariationDataContainer
callerID string
Value any
}
func (vdc *VariationDataContainer) Insert(callerID string, value any) *VariationDataContainer {
return &VariationDataContainer{
Previous: vdc,
callerID: callerID,
Value: value,
}
}
func (vdc *VariationDataContainer) Lookup(callerID string) (any, bool) {
// Traverse all VariationDataContainers attached
dc := vdc
for dc != nil {
if dc.callerID == callerID {
return dc.Value, true
}
dc = dc.Previous
}
return nil, false
}
func (vdc *VariationDataContainer) GetTestName() string {
if vdc == nil {
return "Test"
}
out := ""
// Traverse all VariationDataContainers attached
dc := vdc
for dc != nil {
out = fmt.Sprint(dc.Value) + out
dc = dc.Previous
}
return out
}