// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #include "pch.h" #include #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 stringsToSort = { L"Zebra", L"Alpha", L"beta1", L"Gamma", L"Beta", L"alpha1", L"États-Unis", L"Epsilon", L"Etude", }; vector 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 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 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 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(stringsToSort, sortFunction); VERIFY_IS_TRUE(equal(stringsToSort.begin(), stringsToSort.end(), expectedResult.begin())); vector 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(stringsToSort, sort2Function); VERIFY_IS_TRUE(equal(stringsToSort.begin(), stringsToSort.end(), expected2Result.begin())); } }; }