aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/unittest/dynamicastmatcherdiagnosticcontainer-matcher.h
blob: d6546213596946f90c3db24d0d3d3ad9928b8c5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0

#pragma once

#include "googletest.h"

using testing::PrintToString;

namespace {

MATCHER_P5(HasDiagnosticMessage, errorTypeText, startLine, startColumn, endLine, endColumn,
           std::string(negation ? "isn't " : "is ")
           + "{" + PrintToString(errorTypeText)
           + ": (" + PrintToString(startLine)
           + ", " + PrintToString(startColumn)
           + "), (" + PrintToString(endLine)
           + ", " + PrintToString(endColumn)
           + ")}"
           )
{
    if (!arg.empty() && arg.front().messages.empty()) {
        *result_listener << "no messages";
        return  false;
    }

    auto message = arg.front().messages.front();
    auto sourceRange = message.sourceRange;

    return message.errorTypeText() == errorTypeText
        && sourceRange.start.line == uint(startLine)
        && sourceRange.start.column == uint(startColumn)
        && sourceRange.end.line == uint(endLine)
        && sourceRange.end.column == uint(endColumn);
}

MATCHER_P5(HasDiagnosticContext, contextTypeText, startLine, startColumn, endLine, endColumn,
           std::string(negation ? "isn't " : "is ")
            + "{" + PrintToString(contextTypeText)
           + ": (" + PrintToString(startLine)
           + ", " + PrintToString(startColumn)
           + "), (" + PrintToString(endLine)
           + ", " + PrintToString(endColumn)
           + ")}"
           )
{
    if (!arg.empty() && arg.front().messages.empty()) {
        *result_listener << "no context";
        return  false;
    }

    auto context = arg.front().contexts.front();
    auto sourceRange = context.sourceRange;

    return context.contextTypeText() == contextTypeText
        && sourceRange.start.line == uint(startLine)
        && sourceRange.start.column == uint(startColumn)
        && sourceRange.end.line == uint(endLine)
        && sourceRange.end.column == uint(endColumn);
}

}