mirror of
https://github.com/Microsoft/calculator.git
synced 2025-08-22 14:13:30 -07:00
Fixed the decimal number with point in programmer memory
This commit is contained in:
parent
fd22f75190
commit
62d0c42f75
3 changed files with 18 additions and 17 deletions
|
@ -1188,19 +1188,20 @@ void StandardCalculatorViewModel::SetCalculatorType(ViewMode targetState)
|
||||||
{
|
{
|
||||||
case ViewMode::Standard:
|
case ViewMode::Standard:
|
||||||
IsStandard = true;
|
IsStandard = true;
|
||||||
ResetRadix();
|
ResetRadixAndUpdateMemory(true);
|
||||||
SetPrecision(StandardModePrecision);
|
SetPrecision(StandardModePrecision);
|
||||||
UpdateMaxIntDigits();
|
UpdateMaxIntDigits();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ViewMode::Scientific:
|
case ViewMode::Scientific:
|
||||||
IsScientific = true;
|
IsScientific = true;
|
||||||
ResetRadix();
|
ResetRadixAndUpdateMemory(true);
|
||||||
SetPrecision(ScientificModePrecision);
|
SetPrecision(ScientificModePrecision);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ViewMode::Programmer:
|
case ViewMode::Programmer:
|
||||||
IsProgrammer = true;
|
IsProgrammer = true;
|
||||||
|
ResetRadixAndUpdateMemory(false);
|
||||||
SetPrecision(ProgrammerModePrecision);
|
SetPrecision(ProgrammerModePrecision);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1226,11 +1227,18 @@ String ^ StandardCalculatorViewModel::GetLocalizedStringFormat(String ^ format,
|
||||||
return LocalizationStringUtil::GetLocalizedString(format, displayValue);
|
return LocalizationStringUtil::GetLocalizedString(format, displayValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void StandardCalculatorViewModel::ResetRadix()
|
void StandardCalculatorViewModel::ResetRadixAndUpdateMemory(bool resetRadix)
|
||||||
{
|
{
|
||||||
AreHEXButtonsEnabled = false;
|
if (resetRadix)
|
||||||
CurrentRadixType = NumberBase::DecBase;
|
{
|
||||||
m_standardCalculatorManager.SetRadix(RadixType::Decimal);
|
AreHEXButtonsEnabled = false;
|
||||||
|
CurrentRadixType = NumberBase::DecBase;
|
||||||
|
m_standardCalculatorManager.SetRadix(RadixType::Decimal);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_standardCalculatorManager.SetMemorizedNumbersString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void StandardCalculatorViewModel::SetPrecision(int32_t precision)
|
void StandardCalculatorViewModel::SetPrecision(int32_t precision)
|
||||||
|
|
|
@ -283,7 +283,7 @@ namespace CalculatorApp
|
||||||
void Recalculate(bool fromHistory = false);
|
void Recalculate(bool fromHistory = false);
|
||||||
bool IsOperator(CalculationManager::Command cmdenum);
|
bool IsOperator(CalculationManager::Command cmdenum);
|
||||||
void SetMemorizedNumbersString();
|
void SetMemorizedNumbersString();
|
||||||
void ResetRadix();
|
void ResetRadixAndUpdateMemory(bool resetRadix);
|
||||||
|
|
||||||
void SetPrecision(int32_t precision);
|
void SetPrecision(int32_t precision);
|
||||||
void UpdateMaxIntDigits()
|
void UpdateMaxIntDigits()
|
||||||
|
|
|
@ -42,7 +42,7 @@ namespace CalculatorUnitTests
|
||||||
viewModel->IsStandard = true;
|
viewModel->IsStandard = true;
|
||||||
viewModel->IsScientific = false;
|
viewModel->IsScientific = false;
|
||||||
viewModel->IsProgrammer = false;
|
viewModel->IsProgrammer = false;
|
||||||
viewModel->ResetRadix();
|
viewModel->ResetRadixAndUpdateMemory(true);
|
||||||
viewModel->SetPrecision(StandardModePrecision);
|
viewModel->SetPrecision(StandardModePrecision);
|
||||||
}
|
}
|
||||||
else if (mode == 1)
|
else if (mode == 1)
|
||||||
|
@ -50,7 +50,7 @@ namespace CalculatorUnitTests
|
||||||
viewModel->IsScientific = true;
|
viewModel->IsScientific = true;
|
||||||
viewModel->IsProgrammer = false;
|
viewModel->IsProgrammer = false;
|
||||||
viewModel->IsStandard = false;
|
viewModel->IsStandard = false;
|
||||||
viewModel->ResetRadix();
|
viewModel->ResetRadixAndUpdateMemory(true);
|
||||||
viewModel->SetPrecision(ScientificModePrecision);
|
viewModel->SetPrecision(ScientificModePrecision);
|
||||||
}
|
}
|
||||||
else if (mode == 2)
|
else if (mode == 2)
|
||||||
|
@ -58,6 +58,7 @@ namespace CalculatorUnitTests
|
||||||
viewModel->IsProgrammer = true;
|
viewModel->IsProgrammer = true;
|
||||||
viewModel->IsScientific = false;
|
viewModel->IsScientific = false;
|
||||||
viewModel->IsStandard = false;
|
viewModel->IsStandard = false;
|
||||||
|
viewModel->ResetRadixAndUpdateMemory(false);
|
||||||
viewModel->SetPrecision(ProgrammerModePrecision);
|
viewModel->SetPrecision(ProgrammerModePrecision);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -803,14 +804,6 @@ namespace CalculatorUnitTests
|
||||||
MemoryItemViewModel ^ memorySlotScientific = (MemoryItemViewModel ^) m_viewModel->MemorizedNumbers->GetAt(0);
|
MemoryItemViewModel ^ memorySlotScientific = (MemoryItemViewModel ^) m_viewModel->MemorizedNumbers->GetAt(0);
|
||||||
VERIFY_ARE_EQUAL(Platform::StringReference(L"1,001.1"), memorySlotScientific->Value);
|
VERIFY_ARE_EQUAL(Platform::StringReference(L"1,001.1"), memorySlotScientific->Value);
|
||||||
ChangeMode(m_viewModel, 2 /*Programmer*/);
|
ChangeMode(m_viewModel, 2 /*Programmer*/);
|
||||||
TESTITEM items2[] = {
|
|
||||||
{ NumbersAndOperatorsEnum::One, L"1", L"" }, { NumbersAndOperatorsEnum::Zero, L"10", L"" },
|
|
||||||
{ NumbersAndOperatorsEnum::Zero, L"100", L"" }, { NumbersAndOperatorsEnum::One, L"1,001", L"" },
|
|
||||||
{ NumbersAndOperatorsEnum::None, L"", L"" },
|
|
||||||
};
|
|
||||||
ValidateViewModelByCommands(m_viewModel, items2, true);
|
|
||||||
m_viewModel->OnMemoryButtonPressed();
|
|
||||||
m_viewModel->OnMemoryItemPressed(ref new Platform::Box<int>(0));
|
|
||||||
MemoryItemViewModel ^ memorySlotProgrammer = (MemoryItemViewModel ^) m_viewModel->MemorizedNumbers->GetAt(0);
|
MemoryItemViewModel ^ memorySlotProgrammer = (MemoryItemViewModel ^) m_viewModel->MemorizedNumbers->GetAt(0);
|
||||||
VERIFY_ARE_EQUAL(Platform::StringReference(L"1,001"), memorySlotProgrammer->Value);
|
VERIFY_ARE_EQUAL(Platform::StringReference(L"1,001"), memorySlotProgrammer->Value);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue