func ShouldNotContainKey(actual interface{}, expected ...interface{}) string {
	if fail := need(1, expected); fail != success {
		return fail
	}
	keys, isMap := mapKeys(actual)
	if !isMap {
		return fmt.Sprintf(shouldHaveBeenAValidMap, reflect.TypeOf(actual))
	}
	if keyFound(keys, expected[0]) {
		return fmt.Sprintf(shouldNotHaveContainedKey, reflect.TypeOf(actual), expected)
	}
	return ""
}
ShouldNotContainKey receives exactly two parameters. The first is a map and the
second is a proposed absent key. Keys are compared with a simple '=='.
package assertions
import (
	"fmt"
	"reflect"
	"github.com/smartystreets/assertions/internal/oglematchers"
)
func ShouldContain(actual interface{}, expected ...interface{}) string {
	if fail := need(1, expected); fail != success {
		return fail
	}
	if matchError := oglematchers.Contains(expected[0]).Matches(actual); matchError != nil {
		typeName := reflect.TypeOf(actual)
		if fmt.Sprintf("%v", matchError) == "which is not a slice or array" {
			return fmt.Sprintf(shouldHaveBeenAValidCollection, typeName)
		}
		return fmt.Sprintf(shouldHaveContained, typeName, expected[0])
	}
	return success
}
func ShouldNotContain(actual interface{}, expected ...interface{}) string {
	if fail := need(1, expected); fail != success {
		return fail
	}
	typeName := reflect.TypeOf(actual)
	if matchError := oglematchers.Contains(expected[0]).Matches(actual); matchError != nil {
		if fmt.Sprintf("%v", matchError) == "which is not a slice or array" {
			return fmt.Sprintf(shouldHaveBeenAValidCollection, typeName)
		}
		return success
	}
	return fmt.Sprintf(shouldNotHaveContained, typeName, expected[0])
}
func ShouldContainKey(actual interface{}, expected ...interface{}) string {
	if fail := need(1, expected); fail != success {
		return fail
	}
	keys, isMap := mapKeys(actual)
	if !isMap {
		return fmt.Sprintf(shouldHaveBeenAValidMap, reflect.TypeOf(actual))
	}
	if !keyFound(keys, expected[0]) {
		return fmt.Sprintf(shouldHaveContainedKey, reflect.TypeOf(actual), expected)
	}
	return ""
}