Squid Web Cache master
Loading...
Searching...
No Matches
SBufFindTest.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#ifndef SQUID_SRC_TESTS_SBUFFINDTEST_H
10#define SQUID_SRC_TESTS_SBUFFINDTEST_H
11
12#include "sbuf/SBuf.h"
13
14#include <set>
15#include <string>
16
20{
21public:
23
24 void run();
25
26 /* test configuration parameters; can be optionally set before run() */
33
37 } Placement; // placeLast marker must terminate
38protected:
39
40 static SBuf RandomSBuf(const int length);
42 void placeNeedle(const SBuf &cleanHay);
43
46 void testFind();
48 void testRFind();
54
55 std::string posKey() const;
56 std::string placementKey() const;
57
58 bool resultsMatch() const;
59 void checkResults(const char *method);
60 void handleFailure(const char *method);
61
62private:
63 /* test case parameters */
68 std::string theStringHay;
69 std::string theStringNeedle;
70
72 std::string::size_type theBareNeedlePos;
73
74 /* test case results */
75 std::string::size_type theFindString;
77 std::string theReportFunc;
78 std::string theReportNeedle;
79 std::string theReportPos;
81
82 /* test progress indicators */
86 std::set<std::string> failedCats;
87};
88
90
91#endif /* SQUID_SRC_TESTS_SBUFFINDTEST_H */
92
SBufFindTest::Placement Placement
int caseLimit
approximate caseCount limit
void testRFindDefs()
void testFindChar()
void handleFailure(const char *method)
std::string theStringHay
theHay converted to std::string
Placement
Supported algorithms for placing needle in the hay.
SBuf::size_type thePos
search position limit
std::string theReportFunc
int caseCount
cases executed so far
void checkResults(const char *method)
void testRFind()
std::string theReportPos
Placement thePlacement
where in the hay the needle is placed
std::string placementKey() const
void testFindDefs()
std::string::size_type theBareNeedlePos
needle pos w/o thePos restrictions; used for case categorization
void testFind()
char theReportQuote
SBuf theSBufNeedle
the string to be found
void placeNeedle(const SBuf &cleanHay)
bool hushSimilar
whether to report only one failed test case per "category"
int errorCount
total number of failed test cases so far
std::string theReportNeedle
void testRFindCharDefs()
void testFindFirstOf()
void nextLen(SBuf::size_type &len, const SBuf::size_type max)
SBuf::size_type theFindSBuf
void testAllMethods()
std::string theStringNeedle
theNeedle converted to std::string
bool resultsMatch() const
std::string posKey() const
std::string::size_type theFindString
int reportCount
total number of test cases reported so far
void run()
generates and executes cases using configuration params
SBuf theSBufHay
the string to be searched
void testRFindChar()
std::set< std::string > failedCats
reported failed categories
SBuf::size_type maxHayLength
approximate maximum generated hay string length
void testFindCharDefs()
static SBuf RandomSBuf(const int length)
Definition SBuf.h:94
MemBlob::size_type size_type
Definition SBuf.h:96
A const & max(A const &lhs, A const &rhs)