// Code generated by "stringer -type=Status assertion.go"; DO NOT EDIT.

package moduletest

import "strconv"

func _() {
	// An "invalid array index" compiler error signifies that the constant values have changed.
	// Re-run the stringer command to generate them again.
	var x [1]struct{}
	_ = x[Pending-63]
	_ = x[Passed-80]
	_ = x[Failed-70]
	_ = x[Error-69]
}

const (
	_Status_name_0 = "Pending"
	_Status_name_1 = "ErrorFailed"
	_Status_name_2 = "Passed"
)

var (
	_Status_index_1 = [...]uint8{0, 5, 11}
)

func (i Status) String() string {
	switch {
	case i == 63:
		return _Status_name_0
	case 69 <= i && i <= 70:
		i -= 69
		return _Status_name_1[_Status_index_1[i]:_Status_index_1[i+1]]
	case i == 80:
		return _Status_name_2
	default:
		return "Status(" + strconv.FormatInt(int64(i), 10) + ")"
	}
}
