Use different formatter for different currency (#1432)
* Use different formatter for different currency * Add functional tests for currency fraction digit format * Revert "Add functional tests for currency fraction digit format" This reverts commit bd8aab33847425f4dcfd0d76ce310c918729b2fd. * Add TestCurrencyFormattingLogic in UnitConverterViewModelUnitTests * Fix InitializeMultipleConverterTest * Add comment for a line of code * Add default case for switch in ConvertToLocalizedString * Remove trailing decimal Disable decimal input if maxFractionDigits is 0 Fix input may be blocked after switched active * Fix: UpdateIsDecimalEnabled should do nothing for non-currency converter * Remove unnecessary SetValue method * Add a comment * Add functional UI Tests for currency converter Reset currency before tests Fix: input is blocked after switching to currency with less fractional digits * Set Priority=0 for currency format related tests * Truncate digits in display value after switcing To fix incorrect result after switching currency with less fractional digits
This commit is contained in:
@@ -24,7 +24,7 @@ static constexpr uint32_t OPTIMALDIGITSALLOWED = 7U;
|
||||
static constexpr wchar_t LEFTESCAPECHAR = L'{';
|
||||
static constexpr wchar_t RIGHTESCAPECHAR = L'}';
|
||||
|
||||
static const double OPTIMALDECIMALALLOWED = 1e-6; // pow(10, -1 * (OPTIMALDIGITSALLOWED - 1));
|
||||
static const double OPTIMALDECIMALALLOWED = 1e-6; // pow(10, -1 * (OPTIMALDIGITSALLOWED - 1));
|
||||
static const double MINIMUMDECIMALALLOWED = 1e-14; // pow(10, -1 * (MAXIMUMDIGITSALLOWED - 1));
|
||||
|
||||
unordered_map<wchar_t, wstring> quoteConversions;
|
||||
@@ -149,6 +149,11 @@ void UnitConverter::SetCurrentUnitTypes(const Unit& fromType, const Unit& toType
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_fromType != fromType)
|
||||
{
|
||||
m_switchedActive = true;
|
||||
}
|
||||
|
||||
m_fromType = fromType;
|
||||
m_toType = toType;
|
||||
Calculate();
|
||||
@@ -191,6 +196,11 @@ void UnitConverter::SwitchActive(const wstring& newValue)
|
||||
}
|
||||
}
|
||||
|
||||
bool UnitConversionManager::UnitConverter::IsSwitchedActive() const
|
||||
{
|
||||
return m_switchedActive;
|
||||
}
|
||||
|
||||
wstring UnitConverter::CategoryToString(const Category& c, wstring_view delimiter)
|
||||
{
|
||||
return Quote(std::to_wstring(c.id))
|
||||
|
@@ -223,6 +223,7 @@ namespace UnitConversionManager
|
||||
virtual Category GetCurrentCategory() = 0;
|
||||
virtual void SetCurrentUnitTypes(const Unit& fromType, const Unit& toType) = 0;
|
||||
virtual void SwitchActive(const std::wstring& newValue) = 0;
|
||||
virtual bool IsSwitchedActive() const = 0;
|
||||
virtual std::wstring SaveUserPreferences() = 0;
|
||||
virtual void RestoreUserPreferences(_In_ std::wstring_view userPreferences) = 0;
|
||||
virtual void SendCommand(Command command) = 0;
|
||||
@@ -246,6 +247,7 @@ namespace UnitConversionManager
|
||||
Category GetCurrentCategory() override;
|
||||
void SetCurrentUnitTypes(const Unit& fromType, const Unit& toType) override;
|
||||
void SwitchActive(const std::wstring& newValue) override;
|
||||
bool IsSwitchedActive() const override;
|
||||
std::wstring SaveUserPreferences() override;
|
||||
void RestoreUserPreferences(std::wstring_view userPreference) override;
|
||||
void SendCommand(Command command) override;
|
||||
|
Reference in New Issue
Block a user