package main | |
import ( | |
"fmt" | |
) | |
type Tape struct { | |
stimuli []interface{} | |
responses []interface{} | |
} | |
func (r *Tape) Record(call interface{}) interface{} { | |
r.stimuli = append(r.stimuli, call) | |
if len(r.responses) < 1 { | |
return fmt.Errorf("Record(%#v) had no response", call) | |
} | |
resp := r.responses[0] | |
r.responses = r.responses[1:] | |
return resp | |
} | |
func (r *Tape) SetResponses(responses []interface{}) { | |
r.responses = responses | |
} | |
func (r *Tape) Rewind() { | |
r.stimuli = make([]interface{}, 0) | |
r.responses = make([]interface{}, 0) | |
} | |
func (r *Tape) Play() []interface{} { | |
return r.stimuli | |
} | |
func NewTape() *Tape { | |
tape := new(Tape) | |
tape.Rewind() | |
return tape | |
} |