# Currency, price, totals

**Test family:** `MON`

- **MON-001** Store/compute using exact decimal or minor units; never depend on binary floating-point equality for money.
- **MON-002** Test zero, negative/refund, smallest minor unit, large value, and currency with 0/2/3 minor digits.
- **MON-003** Currency code/symbol/name are unambiguous; `$` does not silently imply the wrong currency.
- **MON-004** Locale changes formatting, not stored amount; parse pasted localized values deliberately.
- **MON-005** Rounding happens at the documented line/tax/total stage and totals reconcile exactly.
- **MON-006** Quantity × unit price, discounts, tax, credits, proration, exchange, and final charge agree across UI, invoice, provider, and export.
- **MON-007** Currency change defines conversion rate, timestamp, source, rounding, and historical immutability.
- **MON-008** Stale quote/price at purchase prompts revalidation; client-supplied totals are never authoritative.
- **MON-009** Permissions and logs protect full payment/account details; masking is consistent.
- **MON-010** Refund/void/charge/retry is idempotent and survives timeout without duplicate money movement.

## Comprehensive per-item coverage

- **MON-011** Exercise absent, null, empty, zero, false, ordinary, minimum, maximum, below-minimum, above-maximum, and unknown values distinctly.
- **MON-012** Probe powers-of-two and representation boundaries around `7/8/9`, `15/16/17`, `31/32/33`, `63/64/65`, and storage-specific limits.
- **MON-013** Use negative, fractional, high-precision, exponential, signed-zero, NaN/infinity, overflow, underflow, and rounding cases where the type can receive them.
- **MON-014** Use labels or serialized values containing emoticons, emoji, kaomoji, accents, RTL, combining marks, confusables, and invisible characters.
- **MON-015** Compare UI, API, import, database, cache, queue, analytics, search index, notification, and export representations; preserve one authoritative meaning.
- **MON-016** Send wrong types, missing fields, extra fields, duplicate keys, unknown enum members, malformed encodings, and schema-version mismatches.
- **MON-017** Bypass client min/max/step/format constraints; enforce the server and persistence contract without clipping or coercing silently.
- **MON-018** Switch locale, numbering system, decimal/group separator, calendar, currency, time zone, and direction; separate display formatting from stored value.
- **MON-019** Sort, filter, group, aggregate, compare, search, paginate, and chart boundary and null values; keep ordering and totals coherent.
- **MON-020** Create and update concurrently from two sessions; prevent lost updates, duplicate identities, and stale derived values.
- **MON-021** Retry writes and reads across timeout, disconnect, failover, and replica lag; expose stale or uncertain state rather than false certainty.
- **MON-022** Migrate old, missing, malformed, and newly extended values forward and backward where supported; preserve auditability and rollback.
- **MON-023** Verify permissions at field, record, tenant, export, analytics, log, cache, and backup layers; redact consistently.
- **MON-024** Use inert markup, SQL, template, CSV-formula, path, and log canaries in any textual representation; encode for each output context.
- **MON-025** Check accessible names, units, errors, table headers, announcements, and non-color distinctions for input and display.
- **MON-026** Measure validation, calculation, query, sort, aggregate, import, and export behavior at normal and supported scale.
- **MON-027** Verify derived totals, counters, scores, dates, and statuses update atomically with source data or expose reconciliation state.
- **MON-028** Delete, restore, archive, expire, retain, and purge values; distinguish tombstone, null, zero, redaction, and absence.
- **MON-029** Record source, actor, old/new value, unit, time, version, and reason without leaking secrets or prohibited personal data.
- **MON-030** Reconcile after partial failure, cache corruption, duplicate message, and delayed index update; detect and repair divergence.

[Back to Numbers, money, dates, and time index](../../numbers-money-time.md)
