144 lines
4.5 KiB
C++
144 lines
4.5 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#include "pch.h"
|
|
|
|
#include <CppUnitTest.h>
|
|
|
|
#include "CalcViewModel/Common/LocalizationService.h"
|
|
|
|
using namespace CalculatorApp::Common;
|
|
using namespace Platform;
|
|
using namespace std;
|
|
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
|
|
|
namespace CalculatorUnitTests
|
|
{
|
|
TEST_CLASS(LocalizationServiceUnitTests)
|
|
{
|
|
public:
|
|
|
|
TEST_METHOD(TestSortStrings)
|
|
{
|
|
auto localizationService = LocalizationService::GetInstance();
|
|
vector<String^> stringsToSort =
|
|
{
|
|
L"Zebra",
|
|
L"Alpha",
|
|
L"beta1",
|
|
L"Gamma",
|
|
L"Beta",
|
|
L"alpha1",
|
|
L"États-Unis",
|
|
L"Epsilon",
|
|
L"Etude",
|
|
};
|
|
|
|
vector<String^> expectedResult =
|
|
{
|
|
L"Alpha",
|
|
L"alpha1",
|
|
L"Beta",
|
|
L"beta1",
|
|
L"Epsilon",
|
|
L"États-Unis",
|
|
L"Etude",
|
|
L"Gamma",
|
|
L"Zebra",
|
|
};
|
|
VERIFY_ARE_EQUAL(stringsToSort.size(), expectedResult.size());
|
|
VERIFY_IS_FALSE(equal(stringsToSort.begin(), stringsToSort.end(), expectedResult.begin()));
|
|
localizationService->Sort(stringsToSort);
|
|
VERIFY_IS_TRUE(equal(stringsToSort.begin(), stringsToSort.end(), expectedResult.begin()));
|
|
}
|
|
|
|
TEST_METHOD(TestSortEmptyStrings)
|
|
{
|
|
//Verify if LocalizationService::Sort doesn't crash when the vector is empty or null
|
|
auto localizationService = LocalizationService::GetInstance();
|
|
vector<String^> stringsToSort = {};
|
|
localizationService->Sort(stringsToSort);
|
|
stringsToSort = { L"" };
|
|
localizationService->Sort(stringsToSort);
|
|
stringsToSort = { L"",L"",L"" };
|
|
localizationService->Sort(stringsToSort);
|
|
stringsToSort = { nullptr,L"",L"" };
|
|
localizationService->Sort(stringsToSort);
|
|
}
|
|
|
|
TEST_METHOD(TestSortGeneric)
|
|
{
|
|
vector<String^> stringsToSort =
|
|
{
|
|
L"fermentum",
|
|
L"fringilla",
|
|
L"Curabitur",
|
|
L"rhoncus",
|
|
L"Aenean",
|
|
L"Fusce",
|
|
L"sollicitudin",
|
|
L"empor",
|
|
L"edapibus",
|
|
L"édapibas",
|
|
L"édapîbos",
|
|
L"édapîbÉs",
|
|
};
|
|
|
|
vector<String^> expectedResult =
|
|
{
|
|
L"Aenean",
|
|
L"Curabitur",
|
|
L"édapibas",
|
|
L"édapîbÉs",
|
|
L"édapîbos",
|
|
L"edapibus",
|
|
L"empor",
|
|
L"fermentum",
|
|
L"fringilla",
|
|
L"Fusce",
|
|
L"rhoncus",
|
|
L"sollicitudin",
|
|
};
|
|
|
|
|
|
auto sortFunction = [](String^ s) {
|
|
return ref new String(L"CAL:") + s + L"TEST";
|
|
};
|
|
|
|
VERIFY_ARE_EQUAL(stringsToSort.size(), expectedResult.size());
|
|
VERIFY_IS_FALSE(equal(stringsToSort.begin(), stringsToSort.end(), expectedResult.begin()));
|
|
|
|
auto localizationService = LocalizationService::GetInstance();
|
|
localizationService->Sort<String^>(stringsToSort, sortFunction);
|
|
VERIFY_IS_TRUE(equal(stringsToSort.begin(), stringsToSort.end(), expectedResult.begin()));
|
|
|
|
vector<String^> expected2Result =
|
|
{
|
|
L"édapibas",
|
|
L"édapîbÉs",
|
|
L"édapîbos",
|
|
L"edapibus",
|
|
L"Aenean",
|
|
L"fermentum",
|
|
L"rhoncus",
|
|
L"empor",
|
|
L"sollicitudin",
|
|
L"fringilla",
|
|
L"Curabitur",
|
|
L"Fusce",
|
|
};
|
|
|
|
auto sort2Function = [](String^ s) {
|
|
return ref new String(s->Begin()+1);
|
|
};
|
|
|
|
VERIFY_ARE_EQUAL(stringsToSort.size(), expected2Result.size());
|
|
VERIFY_IS_FALSE(equal(stringsToSort.begin(), stringsToSort.end(), expected2Result.begin()));
|
|
|
|
localizationService->Sort<String^>(stringsToSort, sort2Function);
|
|
VERIFY_IS_TRUE(equal(stringsToSort.begin(), stringsToSort.end(), expected2Result.begin()));
|
|
|
|
}
|
|
};
|
|
}
|