File: test_parser.h

package info (click to toggle)
kdevelop 4%3A4.3.1-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 18,844 kB
  • sloc: cpp: 91,758; python: 1,095; lex: 422; ruby: 120; sh: 114; xml: 42; makefile: 38
file content (154 lines) | stat: -rw-r--r-- 3,885 bytes parent folder | download
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/* This file is part of KDevelop

   Copyright 2007-2009 David Nolden <david.nolden.kdevelop@art-master.de>
   Copyright 2011 Milian Wolff <mail@milianw.de>

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License version 2 as published by the Free Software Foundation.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public License
   along with this library; see the file COPYING.LIB.  If not, write to
   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.
*/

#ifndef TEST_PARSER_H
#define TEST_PARSER_H

#include <QObject>

#include "control.h"
#include "dumptree.h"

class pool;

class TestParser : public QObject {
  Q_OBJECT

public:
  TestParser() { }

private slots:
  void initTestCase();
  void testSymbolTable();
  void testTokenTable();
  void testParser();
  void testTemplateArguments();
  void testTemplatedDTor();
  void testManyComparisons();
  void testParserFail();
  void testPartialParseFail();
  void testParseMethod();
  void testForStatements();
  void testIfStatements();

  void testComments();
  void testComments2();
  void testComments3();
  void testComments4();
  void testComments5();
  void testComments6();

  void testPreprocessor();
  void testPreprocessorStringify();
  void testStringConcatenation();
  void testEmptyInclude();

  void testCondition();
  void testNonTemplateDeclaration();
  void testInitListTrailingComma();
  void testAsmVolatile();
  void testIncrIdentifier();
  void testParseFile();

  void testQProperty_data();
  void testQProperty();

  void testCommentAfterFunctionCall();
  void testPtrToMemberAst();
  void testSwitchStatement();

  void testNamedOperators_data();
  void testNamedOperators();
  void testOperators_data();
  void testOperators();

  void testTypeID_data();
  void testTypeID();

  void testRegister();
  void inlineTemplate();

  void testMultiByteCStrings();
  void testMultiByteComments();

  void testTernaryEmptyExpression();

  //BEGIN C++2011 support
  void testRangeBasedFor();
  void testRValueReference();
  void testDefaultDeletedFunctions_data();
  void testDefaultDeletedFunctions();
  void testVariadicTemplates_data();
  void testVariadicTemplates();
  void testStaticAssert_data();
  void testStaticAssert();
  void testConstExpr_data();
  void testConstExpr();
  void testEnumClass_data();
  void testEnumClass();
  void testRightAngleBrackets_data();
  void testRightAngleBrackets();
  void testCharacterTypes_data();
  void testCharacterTypes();
  void testRawStrings_data();
  void testRawStrings();
  void testNullPtr_data();
  void testNullPtr();
  void testInlineNamespace();
  void testDecltype_data();
  void testDecltype();
  void testAlternativeFunctionSyntax_data();
  void testAlternativeFunctionSyntax();
  void testLambda_data();
  void testLambda();
  void testInitList_data();
  void testInitList();
  void testInitListFalsePositives();
  void memberVirtSpec();
  void memberVirtSpec_data();
  void classVirtSpec();
  void classVirtSpec_data();
  void testUsingAlias();
  void testNoexcept();
  //END C++2011 Support

protected:
  /**
   * dump @p node and print problems of @c control
   */
  void dump(AST* node);
  /**
   * Retrieve string representation of @p node.
   */
  QString stringForNode(AST* node) const;

  bool hasKind(AST*, AST::NODE_KIND);
  AST* getAST(AST*, AST::NODE_KIND, int num = 0);

private:
  Control control;
  DumpTree dumper;

  ParseSession* lastSession;

  TranslationUnitAST* parse(const QByteArray& unit);
};

#endif // TEST_PARSER_H