Browse Source

[Tests] Add unit tests

tags/3.6
Vsevolod Stakhov 10 months ago
parent
commit
ce2b90a3e1
No account linked to committer's email address
2 changed files with 45 additions and 0 deletions
  1. 1
    0
      src/libutil/CMakeLists.txt
  2. 44
    0
      src/libutil/cxx/util_tests.cxx

+ 1
- 0
src/libutil/CMakeLists.txt View File

@@ -18,6 +18,7 @@ SET(LIBRSPAMDUTILSRC
${CMAKE_CURRENT_SOURCE_DIR}/heap.c
${CMAKE_CURRENT_SOURCE_DIR}/multipattern.c
${CMAKE_CURRENT_SOURCE_DIR}/cxx/utf8_util.cxx
${CMAKE_CURRENT_SOURCE_DIR}/cxx/util_tests.cxx
${CMAKE_CURRENT_SOURCE_DIR}/cxx/file_util.cxx)
# Rspamdutil
SET(RSPAMD_UTIL ${LIBRSPAMDUTILSRC} PARENT_SCOPE)

+ 44
- 0
src/libutil/cxx/util_tests.cxx View File

@@ -0,0 +1,44 @@
/*-
* Copyright 2023 Vsevolod Stakhov
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include "util.hxx"

#define DOCTEST_CONFIG_IMPLEMENTATION_IN_DLL
#include "doctest/doctest.h"

using namespace rspamd;
using namespace std::literals::string_view_literals;

TEST_SUITE("cxx utils") {
TEST_CASE("string_split_on") {
std::tuple<std::string_view, char, std::pair<std::string_view, std::string_view>> cases[] = {
{"test test"sv, ' ', std::pair{"test"sv, "test"sv}},
{"test test"sv, ' ', std::pair{"test"sv, "test"sv}},
{"test test "sv, ' ', std::pair{"test"sv, "test "sv}},
{"testtest "sv, ' ', std::pair{"testtest"sv, ""sv}},
{" testtest "sv, ' ', std::pair{""sv, "testtest "sv}},
{"testtest"sv, ' ', std::pair{"testtest"sv, ""sv}},
{""sv, ' ', std::pair{""sv, ""sv}},
};

for (const auto& c : cases) {
auto res = string_split_on(std::get<0>(c), std::get<1>(c));
auto expected = std::get<2>(c);
CHECK(res.first == expected.first);
CHECK(res.second == expected.second);
}
}
}

Loading…
Cancel
Save