package cmp import "fmt" // Ordering is the result of a comparison between two values. type Ordering int const ( Less Ordering = iota - 1 // Less represents an ordered value where a compared value is less than another. Equal // Equal represents an ordered value where a compared value is equal to another. Greater // Greater represents an ordered value where a compared value is greater than another. ) // Then returns the receiver if it's equal to Equal, otherwise returns the receiver. func (o Ordering) Then(other Ordering) Ordering { if o.IsEq() { return other } return o } // Reverse reverses the ordering. func (o Ordering) Reverse() Ordering { switch o { case Less: return Greater case Greater: return Less default: return Equal } } // IsLt returns true if the Ordering value is Less. func (o Ordering) IsLt() bool { return Less == o } // IsEq returns true if the Ordering value is Equal. func (o Ordering) IsEq() bool { return Equal == o } // IsGt returns true if the Ordering value is Greater. func (o Ordering) IsGt() bool { return Greater == o } // String returns the string representation of the Ordering value. func (o Ordering) String() string { switch o { case Less: return "Less" case Equal: return "Equal" case Greater: return "Greater" default: return fmt.Sprintf("Unknown Ordering value: %d", int(o)) } }