diff options
author | Ashod Nakashian <ashod.nakashian@collabora.co.uk> | 2022-04-11 20:27:44 -0400 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2022-04-14 10:12:53 +0200 |
commit | daaa6e4bd55159b3f43667907f4d0071be437975 (patch) | |
tree | 9701e9c9c12efe8cf13e0a0d16141f2ca6c3beac /test/WhiteBoxTests.cpp | |
parent | wsd: move tokenizer helpers into StringVector (diff) | |
download | online-daaa6e4bd55159b3f43667907f4d0071be437975.tar.gz online-daaa6e4bd55159b3f43667907f4d0071be437975.zip |
wsd: test: move StringVector tests to StringVectorTests
WhiteBoxTests.cpp is by far the slowest TU
to compile (taking minutes) and gcc started showing
'note: variable tracking size limit exceeded'
and recompiles, which doubles the time.
This moves the StringVector tests into a new
home, which reduces the size of WhiteBoxTests.
Change-Id: Ia4e8daa921fb941815ad7e68f4dbb964fb2cd93e
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
Diffstat (limited to 'test/WhiteBoxTests.cpp')
-rw-r--r-- | test/WhiteBoxTests.cpp | 321 |
1 files changed, 20 insertions, 301 deletions
diff --git a/test/WhiteBoxTests.cpp b/test/WhiteBoxTests.cpp index 8283909d47..cb8ed3971d 100644 --- a/test/WhiteBoxTests.cpp +++ b/test/WhiteBoxTests.cpp @@ -36,13 +36,10 @@ class WhiteBoxTests : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(WhiteBoxTests); - CPPUNIT_TEST(testCOOLProtocolFunctions); CPPUNIT_TEST(testSplitting); CPPUNIT_TEST(testMessage); CPPUNIT_TEST(testMessageAbbreviation); - CPPUNIT_TEST(testTokenizer); - CPPUNIT_TEST(testTokenizerTokenizeAnyOf); CPPUNIT_TEST(testReplace); CPPUNIT_TEST(testRegexListMatcher); CPPUNIT_TEST(testRegexListMatcher_Init); @@ -54,7 +51,6 @@ class WhiteBoxTests : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testIso8601Time); CPPUNIT_TEST(testClockAsString); CPPUNIT_TEST(testBufferClass); - CPPUNIT_TEST(testStringVector); CPPUNIT_TEST(testHexify); CPPUNIT_TEST(testUIDefaults); CPPUNIT_TEST(testCSSVars); @@ -73,8 +69,6 @@ class WhiteBoxTests : public CPPUNIT_NS::TestFixture void testSplitting(); void testMessage(); void testMessageAbbreviation(); - void testTokenizer(); - void testTokenizerTokenizeAnyOf(); void testReplace(); void testRegexListMatcher(); void testRegexListMatcher_Init(); @@ -86,7 +80,6 @@ class WhiteBoxTests : public CPPUNIT_NS::TestFixture void testIso8601Time(); void testClockAsString(); void testBufferClass(); - void testStringVector(); void testHexify(); void testUIDefaults(); void testCSSVars(); @@ -191,6 +184,26 @@ void WhiteBoxTests::testCOOLProtocolFunctions() LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), Util::trim(s).size()); s = " "; LOK_ASSERT_EQUAL(std::string(""), Util::trim(s)); + + // Integer lists. + std::vector<int> ints; + + ints = COOLProtocol::tokenizeInts(std::string("-1")); + LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), ints.size()); + LOK_ASSERT_EQUAL(-1, ints[0]); + + ints = COOLProtocol::tokenizeInts(std::string("1,2,3,4")); + LOK_ASSERT_EQUAL(static_cast<std::size_t>(4), ints.size()); + LOK_ASSERT_EQUAL(1, ints[0]); + LOK_ASSERT_EQUAL(2, ints[1]); + LOK_ASSERT_EQUAL(3, ints[2]); + LOK_ASSERT_EQUAL(4, ints[3]); + + ints = COOLProtocol::tokenizeInts(""); + LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), ints.size()); + + ints = COOLProtocol::tokenizeInts(std::string(",,,")); + LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), ints.size()); } void WhiteBoxTests::testSplitting() @@ -367,192 +380,6 @@ void WhiteBoxTests::testMessageAbbreviation() LOK_ASSERT_EQUAL(abbr, COOLProtocol::getAbbreviatedMessage(s)); } -void WhiteBoxTests::testTokenizer() -{ - constexpr auto testname = __func__; - - StringVector tokens; - - tokens = StringVector::tokenize(""); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), tokens.size()); - - tokens = StringVector::tokenize(" "); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), tokens.size()); - - tokens = StringVector::tokenize("A"); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenize(" A"); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenize("A "); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenize(" A "); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenize(" A Z "); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(2), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("Z"), tokens[1]); - - tokens = StringVector::tokenize("\n"); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), tokens.size()); - - tokens = StringVector::tokenize(" A \nZ "); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenize(" A Z\n "); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(2), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("Z"), tokens[1]); - - tokens = StringVector::tokenize(" A Z \n "); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(2), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("Z"), tokens[1]); - - tokens = StringVector::tokenize("tile nviewid=0 part=0 width=256 height=256 tileposx=0 " - "tileposy=0 tilewidth=3840 tileheight=3840 ver=-1"); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(10), tokens.size()); - LOK_ASSERT_EQUAL(std::string("tile"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("nviewid=0"), tokens[1]); - LOK_ASSERT_EQUAL(std::string("part=0"), tokens[2]); - LOK_ASSERT_EQUAL(std::string("width=256"), tokens[3]); - LOK_ASSERT_EQUAL(std::string("height=256"), tokens[4]); - LOK_ASSERT_EQUAL(std::string("tileposx=0"), tokens[5]); - LOK_ASSERT_EQUAL(std::string("tileposy=0"), tokens[6]); - LOK_ASSERT_EQUAL(std::string("tilewidth=3840"), tokens[7]); - LOK_ASSERT_EQUAL(std::string("tileheight=3840"), tokens[8]); - LOK_ASSERT_EQUAL(std::string("ver=-1"), tokens[9]); - - // With custom delimiters - tokens = StringVector::tokenize(std::string("ABC:DEF"), ':'); - LOK_ASSERT_EQUAL(std::string("ABC"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("DEF"), tokens[1]); - - tokens = StringVector::tokenize(std::string("ABC,DEF,XYZ"), ','); - LOK_ASSERT_EQUAL(std::string("ABC"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("DEF"), tokens[1]); - LOK_ASSERT_EQUAL(std::string("XYZ"), tokens[2]); - - static const std::string URI - = "/cool/" - "http%3A%2F%2Flocalhost%2Fnextcloud%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%" - "2F593_ocqiesh0cngs%3Faccess_token%3DMN0KXXDv9GJ1wCCLnQcjVQT2T7WrfYpA%26access_token_ttl%" - "3D0%26reuse_cookies%3Doc_sessionPassphrase%" - "253D8nFRqycbs7bP97yxCuJviBbVKdCXmuiXp6ZYH0DfUoy5UZDCTQgLwluvbgRbKrdKodJteG3uNE19KNUAoE5t" - "ypf4oBGwJdFY%25252F5W9RNST8wEHWkUVIjZy7vmY0ZX38PlS%253Anc_sameSiteCookielax%253Dtrue%" - "253Anc_sameSiteCookiestrict%253Dtrue%253Aocqiesh0cngs%253Dr5ujg4tpvgu9paaf5bguiokgjl%" - "253AXCookieName%253DXCookieValue%253ASuperCookieName%253DBAZINGA/" - "ws?WOPISrc=http%3A%2F%2Flocalhost%2Fnextcloud%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%" - "2Ffiles%2F593_ocqiesh0cngs&compat=/ws/b26112ab1b6f2ed98ce1329f0f344791/close/31"; - - tokens = StringVector::tokenize(URI, '/'); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(7), tokens.size()); - LOK_ASSERT_EQUAL(std::string("31"), tokens[6]); - - // Integer lists. - std::vector<int> ints; - - ints = COOLProtocol::tokenizeInts(std::string("-1")); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), ints.size()); - LOK_ASSERT_EQUAL(-1, ints[0]); - - ints = COOLProtocol::tokenizeInts(std::string("1,2,3,4")); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(4), ints.size()); - LOK_ASSERT_EQUAL(1, ints[0]); - LOK_ASSERT_EQUAL(2, ints[1]); - LOK_ASSERT_EQUAL(3, ints[2]); - LOK_ASSERT_EQUAL(4, ints[3]); - - ints = COOLProtocol::tokenizeInts(""); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), ints.size()); - - ints = COOLProtocol::tokenizeInts(std::string(",,,")); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), ints.size()); -} - -void WhiteBoxTests::testTokenizerTokenizeAnyOf() -{ - constexpr auto testname = __func__; - - StringVector tokens; - const char delimiters[] = "\n\r"; // any of these delimits; and we trim whitespace - - tokens = StringVector::tokenizeAnyOf("", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), tokens.size()); - - tokens = StringVector::tokenizeAnyOf(" ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), tokens.size()); - - tokens = StringVector::tokenizeAnyOf("A", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenizeAnyOf(" A", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenizeAnyOf("A ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenizeAnyOf(" A ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - - tokens = StringVector::tokenizeAnyOf(" A Z ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A Z"), tokens[0]); - - tokens = StringVector::tokenizeAnyOf("\n", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), tokens.size()); - - tokens = StringVector::tokenizeAnyOf("\n\r\r\n", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(0), tokens.size()); - - tokens = StringVector::tokenizeAnyOf(" A \nZ ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(2), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("Z"), tokens[1]); - - tokens = StringVector::tokenizeAnyOf(" A Z\n ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A Z"), tokens[0]); - - tokens = StringVector::tokenizeAnyOf(" A Z \n\r\r\n ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(1), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A Z"), tokens[0]); - - tokens = StringVector::tokenizeAnyOf(" A \n\r\r\n \r \n Z \n ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(2), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("Z"), tokens[1]); - - tokens = StringVector::tokenizeAnyOf(" \r A \n \r \n Z \n ", delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(2), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("Z"), tokens[1]); - - tokens = StringVector::tokenizeAnyOf(std::string("A\rB\nC\n\rD\r\nE\r\rF\n\nG\r\r\n\nH"), - delimiters); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(8), tokens.size()); - LOK_ASSERT_EQUAL(std::string("A"), tokens[0]); - LOK_ASSERT_EQUAL(std::string("B"), tokens[1]); - LOK_ASSERT_EQUAL(std::string("C"), tokens[2]); - LOK_ASSERT_EQUAL(std::string("D"), tokens[3]); - LOK_ASSERT_EQUAL(std::string("E"), tokens[4]); - LOK_ASSERT_EQUAL(std::string("F"), tokens[5]); - LOK_ASSERT_EQUAL(std::string("G"), tokens[6]); - LOK_ASSERT_EQUAL(std::string("H"), tokens[7]); -} - void WhiteBoxTests::testReplace() { constexpr auto testname = __func__; @@ -1064,114 +891,6 @@ void WhiteBoxTests::testBufferClass() LOK_ASSERT_EQUAL(true, buf.empty()); } -void WhiteBoxTests::testStringVector() -{ - constexpr auto testname = __func__; - - // Test push_back() and getParam(). - StringVector vector; - vector.push_back("a"); - vector.push_back("b"); - LOK_ASSERT_EQUAL(static_cast<std::size_t>(2), vector.size()); - auto it = vector.begin(); - LOK_ASSERT_EQUAL(std::string("a"), vector.getParam(*it)); - ++it; - LOK_ASSERT_EQUAL(std::string("b"), vector.getParam(*it)); - - // Test cat(). - LOK_ASSERT_EQUAL(std::string("a b"), vector.cat(" ", 0)); - LOK_ASSERT_EQUAL(std::string("a b"), vector.cat(' ', 0)); - LOK_ASSERT_EQUAL(std::string("a*b"), vector.cat('*', 0)); - LOK_ASSERT_EQUAL(std::string("a blah mlah b"), vector.cat(" blah mlah ", 0)); - LOK_ASSERT_EQUAL(std::string(), vector.cat(" ", 3)); - LOK_ASSERT_EQUAL(std::string(), vector.cat(" ", 42)); - - // Test operator [](). - LOK_ASSERT_EQUAL(std::string("a"), vector[0]); - LOK_ASSERT_EQUAL(std::string(""), vector[2]); - - // Test equals(). - LOK_ASSERT(vector.equals(0, "a")); - LOK_ASSERT(!vector.equals(0, "A")); - LOK_ASSERT(vector.equals(1, "b")); - LOK_ASSERT(!vector.equals(1, "B")); - LOK_ASSERT(!vector.equals(2, "")); - - // Test equals(), StringVector argument version. - StringVector vector2; - vector2.push_back("a"); - vector2.push_back("B"); - - LOK_ASSERT(vector.equals(0, vector2, 0)); - LOK_ASSERT(!vector.equals(0, vector2, 1)); - - // Test startsWith(). - StringVector vector3; - vector3.push_back("hello, world"); - vector3.push_back("goodbye, world"); - - LOK_ASSERT(vector3.startsWith(0, "hello")); - LOK_ASSERT(vector3.startsWith(0, "hello, world")); - LOK_ASSERT(!vector3.startsWith(0, "hello, world!")); - LOK_ASSERT(!vector3.startsWith(0, "hello, world! super long text")); - LOK_ASSERT(vector3.startsWith(1, "goodbye")); - LOK_ASSERT(!vector3.startsWith(1, "hello")); - - // Test startsWith(), StringToken argument version - StringToken hello = *vector3.begin(); - StringToken goodbye = *std::next(vector3.begin()); - StringToken unrelated(50, 10); // out of vector3 range - - LOK_ASSERT(vector3.startsWith(hello, "hello")); - LOK_ASSERT(vector3.startsWith(hello, "hello, world")); - LOK_ASSERT(!vector3.startsWith(hello, "hello, world!")); - LOK_ASSERT(!vector3.startsWith(hello, "hello, world! super long text")); - LOK_ASSERT(vector3.startsWith(goodbye, "goodbye")); - LOK_ASSERT(!vector3.startsWith(goodbye, "hello")); - LOK_ASSERT(!vector3.startsWith(unrelated, "hello")); - - { - StringVector tokens; - tokens.push_back("a=1"); - uint32_t value{}; - LOK_ASSERT(tokens.getUInt32(0, "a", value)); - LOK_ASSERT_EQUAL(static_cast<uint32_t>(1), value); - - // Prefix does not match. - LOK_ASSERT(!tokens.getUInt32(0, "b", value)); - - // Index is out of bounds. - LOK_ASSERT(!tokens.getUInt32(1, "a", value)); - - // Expected key is prefix of actual key. - tokens.push_back("bb=1"); - LOK_ASSERT(!tokens.getUInt32(1, "b", value)); - - // Actual key is prefix of expected key. - tokens.push_back("c=1"); - LOK_ASSERT(!tokens.getUInt32(1, "cc", value)); - } - - { - StringVector tokens; - tokens.push_back("a=1"); - std::string name; - int value{}; - LOK_ASSERT(tokens.getNameIntegerPair(0, name, value)); - LOK_ASSERT_EQUAL(std::string("a"), name); - LOK_ASSERT_EQUAL(1, value); - - tokens.push_back("aa=1"); - LOK_ASSERT(tokens.getNameIntegerPair(1, name, value)); - LOK_ASSERT_EQUAL(std::string("aa"), name); - LOK_ASSERT_EQUAL(1, value); - - tokens.push_back("a=11"); - LOK_ASSERT(tokens.getNameIntegerPair(2, name, value)); - LOK_ASSERT_EQUAL(std::string("a"), name); - LOK_ASSERT_EQUAL(11, value); - } -} void WhiteBoxTests::testHexify() { |