initial commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
---
|
||||
epic: 3
|
||||
story: 3.5
|
||||
title: "Multi-Currency Arithmetic"
|
||||
status: draft
|
||||
---
|
||||
|
||||
## Epic 3 — Currency & Cryptocurrency
|
||||
**Goal:** Real-time and historical currency conversion with 180+ fiat and 50+ crypto.
|
||||
|
||||
### Story 3.5: Multi-Currency Arithmetic
|
||||
|
||||
As a CalcPad user,
|
||||
I want to add and subtract amounts in different currencies within a single expression,
|
||||
So that I can calculate totals across currencies without manual conversions.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
|
||||
**Given** the expression `$20 + €15 + £10 in BRL`
|
||||
**When** the engine evaluates it
|
||||
**Then** each amount is converted to BRL using current rates
|
||||
**And** the results are summed to produce a single BRL total
|
||||
|
||||
**Given** the expression `$100 - €30`
|
||||
**When** the engine evaluates it
|
||||
**Then** `€30` is converted to USD (the currency of the left-hand operand)
|
||||
**And** the result is expressed in USD
|
||||
|
||||
**Given** the expression `$50 + $30`
|
||||
**When** the engine evaluates it
|
||||
**Then** no conversion is needed (same currency)
|
||||
**And** the result is `$80`
|
||||
|
||||
**Given** the expression `$20 + €15 + £10` with no explicit target currency
|
||||
**When** the engine evaluates it
|
||||
**Then** all amounts are converted to the currency of the first operand (USD)
|
||||
**And** the result is expressed in USD
|
||||
|
||||
**Given** the expression `$20 * €15`
|
||||
**When** the engine evaluates it
|
||||
**Then** it returns a `CalcResult::Error` because multiplying two currency values is not meaningful
|
||||
**And** the error message is descriptive
|
||||
|
||||
**Given** the expression `($100 + €50) * 2 in GBP`
|
||||
**When** the engine evaluates it
|
||||
**Then** the addition is performed first (converting EUR to USD), then multiplied by 2, then converted to GBP
|
||||
**And** the result is a single GBP value
|
||||
Reference in New Issue
Block a user