mirror of
https://github.com/YACReader/yacreader
synced 2025-07-14 02:54:46 -04:00
Update QsLog to 2.1 snapshot 46b643d5bcbc
This commit is contained in:
158
third_party/QsLog/unittest/TestLog.h
vendored
Normal file
158
third_party/QsLog/unittest/TestLog.h
vendored
Normal file
@ -0,0 +1,158 @@
|
||||
#ifndef TESTLOG_H
|
||||
#define TESTLOG_H
|
||||
|
||||
#include "QsLogDest.h"
|
||||
#include "QsLogDestFile.h"
|
||||
#include <QHash>
|
||||
#include <QList>
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QDir>
|
||||
|
||||
// A destination that tracks log messages
|
||||
class MockDestination : public QsLogging::Destination
|
||||
{
|
||||
public:
|
||||
struct Message
|
||||
{
|
||||
Message() : level(QsLogging::TraceLevel) {}
|
||||
QString text;
|
||||
QsLogging::Level level;
|
||||
};
|
||||
|
||||
public:
|
||||
explicit MockDestination(const QLatin1String& myType = QLatin1String("mock"))
|
||||
: mMyType(myType)
|
||||
{
|
||||
}
|
||||
|
||||
void write(const QsLogging::LogMessage& message) override
|
||||
{
|
||||
Message m;
|
||||
m.text = message.formatted;
|
||||
m.level = message.level;
|
||||
mMessages.push_back(m);
|
||||
++mCountByLevel[message.level];
|
||||
}
|
||||
|
||||
bool isValid() override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
QString type() const override
|
||||
{
|
||||
return mMyType;
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
mMessages.clear();
|
||||
mCountByLevel.clear();
|
||||
}
|
||||
|
||||
int messageCount() const
|
||||
{
|
||||
return mMessages.count();
|
||||
}
|
||||
|
||||
int messageCountForLevel(QsLogging::Level level) const
|
||||
{
|
||||
return mCountByLevel.value(level);
|
||||
}
|
||||
|
||||
bool hasMessage(const QString &messageContent, QsLogging::Level level) const
|
||||
{
|
||||
Q_FOREACH (const Message &m, mMessages) {
|
||||
if (m.level == level && m.text.contains(messageContent))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
const Message& messageAt(int index)
|
||||
{
|
||||
Q_ASSERT(index >= 0 && index < messageCount());
|
||||
return mMessages.at(index);
|
||||
}
|
||||
|
||||
private:
|
||||
QHash<QsLogging::Level,int> mCountByLevel;
|
||||
QList<Message> mMessages;
|
||||
QLatin1String mMyType;
|
||||
};
|
||||
|
||||
// A rotation strategy that simulates file rotations.
|
||||
// Stores a "file system" inside a string list and can perform some operations on it.
|
||||
class MockSizeRotationStrategy : public QsLogging::SizeRotationStrategy
|
||||
{
|
||||
public:
|
||||
MockSizeRotationStrategy()
|
||||
: fakePath("FAKEPATH")
|
||||
, logName("QsLog.txt")
|
||||
{
|
||||
setInitialInfo(QDir(fakePath).filePath(logName), 0);
|
||||
files.append(logName);
|
||||
}
|
||||
|
||||
const QStringList& filesList() {
|
||||
return files;
|
||||
}
|
||||
|
||||
void rotate() override {
|
||||
SizeRotationStrategy::rotate();
|
||||
files.append(logName);
|
||||
}
|
||||
|
||||
protected:
|
||||
bool removeFileAtPath(const QString& path) override {
|
||||
QString editedPath = path;
|
||||
if (editedPath.startsWith(fakePath)) {
|
||||
editedPath.remove(0, fakePath.size() + 1);
|
||||
const int indexOfPath = files.indexOf(editedPath);
|
||||
if (indexOfPath != -1) {
|
||||
files.removeAt(indexOfPath);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool fileExistsAtPath(const QString& path) override {
|
||||
QString editedPath = path;
|
||||
if (editedPath.startsWith(fakePath)) {
|
||||
editedPath.remove(0, fakePath.size() + 1);
|
||||
return files.indexOf(editedPath) != -1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool renameFileFromTo(const QString& from, const QString& to) override {
|
||||
QString editedFromPath = from;
|
||||
QString editedToPath = to;
|
||||
|
||||
if (editedFromPath.startsWith(fakePath) && editedToPath.startsWith(fakePath)) {
|
||||
editedFromPath.remove(0, fakePath.size() + 1);
|
||||
editedToPath.remove(0, fakePath.size() + 1);
|
||||
const int ind = files.indexOf(editedFromPath);
|
||||
if (ind != -1) {
|
||||
files.removeAll(editedFromPath);
|
||||
files.append(editedToPath);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private:
|
||||
QStringList files;
|
||||
const QString fakePath;
|
||||
const QString logName;
|
||||
};
|
||||
|
||||
|
||||
#endif // TESTLOG_H
|
||||
|
Reference in New Issue
Block a user