mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-23 18:32:51 +00:00
143 lines
3.9 KiB
C++
143 lines
3.9 KiB
C++
/*
|
|
This file is part of LibSyndication.
|
|
|
|
Copyright (C) 2006 Frank Osterfeld <osterfeld@kde.org>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
As a special exception, permission is given to link this program
|
|
with any edition of Qt, and distribute the resulting executable,
|
|
without including the source code for Qt in the source distribution.
|
|
*/
|
|
|
|
#include "specificdocument.h"
|
|
#include "documentsource.h"
|
|
#include "feed.h"
|
|
#include "parsercollection.h"
|
|
|
|
#include <KComponentData>
|
|
|
|
#include <QDebug>
|
|
#include <QtCore/QByteArray>
|
|
#include <QtCore/QFile>
|
|
#include <QtCore/QString>
|
|
|
|
#include <iostream>
|
|
|
|
|
|
using namespace Syndication;
|
|
|
|
void printUsage(const QString& error)
|
|
{
|
|
std::cerr << "testlibsyndication - (C) Frank Osterfeld 2006" << std::endl;
|
|
std::cerr << std::endl;
|
|
if (!error.isNull())
|
|
{
|
|
std::cerr << error.toUtf8().data() << std::endl;
|
|
std::cerr << std::endl;
|
|
}
|
|
else
|
|
{
|
|
std::cerr << "Prints the parsed content of a feed file to standard output." << std::endl;
|
|
std::cerr << std::endl;
|
|
}
|
|
std::cerr << "Usage: testlibsyndication [--specific-format] <file> [--compare <expectedfile>]" << std::endl;
|
|
std::cerr << std::endl;
|
|
std::cerr << "--specific-format: If set, the debug output for the specific" << std::endl;
|
|
std::cerr << "feed format is printed to stdout, otherwise the debug output" << std::endl;
|
|
std::cerr << "for the abstraction" << std::endl;
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
setenv("LC_ALL", "C", 1);
|
|
|
|
KComponentData componentData("testlibsyndication");
|
|
int pcompare = 2;
|
|
if (argc < 2)
|
|
{
|
|
printUsage("filename expected");
|
|
return 1;
|
|
}
|
|
|
|
QString filename(argv[1]);
|
|
QString arg1(argv[1]);
|
|
|
|
bool specificformat = false;
|
|
|
|
if (filename == "--specific-format")
|
|
{
|
|
if (argc < 3)
|
|
{
|
|
printUsage("filename expected");
|
|
return 1;
|
|
}
|
|
filename = QString(argv[2]);
|
|
specificformat = true;
|
|
pcompare += 1;
|
|
}
|
|
|
|
QString expfname;
|
|
|
|
if (argc >= pcompare + 1 && QString(argv[pcompare]) == "--compare")
|
|
{
|
|
expfname = QString(argv[pcompare+1]);
|
|
}
|
|
|
|
|
|
QFile f(filename);
|
|
|
|
if (!f.open(QIODevice::ReadOnly))
|
|
{
|
|
printUsage("Couldn't open file");
|
|
return 1;
|
|
}
|
|
|
|
|
|
DocumentSource src(f.readAll(), "http://libsyndicationtest");
|
|
f.close();
|
|
|
|
FeedPtr ptr(Syndication::parse(src));
|
|
|
|
if (ptr == 0L)
|
|
{
|
|
printUsage( QString("Couldn't parse file: (%1)").arg( Syndication::parserCollection()->lastError() ) );
|
|
return 1;
|
|
}
|
|
|
|
QString res = specificformat ? ptr->specificDocument()->debugInfo() : ptr->debugInfo();
|
|
|
|
if (expfname.isNull())
|
|
{
|
|
std::cout << res.toUtf8().data() << std::endl;
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
QFile expFile(expfname);
|
|
expFile.open(QIODevice::ReadOnly);
|
|
QByteArray expected = expFile.readAll();
|
|
expFile.close();
|
|
if (expected.trimmed() != res.toUtf8().trimmed())
|
|
{
|
|
qDebug() << "Obtained:\n" << res.toUtf8().trimmed();
|
|
qDebug() << "Expected:\n" << expected.trimmed();
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
return 0;
|
|
}
|