Refactoring LocalizationSettings (#850)
This commit is contained in:
@@ -244,6 +244,7 @@
|
||||
<ClCompile Include="DateCalculatorUnitTests.cpp" />
|
||||
<ClCompile Include="HistoryTests.cpp" />
|
||||
<ClCompile Include="LocalizationServiceUnitTests.cpp" />
|
||||
<ClCompile Include="LocalizationSettingsUnitTests.cpp" />
|
||||
<ClCompile Include="Mocks\CurrencyHttpClient.cpp" />
|
||||
<ClCompile Include="MultiWindowUnitTests.cpp" />
|
||||
<ClCompile Include="NavCategoryUnitTests.cpp" />
|
||||
|
@@ -29,6 +29,7 @@
|
||||
</ClCompile>
|
||||
<ClCompile Include="LocalizationServiceUnitTests.cpp" />
|
||||
<ClCompile Include="RationalTest.cpp" />
|
||||
<ClCompile Include="LocalizationSettingsUnitTests.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="DateUtils.h" />
|
||||
|
93
src/CalculatorUnitTests/LocalizationSettingsUnitTests.cpp
Normal file
93
src/CalculatorUnitTests/LocalizationSettingsUnitTests.cpp
Normal file
@@ -0,0 +1,93 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
#include <CppUnitTest.h>
|
||||
|
||||
#include "CalcViewModel/Common/LocalizationSettings.h"
|
||||
|
||||
using namespace CalculatorApp::Common;
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
static Windows::Globalization::NumberFormatting::DecimalFormatter ^ CreateDecimalFormatter(const wchar_t* language, const wchar_t* geographicRegion)
|
||||
{
|
||||
auto languages = ref new Platform::Collections::Vector<Platform::String ^>({ ref new Platform::String(language) });
|
||||
return ref new Windows::Globalization::NumberFormatting::DecimalFormatter(languages, ref new Platform::String(geographicRegion));
|
||||
}
|
||||
|
||||
namespace CalculatorUnitTests
|
||||
{
|
||||
TEST_CLASS(LocalizationSettingsUnitTests)
|
||||
{
|
||||
public:
|
||||
TEST_METHOD(TestLocaleName)
|
||||
{
|
||||
auto formatter = CreateDecimalFormatter(L"en-US", L"US");
|
||||
LocalizationSettings settings(formatter);
|
||||
VERIFY_ARE_EQUAL(L"en-US", settings.GetLocaleName());
|
||||
}
|
||||
|
||||
TEST_METHOD(TestIsDigitEnUsSetting)
|
||||
{
|
||||
auto arabicFormatter = CreateDecimalFormatter(L"ar-AE", L"AE");
|
||||
LocalizationSettings arabicSettings(arabicFormatter);
|
||||
VERIFY_IS_FALSE(arabicSettings.IsDigitEnUsSetting());
|
||||
|
||||
auto englishFormatter = CreateDecimalFormatter(L"en-US", L"US");
|
||||
LocalizationSettings englishSettings(englishFormatter);
|
||||
VERIFY_IS_TRUE(englishSettings.IsDigitEnUsSetting());
|
||||
}
|
||||
|
||||
TEST_METHOD(TestLocalizeDisplayValue)
|
||||
{
|
||||
auto formatter = CreateDecimalFormatter(L"ar-AE", L"AE");
|
||||
LocalizationSettings settings(formatter);
|
||||
std::wstring input(L"A123");
|
||||
settings.LocalizeDisplayValue(&input);
|
||||
VERIFY_ARE_EQUAL(L"A١٢٣", input);
|
||||
}
|
||||
|
||||
TEST_METHOD(TestGetEnglishValueFromLocalizedDigits)
|
||||
{
|
||||
auto formatter = CreateDecimalFormatter(L"ar-AE", L"AE");
|
||||
LocalizationSettings settings(formatter);
|
||||
VERIFY_ARE_EQUAL(L"A123", settings.GetEnglishValueFromLocalizedDigits(L"A١٢٣"));
|
||||
}
|
||||
|
||||
TEST_METHOD(TestIsEnUsDigit)
|
||||
{
|
||||
auto& settings = LocalizationSettings::GetInstance();
|
||||
VERIFY_IS_FALSE(settings.IsEnUsDigit(L'/'));
|
||||
VERIFY_IS_TRUE(settings.IsEnUsDigit(L'0'));
|
||||
VERIFY_IS_TRUE(settings.IsEnUsDigit(L'1'));
|
||||
VERIFY_IS_TRUE(settings.IsEnUsDigit(L'8'));
|
||||
VERIFY_IS_TRUE(settings.IsEnUsDigit(L'9'));
|
||||
VERIFY_IS_FALSE(settings.IsEnUsDigit(L':'));
|
||||
}
|
||||
|
||||
TEST_METHOD(TestIsLocalizedDigit)
|
||||
{
|
||||
auto formatter = CreateDecimalFormatter(L"en-US", L"US");
|
||||
LocalizationSettings settings(formatter);
|
||||
VERIFY_IS_TRUE(settings.IsLocalizedDigit(L'0'));
|
||||
VERIFY_IS_FALSE(settings.IsLocalizedDigit(L'A'));
|
||||
}
|
||||
|
||||
TEST_METHOD(TestIsLocalizedHexDigit)
|
||||
{
|
||||
auto formatter = CreateDecimalFormatter(L"en-US", L"US");
|
||||
LocalizationSettings settings(formatter);
|
||||
VERIFY_IS_TRUE(settings.IsLocalizedHexDigit(L'0'));
|
||||
VERIFY_IS_TRUE(settings.IsLocalizedHexDigit(L'A'));
|
||||
VERIFY_IS_FALSE(settings.IsLocalizedHexDigit(L'G'));
|
||||
}
|
||||
|
||||
TEST_METHOD(TestRemoveGroupSeparators)
|
||||
{
|
||||
auto formatter = CreateDecimalFormatter(L"en-US", L"US");
|
||||
LocalizationSettings settings(formatter);
|
||||
VERIFY_ARE_EQUAL(L"1000000", settings.RemoveGroupSeparators(L"1,000 000"));
|
||||
}
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user