1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-12-21 22:33:06 +00:00
openmw/apps/openmw_tests/mwgui/weightedsearch.cpp
2025-12-04 16:35:29 +01:00

50 lines
1.9 KiB
C++

#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <algorithm>
#include <string>
#include <vector>
#include "apps/openmw/mwgui/weightedsearch.hpp"
namespace MWGui
{
namespace
{
TEST(MWGuiWeightedSearchTests, weightedSearchShouldNotCrashWithLargeCorpus)
{
EXPECT_NO_THROW(weightedSearch(std::string(100000, 'x'), std::vector<std::string>{ "x" }));
}
TEST(MWGuiWeightedSearchTests, weightedSearchShouldReturn1WithEmptyPatternArray)
{
EXPECT_EQ(weightedSearch(std::string(100, 'x'), std::vector<std::string>{}), 1);
}
TEST(MWGuiWeightedSearchTests, weightedSearchShouldReturnTheSumOfAllPatternsWithAtLeastOneMatch)
{
EXPECT_EQ(weightedSearch(std::string("xyyzzz"), std::vector<std::string>{ "x", "y", "z" }), 3);
}
TEST(MWGuiWeightedSearchTests, weightedSearchShouldBeCaseInsensitive)
{
EXPECT_EQ(weightedSearch(std::string("XYZ"), std::vector<std::string>{ "x", "y", "z" }), 3);
}
TEST(MWGuiWeightedSearchTests, generatePatternArrayShouldReturnEmptyArrayIfInputIsEmptyOrOnlySpaces)
{
EXPECT_THAT(generatePatternArray(std::string("")), testing::IsEmpty());
EXPECT_THAT(generatePatternArray(std::string(10, ' ')), testing::IsEmpty());
}
TEST(MWGuiWeightedSearchTests, generatePatternArrayBasicSplittingTest)
{
std::vector<std::string> expected = { "x", "y", "z" };
std::sort(expected.begin(), expected.end());
std::vector<std::string> output1 = generatePatternArray(std::string("x y z"));
std::sort(output1.begin(), output1.end());
std::vector<std::string> output2 = generatePatternArray(std::string(" x y z "));
std::sort(output2.begin(), output2.end());
EXPECT_EQ(output1, expected);
EXPECT_EQ(output2, expected);
}
}
}