validateAmount

Validates amount against what this ecode actually sells.

An ecode sells either a free amount inside a range or one of a fixed set of denominations - never both - so the two cases are checked separately. That separation is the point: a fixed-denomination ecode has no ActivePerksEcode.minimumAmount or ActivePerksEcode.maximumAmount (both null), only ActivePerksEcode.fixedDenominations. A missing bound on a range ecode is treated as open.

A non-finite amount is never valid. Every comparison with NaN is false, so without an explicit check NaN would slip past each bound below; it is refused as AmountValidation.NotPositive, like negative infinity. Positive infinity is refused as AmountValidation.AboveMaximum for a range ecode and as AmountValidation.NotAnAllowedDenomination for a fixed one.

Return

AmountValidation.Valid, or the reason it was refused.

Parameters

amount

The amount the member entered or picked.