[Libreoffice-commits] online.git: loolwsd/test loolwsd/Util.hpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Tue Apr 19 01:41:18 UTC 2016
loolwsd/Util.hpp | 22 ++++++++++++++++++++
loolwsd/test/WhiteBoxTests.cpp | 43 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+)
New commits:
commit 3878f3b5154d64fb9416915b0924c4566312a3c9
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Mon Apr 18 21:11:33 2016 -0400
loolwsd: initialization and resetting support in RegexListMatcher
Change-Id: Ic262cf9e4a21d30b6dfd9d9fc0d895f89d7d8e7b
Reviewed-on: https://gerrit.libreoffice.org/24232
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/loolwsd/Util.hpp b/loolwsd/Util.hpp
index 1635c5d..3b466cf 100644
--- a/loolwsd/Util.hpp
+++ b/loolwsd/Util.hpp
@@ -127,6 +127,22 @@ namespace Util
class RegexListMatcher
{
public:
+ RegexListMatcher()
+ {
+ }
+
+ RegexListMatcher(std::initializer_list<std::string> allow) :
+ _allowed(allow)
+ {
+ }
+
+ RegexListMatcher(std::initializer_list<std::string> allow,
+ std::initializer_list<std::string> deny) :
+ _allowed(allow),
+ _denied(deny)
+ {
+ }
+
void allow(const std::string& pattern) { _allowed.insert(pattern); }
void deny(const std::string& pattern)
{
@@ -134,6 +150,12 @@ namespace Util
_denied.insert(pattern);
}
+ void clear()
+ {
+ _allowed.clear();
+ _denied.clear();
+ }
+
bool match(const std::string& subject) const
{
return (match(_allowed, subject) && !match(_denied, subject));
diff --git a/loolwsd/test/WhiteBoxTests.cpp b/loolwsd/test/WhiteBoxTests.cpp
index 79104f1..92b3df9 100644
--- a/loolwsd/test/WhiteBoxTests.cpp
+++ b/loolwsd/test/WhiteBoxTests.cpp
@@ -20,10 +20,12 @@ class WhiteBoxTests : public CPPUNIT_NS::TestFixture
CPPUNIT_TEST_SUITE(WhiteBoxTests);
CPPUNIT_TEST(testRegexListMatcher);
+ CPPUNIT_TEST(testRegexListMatcher_Init);
CPPUNIT_TEST_SUITE_END();
void testRegexListMatcher();
+ void testRegexListMatcher_Init();
};
void WhiteBoxTests::testRegexListMatcher()
@@ -58,6 +60,47 @@ void WhiteBoxTests::testRegexListMatcher()
CPPUNIT_ASSERT(!matcher.match("staging.collaboracloudsuite"));
CPPUNIT_ASSERT(!matcher.match("web.collaboracloudsuite"));
CPPUNIT_ASSERT(!matcher.match("staging.collaboracloudsuite.com"));
+
+ matcher.allow("10\\.10\\.[0-9]{1,3}\\.[0-9]{1,3}");
+ matcher.deny("10\\.10\\.10\\.10");
+ CPPUNIT_ASSERT(matcher.match("10.10.001.001"));
+ CPPUNIT_ASSERT(!matcher.match("10.10.10.10"));
+ CPPUNIT_ASSERT(matcher.match("10.10.250.254"));
+}
+
+
+void WhiteBoxTests::testRegexListMatcher_Init()
+{
+ Util::RegexListMatcher matcher({"localhost", "192\\..*"}, {"192\\.168\\..*"});
+
+ CPPUNIT_ASSERT(matcher.match("localhost"));
+ CPPUNIT_ASSERT(!matcher.match(""));
+ CPPUNIT_ASSERT(!matcher.match("localhost2"));
+ CPPUNIT_ASSERT(!matcher.match("xlocalhost"));
+ CPPUNIT_ASSERT(!matcher.match("192.168.1.1"));
+ CPPUNIT_ASSERT(matcher.match("192.172.10.122"));
+
+ matcher.deny("localhost");
+ CPPUNIT_ASSERT(!matcher.match("localhost"));
+
+ matcher.allow("www[0-9].*");
+ CPPUNIT_ASSERT(matcher.match("www1example"));
+
+ matcher.allow("192\\.168\\..*\\..*");
+ CPPUNIT_ASSERT(!matcher.match("192.168.1.1"));
+ CPPUNIT_ASSERT(!matcher.match("192.168.159.1"));
+ CPPUNIT_ASSERT(!matcher.match("192.168.1.134"));
+ CPPUNIT_ASSERT(matcher.match("192.169.1.1"));
+ CPPUNIT_ASSERT(!matcher.match("192.168.."));
+
+ matcher.clear();
+
+ matcher.allow("192\\.168\\..*\\..*");
+ CPPUNIT_ASSERT(matcher.match("192.168.1.1"));
+ CPPUNIT_ASSERT(matcher.match("192.168.159.1"));
+ CPPUNIT_ASSERT(matcher.match("192.168.1.134"));
+ CPPUNIT_ASSERT(!matcher.match("192.169.1.1"));
+ CPPUNIT_ASSERT(matcher.match("192.168.."));
}
CPPUNIT_TEST_SUITE_REGISTRATION(WhiteBoxTests);
More information about the Libreoffice-commits
mailing list