Cutelee  6.1.0
testsafestring.cpp
1 /*
2  This file is part of the Cutelee template system.
3 
4  Copyright (c) 2009,2010 Stephen Kelly <steveire@gmail.com>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public
8  License as published by the Free Software Foundation; either version
9  2.1 of the Licence, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public
17  License along with this library. If not, see <http://www.gnu.org/licenses/>.
18 
19 */
20 
21 #ifndef SAFESTRINGTEST_H
22 #define SAFESTRINGTEST_H
23 
24 #include <QtCore/QObject>
25 #include <QtTest/QTest>
26 
27 #include "coverageobject.h"
28 #include "outputstream.h"
29 #include "safestring.h"
30 
31 using namespace Cutelee;
32 
34 {
35  Q_OBJECT
36 private Q_SLOTS:
37  void testCombining();
38  void testAppending();
39  void testChopping();
40  void testReplacing();
41 };
42 
43 void TestSafeString::testCombining()
44 {
45  auto string1 = QStringLiteral("this & that");
46  auto string2 = QStringLiteral(" over & under");
47  SafeString safeString1unsafe(string1);
48  SafeString safeString2unsafe(string2);
49  SafeString safeString1safe(string1, SafeString::IsSafe);
50  SafeString safeString2safe(string2, SafeString::IsSafe);
51 
52  SafeString combined;
53  combined = safeString1safe + safeString2safe;
54  QVERIFY(combined.isSafe());
55  combined = safeString1safe + safeString1unsafe;
56  QVERIFY(!combined.isSafe());
57  combined = safeString1safe + string1;
58  QVERIFY(!combined.isSafe());
59  combined = safeString1unsafe + safeString1safe;
60  QVERIFY(!combined.isSafe());
61  combined = safeString1unsafe + safeString2unsafe;
62  QVERIFY(!combined.isSafe());
63  combined = safeString1unsafe + string1;
64  QVERIFY(!combined.isSafe());
65 }
66 
67 void TestSafeString::testAppending()
68 {
69  auto string1 = QStringLiteral("this & that");
70  SafeString safeString1unsafe(string1);
71  SafeString safeString1safe(string1, SafeString::IsSafe);
72  SafeString safeString2safe(string1, SafeString::IsSafe);
73 
74  SafeString result;
75  result = safeString1safe.get().append(safeString1safe);
76  QVERIFY(safeString1safe.isSafe());
77  QVERIFY(result.isSafe());
78  QCOMPARE(result.get(), safeString1safe.get());
79  result = safeString1safe.get().append(string1);
80  QVERIFY(!safeString1safe.isSafe());
81  QVERIFY(!result.isSafe());
82  QCOMPARE(result.get(), safeString1safe.get());
83  result = safeString1unsafe.get().append(string1);
84  QVERIFY(!safeString1unsafe.isSafe());
85  QVERIFY(!result.isSafe());
86  QCOMPARE(result.get(), safeString1unsafe.get());
87 }
88 
89 void TestSafeString::testChopping()
90 {
91  auto string1 = QStringLiteral("this & that");
92  SafeString safeString1unsafe(string1);
93  SafeString safeString1safe(string1, SafeString::IsSafe);
94 
95  safeString1safe.get().chop(4);
96  QVERIFY(!safeString1safe.isSafe());
97  QVERIFY(QStringLiteral("this & ") == safeString1safe.get());
98  safeString1unsafe.get().chop(4);
99  QVERIFY(!safeString1unsafe.isSafe());
100  QVERIFY(QStringLiteral("this & ") == safeString1unsafe.get());
101 }
102 
103 void TestSafeString::testReplacing()
104 {
105  auto string1 = QStringLiteral("x&\ny");
106  SafeString safeString1safe(string1, SafeString::IsSafe);
107 
108  auto result = safeString1safe.get().replace(QLatin1Char('\n'),
109  QStringLiteral("<br />"));
110  QVERIFY(!result.isSafe());
111  QVERIFY(!safeString1safe.isSafe());
112  QCOMPARE(result.get(), safeString1safe.get());
113 }
114 
115 QTEST_MAIN(TestSafeString)
116 #include "testsafestring.moc"
117 
118 #endif
A QString wrapper class for containing whether a string is safe or needs to be escaped.
Definition: safestring.h:92
bool isSafe() const
Definition: safestring.cpp:63
const NestedString & get() const
Definition: safestring.h:340
@ IsSafe
The string is safe and requires no further escaping.
Definition: safestring.h:98
The Cutelee namespace holds all public Cutelee API.
Definition: Mainpage.dox:8