21 #include "addressee.h" 22 #include "vcardconverter.h" 24 #include <qtest_kde.h> 30 class RoundtripTest :
public QObject
35 QString mOutFilePattern;
42 QStringList mInputFiles;
46 void testVCardRoundtrip_data();
47 void testVCardRoundtrip();
51 void RoundtripTest::initTestCase()
53 mOutFilePattern = QLatin1String(
"%1.ref" );
57 mInputDir = QDir( QLatin1String(
":/input" ) );
58 QVERIFY( mInputDir.exists() );
59 QVERIFY( mInputDir.cd( QLatin1String(
"tests" ) ) );
61 mOutput2_1Dir = QDir( QLatin1String(
":/output2.1" ) );
62 QVERIFY( mOutput2_1Dir.exists() );
63 QVERIFY( mOutput2_1Dir.cd( QLatin1String(
"tests" ) ) );
65 mOutput3_0Dir = QDir( QLatin1String(
":/output3.0" ) );
66 QVERIFY( mOutput3_0Dir.exists() );
67 QVERIFY( mOutput3_0Dir.cd( QLatin1String(
"tests" ) ) );
69 mOutput4_0Dir = QDir( QLatin1String(
":/output4.0" ) );
70 QVERIFY( mOutput4_0Dir.exists() );
71 QVERIFY( mOutput4_0Dir.cd( QLatin1String(
"tests" ) ) );
75 mInputFiles = mInputDir.entryList();
76 QVERIFY( !mInputFiles.isEmpty() );
79 void RoundtripTest::testVCardRoundtrip_data()
81 QTest::addColumn<QString>(
"inputFile" );
82 QTest::addColumn<QString>(
"output2_1File" );
83 QTest::addColumn<QString>(
"output3_0File" );
84 QTest::addColumn<QString>(
"output4_0File" );
86 Q_FOREACH (
const QString &inputFile, mInputFiles ) {
87 const QString outFile = mOutFilePattern.arg( inputFile );
89 QTest::newRow( QFile::encodeName( inputFile ) )
91 << ( mOutput2_1Dir.exists( outFile ) ? outFile : QString() )
92 << ( mOutput3_0Dir.exists( outFile ) ? outFile : QString() )
93 << ( mOutput4_0Dir.exists( outFile ) ? outFile : QString() );
97 void RoundtripTest::testVCardRoundtrip()
99 QFETCH( QString, inputFile );
100 QFETCH( QString, output2_1File );
101 QFETCH( QString, output3_0File );
102 QFETCH( QString, output4_0File );
104 QVERIFY2( !output2_1File.isEmpty()
105 || !output3_0File.isEmpty()
106 || !output4_0File.isEmpty(),
107 "No reference output file for either format version" );
109 QFile input( QFileInfo( mInputDir, inputFile ).absoluteFilePath() );
110 QVERIFY( input.open( QIODevice::ReadOnly ) );
112 const QByteArray inputData = input.readAll();
113 QVERIFY( !inputData.isEmpty() );
117 QVERIFY( !list.isEmpty() );
119 if ( !output2_1File.isEmpty() ) {
120 const QByteArray outputData = converter.createVCards( list, VCardConverter::v2_1 );
122 QFile outputFile( QFileInfo( mOutput2_1Dir, output2_1File ).absoluteFilePath() );
123 QVERIFY( outputFile.open( QIODevice::ReadOnly ) );
125 const QByteArray outputRefData = outputFile.readAll();
126 QCOMPARE( outputData.size(), outputRefData.size() );
128 const QList<QByteArray> outputLines = outputData.split(
'\n' );
129 const QList<QByteArray> outputRefLines = outputRefData.split(
'\n' );
130 QCOMPARE( outputLines.count(), outputRefLines.count() );
132 for (
int i = 0; i < outputLines.count(); ++i ) {
133 const QByteArray actual = outputLines[ i ];
134 const QByteArray expect = outputRefLines[ i ];
136 if ( actual != expect ) {
137 qCritical() <<
"Mismatch in v2.1 output line" << ( i + 1 );
138 QCOMPARE( actual.count(), expect.count() );
140 qCritical() <<
"\nActual:" << actual <<
"\nExpect:" << expect;
141 QCOMPARE( actual, expect );
146 if ( !output3_0File.isEmpty() ) {
147 const QByteArray outputData = converter.createVCards( list, VCardConverter::v3_0 );
149 QFile outputFile( QFileInfo( mOutput3_0Dir, output3_0File ).absoluteFilePath() );
150 QVERIFY( outputFile.open( QIODevice::ReadOnly ) );
152 const QByteArray outputRefData = outputFile.readAll();
155 const QList<QByteArray> outputLines = outputData.split(
'\n' );
156 const QList<QByteArray> outputRefLines = outputRefData.split(
'\n' );
157 QCOMPARE( outputLines.count(), outputRefLines.count() );
159 for (
int i = 0; i < outputLines.count(); ++i ) {
160 const QByteArray actual = outputLines[ i ];
161 const QByteArray expect = outputRefLines[ i ];
163 if ( actual != expect ) {
164 qCritical() <<
"Mismatch in v3.0 output line" << ( i + 1 );
166 qCritical() <<
"\nActual:" << actual <<
"\nExpect:" << expect;
167 QCOMPARE( actual.count(), expect.count() );
168 QCOMPARE( actual, expect );
174 QTEST_KDEMAIN( RoundtripTest, NoGUI )
176 #include "testroundtrip.moc" a QValueList of Addressee, with sorting functionality
Class to converting contact objects into vCard format and vice versa.