Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qmlutils_p.h
Go to the documentation of this file.
1
// Copyright (C) 2021 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4
#
ifndef
QQMLTESTUTILS_P_H
5
#
define
QQMLTESTUTILS_P_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
<
QtCore
/
QTemporaryDir
>
19
#
include
<
QtCore
/
QDir
>
20
#
include
<
QtCore
/
QUrl
>
21
#
include
<
QtCore
/
QCoreApplication
>
22
#
include
<
QtCore
/
QStringList
>
23
#
include
<
QtTest
/
QTest
>
24
#
include
<
QtCore
/
private
/
qglobal_p
.
h
>
25
#
include
<
private
/
qqmljsgrammar_p
.
h
>
26
27
QT_BEGIN_NAMESPACE
28
29
/* Base class for tests with data that are located in a "data" subfolder. */
30
31
class
QQmlDataTest :
public
QObject
32
{
33
Q_OBJECT
34
public
:
35
enum
class
FailOnWarningsPolicy {
36
DoNotFailOnWarnings,
37
FailOnWarnings
38
};
39
40
QQmlDataTest(
41
const
char
*qmlTestDataDir,
42
FailOnWarningsPolicy failOnWarningsPolicy = FailOnWarningsPolicy::DoNotFailOnWarnings,
43
const
char
*dataSubdir =
"data"
);
44
virtual
~QQmlDataTest();
45
46
QString testFile(
const
QString &fileName)
const
;
47
inline
QString testFile(
const
char
*fileName)
const
48
{
return
testFile(QLatin1String(fileName)); }
49
inline
QUrl testFileUrl(
const
QString &fileName)
const
50
{
51
const
QString fn = testFile(fileName);
52
return
fn.startsWith(QLatin1Char(
':'
))
53
? QUrl(QLatin1String(
"qrc"
) + fn)
54
: QUrl::fromLocalFile(fn);
55
}
56
inline
QUrl testFileUrl(
const
char
*fileName)
const
57
{
return
testFileUrl(QLatin1String(fileName)); }
58
59
inline
QString dataDirectory()
const
{
return
m_dataDirectory; }
60
inline
QUrl dataDirectoryUrl()
const
{
return
m_dataDirectoryUrl; }
61
inline
QString directory()
const
{
return
m_directory; }
62
63
static
inline
QQmlDataTest *instance() {
return
m_instance; }
64
65
bool
canImportModule(
const
QString &importTestQmlSource)
const
;
66
67
public
Q_SLOTS:
68
virtual
void
initTestCase();
69
virtual
void
init();
70
71
private
:
72
static
QQmlDataTest *m_instance;
73
74
// The directory in which to search for m_dataSubDir.
75
const
char
*m_qmlTestDataDir =
nullptr
;
76
// The subdirectory containing the actual data. Typically "data"
77
const
char
*m_dataSubDir =
nullptr
;
78
// The path to m_dataSubDir, if found.
79
const
QString m_dataDirectory;
80
const
QUrl m_dataDirectoryUrl;
81
QTemporaryDir m_cacheDir;
82
QString m_directory;
83
bool
m_usesOwnCacheDir =
false
;
84
FailOnWarningsPolicy m_failOnWarningsPolicy = FailOnWarningsPolicy::DoNotFailOnWarnings;
85
};
86
87
class
QQmlTestMessageHandler
88
{
89
Q_DISABLE_COPY
(
QQmlTestMessageHandler
)
90
public
:
91
QQmlTestMessageHandler
();
92
~
QQmlTestMessageHandler
();
93
94
const
QStringList
&
messages
()
const
{
return
m_messages; }
95
const
QString
messageString
()
const
{
return
m_messages.join(QLatin1Char(
'\n'
)); }
96
97
void
clear
() { m_messages.clear(); }
98
99
void
setIncludeCategoriesEnabled
(
bool
enabled) { m_includeCategories = enabled; }
100
101
private
:
102
static
void
messageHandler(QtMsgType,
const
QMessageLogContext &context,
const
QString &message);
103
104
static
QQmlTestMessageHandler
*m_instance;
105
QStringList m_messages;
106
QtMessageHandler m_oldHandler;
107
bool
m_includeCategories;
108
};
109
110
class
QQmlEngine;
111
112
namespace
QV4
{
113
struct
ExecutionEngine;
114
}
115
116
enum
class
GCFlags
{
117
None
= 0,
118
DontSendPostedEvents
= 1
119
};
120
121
bool
gcDone
(
const
QV4
::ExecutionEngine *engine);
122
void
gc
(
QV4
::ExecutionEngine &engine,
GCFlags
flags =
GCFlags
::
None
);
123
bool
gcDone
(QQmlEngine *engine);
124
void
gc
(QQmlEngine &engine,
GCFlags
flags =
GCFlags
::
None
);
125
126
namespace
Syntax
{
127
using
Token
=
QQmlJSGrammar
::
VariousConstants
;
128
// TODO(QTBUG-138020)
129
constexpr
auto
spellFor
(Token token) ->
QLatin1StringView
130
{
131
switch
(token) {
132
case
Token::T_COLON:
133
return
QLatin1StringView(
":"
);
134
case
Token::T_LBRACE:
135
return
QLatin1StringView(
"{"
);
136
case
Token::T_RBRACE:
137
return
QLatin1StringView(
"}"
);
138
case
Token::T_VAR:
139
return
QLatin1StringView(
"var"
);
140
case
Token::T_PROPERTY:
141
return
QLatin1StringView(
"property"
);
142
case
Token::T_DEFAULT:
143
return
QLatin1StringView(
"default"
);
144
case
Token::T_READONLY:
145
return
QLatin1StringView(
"readonly"
);
146
case
Token::T_REQUIRED:
147
return
QLatin1StringView(
"required"
);
148
case
Token::T_FINAL:
149
return
QLatin1StringView(
"final"
);
150
case
Token::T_VIRTUAL:
151
return
QLatin1StringView(
"virtual"
);
152
case
Token::T_OVERRIDE:
153
return
QLatin1StringView(
"override"
);
154
default
:
155
break
;
156
}
157
Q_UNREACHABLE_RETURN({});
158
}
159
160
using
Word
=
std
::
variant
<
Token
,
QLatin1StringView
>;
161
auto
stringView
(
const
Word &word) ->
QLatin1StringView
;
162
163
using
Phrase
=
QList
<
Word
>;
164
auto
toString
(
const
Phrase &phrase) ->
QString
;
165
166
// comfort
167
auto
operator
+(
const
Word &word,
const
Phrase &phrase) ->
Phrase
;
168
auto
operator
+(
const
Word &word1,
const
Word &word2) ->
Phrase
;
169
170
// if such declaration generating functions start to grow it might be worth creating a dedicated
171
// more optimized generator
172
173
// can probably be generalized later to accept QList<Phrase> if needed
174
auto
objectDeclaration
(Phrase &&objectMember = {},
175
QLatin1StringView objName = QLatin1StringView(
"QtObject"
)) ->
Phrase
;
176
177
}
// namespace Syntax
178
179
QT_END_NAMESPACE
180
181
#
endif
// QQMLTESTUTILS_P_H
QQmlTestMessageHandler
Definition
qmlutils_p.h:88
QQmlTestMessageHandler::messageString
const QString messageString() const
Definition
qmlutils_p.h:95
QQmlTestMessageHandler::messages
const QStringList & messages() const
Definition
qmlutils_p.h:94
QQmlTestMessageHandler::clear
void clear()
Definition
qmlutils_p.h:97
QQmlTestMessageHandler::~QQmlTestMessageHandler
~QQmlTestMessageHandler()
Definition
qmlutils.cpp:108
QQmlTestMessageHandler::setIncludeCategoriesEnabled
void setIncludeCategoriesEnabled(bool enabled)
Definition
qmlutils_p.h:99
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QV4
Definition
qjsvalue.h:24
Syntax
Definition
qmlutils.cpp:139
Syntax::spellFor
constexpr auto spellFor(Token token) -> QLatin1StringView
Definition
qmlutils_p.h:129
Syntax::stringView
auto stringView(const Word &word) -> QLatin1StringView
Definition
qmlutils.cpp:141
Syntax::toString
auto toString(const Phrase &phrase) -> QString
Definition
qmlutils.cpp:147
Syntax::operator+
auto operator+(const Word &word, const Phrase &phrase) -> Phrase
Definition
qmlutils.cpp:157
Syntax::objectDeclaration
auto objectDeclaration(Phrase &&objectMember, QLatin1StringView objName) -> Phrase
Definition
qmlutils.cpp:167
Q_GLOBAL_STATIC
Q_GLOBAL_STATIC(QReadWriteLock, g_updateMutex)
GCFlags
GCFlags
Definition
qmlutils_p.h:116
GCFlags::DontSendPostedEvents
@ DontSendPostedEvents
Definition
qmlutils_p.h:118
GCFlags::None
@ None
Definition
qmlutils_p.h:117
gc
void gc(QV4::ExecutionEngine &engine, GCFlags flags)
Definition
qmlutils.cpp:121
gc
void gc(QQmlEngine &engine, GCFlags flags)
Definition
qmlutils.cpp:134
gcDone
bool gcDone(const QV4::ExecutionEngine *engine)
Definition
qmlutils.cpp:117
gcDone
bool gcDone(QQmlEngine *engine)
Definition
qmlutils.cpp:130
qtdeclarative
src
quicktestutils
qml
qmlutils_p.h
Generated on
for Qt by
1.18.0