commit ce2b90a: [Tests] Add unit tests

Vsevolod Stakhov vsevolod at rspamd.com
Sat Jun 24 18:28:06 UTC 2023


Author: Vsevolod Stakhov
Date: 2023-06-24 15:52:34 +0100
URL: https://github.com/rspamd/rspamd/commit/ce2b90a3e142b5614c259481bac8f75579ffac0f (HEAD -> master)

[Tests] Add unit tests

---
 src/libutil/CMakeLists.txt     |  1 +
 src/libutil/cxx/util_tests.cxx | 44 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+)

diff --git a/src/libutil/CMakeLists.txt b/src/libutil/CMakeLists.txt
index d3dd26454..67b7e948f 100644
--- a/src/libutil/CMakeLists.txt
+++ b/src/libutil/CMakeLists.txt
@@ -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)
\ No newline at end of file
diff --git a/src/libutil/cxx/util_tests.cxx b/src/libutil/cxx/util_tests.cxx
new file mode 100644
index 000000000..6d7f4dd55
--- /dev/null
+++ b/src/libutil/cxx/util_tests.cxx
@@ -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);
+	}
+}
+}
\ No newline at end of file


More information about the Commits mailing list