2017-04-15 01:40:01 +00:00
|
|
|
#include "fuzzy.h"
|
|
|
|
|
|
|
|
#include <doctest/doctest.h>
|
|
|
|
|
|
|
|
Matcher::Matcher(const std::string& search) {
|
2017-04-16 23:52:42 +00:00
|
|
|
/*
|
2017-04-15 01:40:01 +00:00
|
|
|
std::string real_search;
|
|
|
|
real_search.reserve(search.size() * 3 + 2);
|
|
|
|
for (auto c : search) {
|
|
|
|
real_search += ".*";
|
|
|
|
real_search += c;
|
|
|
|
}
|
|
|
|
real_search += ".*";
|
2017-04-16 23:52:42 +00:00
|
|
|
*/
|
2017-04-15 01:40:01 +00:00
|
|
|
|
2017-04-16 23:52:42 +00:00
|
|
|
regex_string = search;
|
|
|
|
regex = std::regex(regex_string,
|
2017-04-15 01:40:01 +00:00
|
|
|
std::regex_constants::ECMAScript |
|
|
|
|
std::regex_constants::icase |
|
|
|
|
std::regex_constants::optimize
|
|
|
|
//std::regex_constants::nosubs
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2017-04-16 23:52:42 +00:00
|
|
|
bool Matcher::IsMatch(const std::string& value) const {
|
2017-04-15 01:40:01 +00:00
|
|
|
//std::smatch match;
|
|
|
|
//return std::regex_match(value, match, regex);
|
|
|
|
return std::regex_match(value, regex, std::regex_constants::match_any);
|
|
|
|
}
|
|
|
|
|
|
|
|
TEST_SUITE("Matcher");
|
|
|
|
|
|
|
|
TEST_CASE("sanity") {
|
|
|
|
Matcher m("abc");
|
|
|
|
// TODO: check case
|
2017-04-18 02:59:48 +00:00
|
|
|
//CHECK(m.IsMatch("abc"));
|
|
|
|
//CHECK(m.IsMatch("fooabc"));
|
|
|
|
//CHECK(m.IsMatch("abc"));
|
|
|
|
//CHECK(m.IsMatch("abcfoo"));
|
|
|
|
//CHECK(m.IsMatch("11a11b11c11"));
|
2017-04-15 01:40:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
TEST_SUITE_END();
|