OSDN Git Service

It's 2011 now.
[qt-creator-jp/qt-creator-jp.git] / tests / auto / cplusplus / simplifytypes / tst_simplifytypestest.cpp
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
8 **
9 ** No Commercial Usage
10 **
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 **
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, Nokia gives you certain additional
26 ** rights.  These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
31 **
32 **************************************************************************/
33
34 #include <cplusplus/CppRewriter.h>
35
36 #include <QtCore/QString>
37 #include <QtTest/QtTest>
38
39 const char *description[] =
40 {
41     "g++_stdstring",
42     "g++_stdwstring",
43     "g++_stringmap",
44     "g++_wstringmap",
45     "g++_stringlist",
46     "g++_stringset",
47     "g++_stringvector",
48     "g++_wstringvector",
49     "msvc_stdstring",
50     "msvc_stdwstring",
51     "msvc_stringmap",
52     "msvc_wstringmap",
53     "msvc_stringlist",
54     "msvc_stringset",
55     "msvc_stringvector",
56     "msvc_wstringvector",
57 };
58
59 const char *input[] =
60 {
61 // g++
62 "std::string",
63 "std::wstring",
64 "std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >",
65 "std::map<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::less<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > >, std::allocator<std::pair<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > > >",
66 "std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >",
67 "std::set<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >",
68 "std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >",
69 "std::vector<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >",
70 // MSVC
71 "class std::basic_string<char,std::char_traits<char>,std::allocator<char> >",
72 "class std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >",
73 "class std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >",
74 "class std::map<std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >,std::less<std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >,std::allocator<std::pair<std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > const ,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > > > >",
75 "class std::list<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >",
76 "class std::set<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >",
77 "class std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >",
78 "class std::vector<std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> >,std::allocator<std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > > >"
79 };
80
81 const char *output[] =
82 {
83     "std::string",
84     "std::wstring",
85     "std::map<std::string, std::string>",
86     "std::map<std::wstring, std::wstring>",
87     "std::list<std::string>",
88     "std::set<std::string>",
89     "std::vector<std::string>",
90     "std::vector<std::wstring>",
91     "std::string",
92     "std::wstring",
93     "std::map<std::string, std::string>",
94     "std::map<std::wstring, std::wstring>",
95     "std::list<std::string>",
96     "std::set<std::string>",
97     "std::vector<std::string>",
98     "std::vector<std::wstring>",
99 };
100
101 class SimplifyTypesTest : public QObject
102 {
103     Q_OBJECT
104
105 public:
106     SimplifyTypesTest();
107
108 private Q_SLOTS:
109     void testCase1();
110     void testCase1_data();
111 };
112
113 SimplifyTypesTest::SimplifyTypesTest()
114 {
115 }
116
117 void SimplifyTypesTest::testCase1()
118 {
119     QFETCH(QString, input);
120     QFETCH(QString, expected);
121     const QString output = CPlusPlus::simplifySTLType(input);
122     const bool ok = output == expected;
123     if (!ok) {
124         const QString msg = QString::fromAscii("Failure: got '%1' where '%2' was expected for '%3'")
125                 .arg(output, expected, input);
126         QWARN(qPrintable(msg));
127     }
128     QVERIFY2(ok, "Failure");
129 }
130
131 void SimplifyTypesTest::testCase1_data()
132 {
133     QTest::addColumn<QString>("input");
134     QTest::addColumn<QString>("expected");
135     const size_t count = sizeof(input)/sizeof(const char *);
136     for (size_t i = 0; i < count; i++ )
137         QTest::newRow(description[i]) << QString::fromAscii(input[i])
138                                       << QString::fromAscii(output[i]);
139 }
140
141 QTEST_APPLESS_MAIN(SimplifyTypesTest);
142
143 #include "tst_simplifytypestest.moc"