1 | /**************************************************************************** |
2 | ** |
3 | ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). |
4 | ** Contact: http://www.qt-project.org/legal |
5 | ** |
6 | ** This file is part of the QtTest module of the Qt Toolkit. |
7 | ** |
8 | ** $QT_BEGIN_LICENSE:LGPL$ |
9 | ** Commercial License Usage |
10 | ** Licensees holding valid commercial Qt licenses may use this file in |
11 | ** accordance with the commercial license agreement provided with the |
12 | ** Software or, alternatively, in accordance with the terms contained in |
13 | ** a written agreement between you and Digia. For licensing terms and |
14 | ** conditions see http://qt.digia.com/licensing. For further information |
15 | ** use the contact form at http://qt.digia.com/contact-us. |
16 | ** |
17 | ** GNU Lesser General Public License Usage |
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser |
19 | ** General Public License version 2.1 as published by the Free Software |
20 | ** Foundation and appearing in the file LICENSE.LGPL included in the |
21 | ** packaging of this file. Please review the following information to |
22 | ** ensure the GNU Lesser General Public License version 2.1 requirements |
23 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
24 | ** |
25 | ** In addition, as a special exception, Digia gives you certain additional |
26 | ** rights. These rights are described in the Digia Qt LGPL Exception |
27 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
28 | ** |
29 | ** GNU General Public License Usage |
30 | ** Alternatively, this file may be used under the terms of the GNU |
31 | ** General Public License version 3.0 as published by the Free Software |
32 | ** Foundation and appearing in the file LICENSE.GPL included in the |
33 | ** packaging of this file. Please review the following information to |
34 | ** ensure the GNU General Public License version 3.0 requirements will be |
35 | ** met: http://www.gnu.org/copyleft/gpl.html. |
36 | ** |
37 | ** |
38 | ** $QT_END_LICENSE$ |
39 | ** |
40 | ****************************************************************************/ |
41 | |
42 | #ifndef QTESTCOREELEMENT_H |
43 | #define QTESTCOREELEMENT_H |
44 | |
45 | #include <QtTest/qtestcorelist.h> |
46 | #include <QtTest/qtestelementattribute.h> |
47 | |
48 | QT_BEGIN_HEADER |
49 | |
50 | QT_BEGIN_NAMESPACE |
51 | |
52 | QT_MODULE(Test) |
53 | |
54 | template <class ElementType> |
55 | class QTestCoreElement: public QTestCoreList<ElementType> |
56 | { |
57 | public: |
58 | QTestCoreElement( int type = -1 ); |
59 | virtual ~QTestCoreElement(); |
60 | |
61 | void addAttribute(const QTest::AttributeIndex index, const char *value); |
62 | QTestElementAttribute *attributes() const; |
63 | const char *attributeValue(QTest::AttributeIndex index) const; |
64 | const char *attributeName(QTest::AttributeIndex index) const; |
65 | const QTestElementAttribute *attribute(QTest::AttributeIndex index) const; |
66 | |
67 | const char *elementName() const; |
68 | QTest::LogElementType elementType() const; |
69 | |
70 | private: |
71 | QTestElementAttribute *listOfAttributes; |
72 | QTest::LogElementType type; |
73 | }; |
74 | |
75 | template<class ElementType> |
76 | QTestCoreElement<ElementType>::QTestCoreElement(int t) |
77 | :listOfAttributes(0), type(QTest::LogElementType(t)) |
78 | { |
79 | } |
80 | |
81 | template<class ElementType> |
82 | QTestCoreElement<ElementType>::~QTestCoreElement() |
83 | { |
84 | delete listOfAttributes; |
85 | } |
86 | |
87 | template <class ElementType> |
88 | void QTestCoreElement<ElementType>::addAttribute(const QTest::AttributeIndex attributeIndex, const char *value) |
89 | { |
90 | if(attributeIndex == -1) |
91 | return; |
92 | |
93 | if (attribute(attributeIndex)) |
94 | return; |
95 | |
96 | QTestElementAttribute *testAttribute = new QTestElementAttribute; |
97 | testAttribute->setPair(attributeIndex, value); |
98 | testAttribute->addToList(&listOfAttributes); |
99 | } |
100 | |
101 | template <class ElementType> |
102 | QTestElementAttribute *QTestCoreElement<ElementType>::attributes() const |
103 | { |
104 | return listOfAttributes; |
105 | } |
106 | |
107 | template <class ElementType> |
108 | const char *QTestCoreElement<ElementType>::attributeValue(QTest::AttributeIndex index) const |
109 | { |
110 | const QTestElementAttribute *attrb = attribute(index); |
111 | if(attrb) |
112 | return attrb->value(); |
113 | |
114 | return 0; |
115 | } |
116 | |
117 | template <class ElementType> |
118 | const char *QTestCoreElement<ElementType>::attributeName(QTest::AttributeIndex index) const |
119 | { |
120 | const QTestElementAttribute *attrb = attribute(index); |
121 | if(attrb) |
122 | return attrb->name(); |
123 | |
124 | return 0; |
125 | } |
126 | |
127 | template <class ElementType> |
128 | const char *QTestCoreElement<ElementType>::elementName() const |
129 | { |
130 | const char *xmlElementNames[] = |
131 | { |
132 | "property" , |
133 | "properties" , |
134 | "failure" , |
135 | "error" , |
136 | "testcase" , |
137 | "testsuite" , |
138 | "benchmark" , |
139 | "system-err" |
140 | }; |
141 | |
142 | if(type != QTest::LET_Undefined) |
143 | return xmlElementNames[type]; |
144 | |
145 | return 0; |
146 | } |
147 | |
148 | template <class ElementType> |
149 | QTest::LogElementType QTestCoreElement<ElementType>::elementType() const |
150 | { |
151 | return type; |
152 | } |
153 | |
154 | template <class ElementType> |
155 | const QTestElementAttribute *QTestCoreElement<ElementType>::attribute(QTest::AttributeIndex index) const |
156 | { |
157 | QTestElementAttribute *iterator = listOfAttributes; |
158 | while(iterator){ |
159 | if(iterator->index() == index) |
160 | return iterator; |
161 | |
162 | iterator = iterator->nextElement(); |
163 | } |
164 | |
165 | return 0; |
166 | } |
167 | |
168 | QT_END_NAMESPACE |
169 | |
170 | QT_END_HEADER |
171 | |
172 | #endif |
173 | |