func Expect(t Errorf, have, want interface{}, iter ...int) {
	if !reflect.DeepEqual(have, want) {
		file, line := caller()
		t.Errorf(equal, file, line, exampleNum(iter), have, have, want, want)
	}
}
Expect calls t.Error and prints a nice comparison message when have != want.
Especially useful in table-based tests when passing the loop index as iter.
package st
import (
	"fmt"
	"reflect"
	"runtime"
	"strings"
)
const (
	equal   = "\n%s:%d: should be == \n%s \thave: (%T) %+v\n\twant: (%T) %+v"
	unequal = "\n%s:%d: should be != \n%s \thave: (%T) %+v\n\tand : (%T) %+v"
)
type Errorf interface {
	Errorf(format string, args ...interface{})
}
type Fatalf interface {
	Fatalf(format string, args ...interface{})
}