From 5b3faa208ea29e45c6d845760bb902c3a9f057da Mon Sep 17 00:00:00 2001 From: Zufu Liu Date: Mon, 21 Jun 2021 13:34:23 +1000 Subject: Add tests for CharacterCategoryMap, RESearch, and Document. --- test/unit/testRESearch.cxx | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 test/unit/testRESearch.cxx (limited to 'test/unit/testRESearch.cxx') diff --git a/test/unit/testRESearch.cxx b/test/unit/testRESearch.cxx new file mode 100644 index 000000000..0dadc21c4 --- /dev/null +++ b/test/unit/testRESearch.cxx @@ -0,0 +1,77 @@ +/** @file testRESearch.cxx + ** Unit Tests for Scintilla internal data structures + **/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ScintillaTypes.h" + +#include "Debugging.h" + +#include "Position.h" +#include "SplitVector.h" +#include "Partitioning.h" +#include "RunStyles.h" +#include "CellBuffer.h" +#include "CharClassify.h" +#include "RESearch.h" + +#include "catch.hpp" + +using namespace Scintilla; +using namespace Scintilla::Internal; + +class StringCI : public CharacterIndexer { + std::string s; +public: + StringCI(std::string_view sv_) : s(sv_) { + } + Sci::Position Length() const noexcept { + return s.length(); + } + char CharAt(Sci::Position index) const override { + return s.at(index); + } +}; + +// Test RESearch. + +TEST_CASE("RESearch") { + + CharClassify cc; + const char sTextSpace[] = "Scintilla "; + const char pattern[] = "[a-z]+"; + + SECTION("Compile") { + std::unique_ptr re = std::make_unique(&cc); + const char *msg = re->Compile(pattern, strlen(pattern), true, false); + REQUIRE(nullptr == msg); + } + + SECTION("Execute") { + std::unique_ptr re = std::make_unique(&cc); + re->Compile(pattern, strlen(pattern), true, false); + StringCI sci(sTextSpace); + const int x = re->Execute(sci, 0, sci.Length()); + REQUIRE(x == 1); + REQUIRE(re->bopat[0] == 1); + REQUIRE(re->eopat[0] == sci.Length() - 1); + } + + SECTION("Grab") { + std::unique_ptr re = std::make_unique(&cc); + re->Compile(pattern, strlen(pattern), true, false); + StringCI sci(sTextSpace); + re->Execute(sci, 0, sci.Length()); + re->GrabMatches(sci); + REQUIRE(re->pat[0] == "cintilla"); + } + +} -- cgit v1.2.3