func (t *T) Errorf(format string, args ...interface{}) {
	t.context.incFailCount()
	t.context.log(t.decorate(fmt.Sprintf(format, args...)))
	t.test.Fail()
}
Errorf is equivalent to Logf followed by Fail
package testy
import (
	"bytes"
	"fmt"
	"reflect"
	"regexp"
	"runtime"
	"strconv"
	"strings"
	"sync"
	"testing"
)
type T struct {
	test      *testing.T
	context   *accumulator
	caseName  string
	label     string
	callDepth int
}
var nameStripper = regexp.MustCompile(`^.*\.`)
func New(t *testing.T) *T {
	var n string
	pc, _, _, ok := runtime.Caller(1)
	if ok {
		n = nameStripper.ReplaceAllLiteralString(runtime.FuncForPC(pc).Name(), "")
	} else {
		n = "Anonymous function"
	}
	return NewCase(t, n)
}
func NewCase(t *testing.T, name string) *T {
	return &T{test: t, caseName: name, callDepth: 1, context: &accumulator{}}
}
func (t T) Label(s ...interface{}) *T {
	t.label = strings.TrimSpace(fmt.Sprintln(s...)) + ": "
	return &t
}
func (t T) Uplevel(depth int) *T {
	t.callDepth += depth
	return &t
}
func (t *T) Done() string {
	return t.summary() + strings.Join(t.context.outputCopy(), "\n")
}
func (t T) FailCount() int {
	return t.context.getFailCount()
}
func (t T) Output() []string {
	return t.context.outputCopy()
}
func (t *T) True(cond bool) {
	if !cond {
		t.context.incFailCount()
		t.context.log(t.decorate("Expression was not true"))
		t.test.Fail()
	}
}
func (t *T) False(cond bool) {
	if cond {
		t.context.incFailCount()
		t.context.log(t.decorate("Expression was not false"))
		t.test.Fail()
	}
}
func checkNil(x interface{}) bool {
	if x == nil {
		return true
	}
	v := reflect.ValueOf(x)
	switch v.Kind() {
	case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
		return v.IsNil()
	}
	return false
}
func (t *T) Nil(got interface{}) {
	if !checkNil(got) {
		t.context.incFailCount()
		t.context.log(t.decorate("Expression was not nil"))
		t.test.Fail()
	}
}
func (t *T) NotNil(got interface{}) {
	if checkNil(got) {
		t.context.incFailCount()
		t.context.log(t.decorate("Expression was nil"))
		t.test.Fail()
	}
}
func (t *T) Equal(got, want interface{}) {
	if got == nil || want == nil {
		t.context.incFailCount()
		t.context.log(t.decorate(
			fmt.Sprintf("Can't safely compare nil values for equality:\n%s%s", diag("   Got", got), diag("Wanted", want))))
		t.test.Fail()
		return
	}
	if !reflect.DeepEqual(got, want) {
		t.context.incFailCount()
		t.context.log(t.decorate(
			fmt.Sprintf("Values were not equal:\n%s%s", diag("   Got", got), diag("Wanted", want))))
		t.test.Fail()
	}
}
func (t *T) Unequal(got, want interface{}) {
	if got == nil || want == nil {
		t.context.incFailCount()
		t.context.log(t.decorate(
			fmt.Sprintf("Can't safely compare nil values for equality:\n%s%s", diag("   Got", got), diag("Got", want))))
		t.test.Fail()
		return
	}
	if reflect.DeepEqual(got, want) {
		t.context.incFailCount()
		t.context.log(t.decorate(fmt.Sprintf("Values were not unequal:\n%s", diag("  Both", got))))
		t.test.Fail()
	}
}
func (t *T) Fail() {
	t.context.incFailCount()
	t.test.Fail()
}
func (t *T) FailNow() {
	t.context.incFailCount()
	t.test.FailNow()
}
func (t *T) Failed() bool {
	return t.test.Failed()
}
func (t *T) Log(args ...interface{}) {
	t.context.log(t.decorate(fmt.Sprintln(args...)))
}
func (t *T) Logf(format string, args ...interface{}) {
	t.context.log(t.decorate(fmt.Sprintf(format, args...)))
}
func (t *T) Error(args ...interface{}) {
	t.context.incFailCount()
	t.context.log(t.decorate(fmt.Sprintln(args...)))
	t.test.Fail()
}