Test and fix the "operator after equals" case.

This commit is contained in:
2024-02-08 18:19:48 +01:00
parent 719444c06e
commit b586bfe11e
2 changed files with 24 additions and 10 deletions

View File

@@ -44,15 +44,14 @@ public record Calculator(CalculatorState State, string LeftOperand, CalculatorOp
public Calculator() : this(CalculatorState.AfterEquals, "0", null, "0") { }
public Calculator OperatorPressed(CalculatorOperator op) => this with
{
LeftOperand = State switch {
CalculatorState.AfterOperator or CalculatorState.AfterEquals => RightOperand,
public Calculator OperatorPressed(CalculatorOperator op) => new(
LeftOperand: State switch {
CalculatorState.AfterOperator or CalculatorState.AfterEquals => Display,
CalculatorState.AfterDigit => Evaluate(),
},
Operator = op,
State = CalculatorState.AfterOperator,
};
},
Operator: op,
RightOperand: Display,
State: CalculatorState.AfterOperator);
public Calculator EqualsPressed() => this with {
LeftOperand = Evaluate(),
@@ -61,13 +60,13 @@ public record Calculator(CalculatorState State, string LeftOperand, CalculatorOp
public Calculator DigitPressed(string digit) => this with {
LeftOperand = State switch {
CalculatorState.AfterEquals or CalculatorState.AfterOperator => RightOperand,
CalculatorState.AfterEquals or CalculatorState.AfterOperator => Display,
CalculatorState.AfterDigit => LeftOperand,
},
RightOperand = State switch {
CalculatorState.AfterOperator or CalculatorState.AfterEquals => digit,
CalculatorState.AfterDigit => RightOperand + digit,
},
},
State = CalculatorState.AfterDigit,
};