Use explicit latin1 in the tests.
[grantlee:grantlee.git] / tests / testsafestring.cpp
1 /*
2   This file is part of the Grantlee 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 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   Library 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 <QtTest>
25 #include <QtCore/QObject>
26
27 #include "safestring.h"
28 #include "outputstream.h"
29
30 using namespace Grantlee;
31
32 class TestSafeString : public QObject
33 {
34   Q_OBJECT
35 private Q_SLOTS:
36   void testCombining();
37   void testAppending();
38   void testChopping();
39   void testReplacing();
40 };
41
42 void TestSafeString::testCombining()
43 {
44   QString string1 = QLatin1String( "this & that" );
45   QString string2 = QLatin1String( " over & under" );
46   SafeString safeString1unsafe( string1 );
47   SafeString safeString2unsafe( string2 );
48   SafeString safeString1safe( string1, SafeString::IsSafe );
49   SafeString safeString2safe( string2, SafeString::IsSafe );
50
51   SafeString combined;
52   combined = safeString1safe + safeString2safe;
53   QVERIFY( combined.isSafe() );
54   combined = safeString1safe + safeString1unsafe;
55   QVERIFY( !combined.isSafe() );
56   combined = safeString1safe + string1;
57   QVERIFY( !combined.isSafe() );
58   combined = safeString1unsafe + safeString1safe;
59   QVERIFY( !combined.isSafe() );
60   combined = safeString1unsafe + safeString2unsafe;
61   QVERIFY( !combined.isSafe() );
62   combined = safeString1unsafe + string1;
63   QVERIFY( !combined.isSafe() );
64 }
65
66 void TestSafeString::testAppending()
67 {
68   QString string1 = QLatin1String( "this & that" );
69   SafeString safeString1unsafe( string1 );
70   SafeString safeString1safe( string1, SafeString::IsSafe );
71   SafeString safeString2safe( string1, SafeString::IsSafe );
72
73   SafeString result;
74   result = safeString1safe.get().append( safeString1safe );
75   QVERIFY( safeString1safe.isSafe() );
76   QVERIFY( result.isSafe() );
77   QCOMPARE( result.get(), safeString1safe.get() );
78   result = safeString1safe.get().append( string1 );
79   QVERIFY( !safeString1safe.isSafe() );
80   QVERIFY( !result.isSafe() );
81   QCOMPARE( result.get(), safeString1safe.get() );
82   result = safeString1unsafe.get().append( string1 );
83   QVERIFY( !safeString1unsafe.isSafe() );
84   QVERIFY( !result.isSafe() );
85   QCOMPARE( result.get(), safeString1unsafe.get() );
86 }
87
88 void TestSafeString::testChopping()
89 {
90   QString string1 = QLatin1String( "this & that" );
91   SafeString safeString1unsafe( string1 );
92   SafeString safeString1safe( string1, SafeString::IsSafe );
93
94   safeString1safe.get().chop( 4 );
95   QVERIFY( !safeString1safe.isSafe() );
96   QVERIFY( QLatin1String( "this & " ) == safeString1safe.get() );
97   safeString1unsafe.get().chop( 4 );
98   QVERIFY( !safeString1unsafe.isSafe() );
99   QVERIFY( QLatin1String( "this & " ) == safeString1unsafe.get() );
100 }
101
102 void TestSafeString::testReplacing()
103 {
104   QString string1 = QLatin1String( "x&\ny" );
105   SafeString safeString1safe( string1, SafeString::IsSafe );
106
107   SafeString result = safeString1safe.get().replace( QLatin1Char( '\n' ), QLatin1String( "<br />" ) );
108   QVERIFY( !result.isSafe() );
109   QVERIFY( !safeString1safe.isSafe() );
110   QCOMPARE( result.get(), safeString1safe.get() );
111 }
112
113
114 QTEST_MAIN( TestSafeString )
115 #include "testsafestring.moc"
116
117 #endif
118