QDuplicateTracker: test with std::string, too

std::string is a nice value_type for when you want to track short
strings (because of its SSO). Check that it works, incl. in case
the implementation falls back to QSet in the absence of std::pmr
support in the stdlib.

Pick-to: 6.5
Change-Id: I2406258355295c2b1300c4ae8001cead59bb27d6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit fe8c8e0fceec09b6ac6f358d522aeae9a5550bd0)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 3446ece05671b050f2fa520a966c98a0c30c6615)
This commit is contained in:
Marc Mutz 2023-12-08 02:34:07 +01:00 committed by Qt Cherry-pick Bot
parent cbb0dabc4c
commit 4d8b7b584a

View File

@ -6,6 +6,8 @@
#include <QtCore/private/qduplicatetracker_p.h>
#include <QObject>
#include <string>
#include <utility>
class tst_QDuplicateTracker : public QObject
@ -50,6 +52,27 @@ void tst_QDuplicateTracker::hasSeen()
QVERIFY(!tracker.hasSeen(string3));
QVERIFY(tracker.hasSeen(string3));
}
{
QDuplicateTracker<std::string, 2> tracker;
std::string string1("string1");
std::string string2("string2");
std::string string2_2("string2");
std::string string3("string3");
// Move when seen
QVERIFY(!tracker.hasSeen(string1));
QVERIFY(tracker.hasSeen(std::move(string1)));
// Move when unseen
QVERIFY(!tracker.hasSeen(std::move(string2)));
QVERIFY(tracker.hasSeen(string2_2));
// Past the prealloc amount
QVERIFY(!tracker.hasSeen(string3));
QVERIFY(tracker.hasSeen(string3));
}
}
void tst_QDuplicateTracker::clear()