package stub

import (
	"errors"
	"strconv"
)

var (
	ErrCheck = errors.New("one or more arguments did not match")
)

// UniqueError is an error that only equivalates to another [UniqueError] with
// the same magic value.
type UniqueError uintptr

func (e UniqueError) Error() string {
	return "unique error " +
		strconv.FormatUint(uint64(e), 10) +
		" injected by the test suite"
}

func (e UniqueError) Is(target error) bool {
	u, ok := errors.AsType[UniqueError](target)
	return ok && e == u
}
