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
31using namespace Cutelee;
32
34{
35 Q_OBJECT
36private Q_SLOTS:
37 void testCombining();
38 void testAppending();
39 void testChopping();
40 void testReplacing();
41};
42
43void 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
67void 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
89void 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
103void 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
115QTEST_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
const NestedString & get() const
Definition safestring.h:340
bool isSafe() const
The Cutelee namespace holds all public Cutelee API.
Definition Mainpage.dox:8