mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-23 10:22:48 +00:00
102 lines
2.5 KiB
C++
102 lines
2.5 KiB
C++
/* This file is part of the KDE project
|
|
Copyright (C) 2010 Peter Penz <peter.penz19@gmail.com>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library 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
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "kfilemetainfotest.h"
|
|
|
|
#include <kdirlister.h>
|
|
#include <kfilemetainfo.h>
|
|
#include <ktemporaryfile.h>
|
|
#include <qtest_kde.h>
|
|
|
|
#include "kiotesthelper.h"
|
|
|
|
#include <QtCore/QThread>
|
|
|
|
|
|
/**
|
|
* Reads the meta-data of a given file inside a thread.
|
|
* Used to test KFileMetaInfo for reentrancy issues.
|
|
*/
|
|
class KFileMetaInfoThread : public QThread
|
|
{
|
|
public:
|
|
KFileMetaInfoThread(const QString& fileName);
|
|
|
|
protected:
|
|
virtual void run();
|
|
|
|
private:
|
|
QString m_fileName;
|
|
};
|
|
|
|
KFileMetaInfoThread::KFileMetaInfoThread(const QString &fileName) :
|
|
m_fileName(fileName)
|
|
{
|
|
}
|
|
|
|
void KFileMetaInfoThread::run()
|
|
{
|
|
KFileMetaInfo fileMetaInfo(m_fileName);
|
|
}
|
|
|
|
|
|
|
|
QTEST_KDEMAIN(KFileMetaInfoTest, NoGUI)
|
|
|
|
void KFileMetaInfoTest::initTestCase()
|
|
{
|
|
m_exitCount = 0;
|
|
}
|
|
|
|
void KFileMetaInfoTest::testMetaInfo()
|
|
{
|
|
const QString file = m_tempDir.name() + "testfilename";
|
|
createTestFile(file);
|
|
|
|
KFileMetaInfo fileMetaInfo(file);
|
|
QVERIFY(fileMetaInfo.isValid());
|
|
|
|
const KFileMetaInfoItem& item = fileMetaInfo.item("http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#fileName");
|
|
QCOMPARE(item.value(), QString("testfilename"));
|
|
}
|
|
|
|
void KFileMetaInfoTest::testReentrancy()
|
|
{
|
|
const QString file = m_tempDir.name() + "testfilename";
|
|
createTestFile(file);
|
|
|
|
m_exitCount = 20;
|
|
for (int i = 0; i < m_exitCount; ++i) {
|
|
QThread* thread = new KFileMetaInfoThread(file);
|
|
connect(thread, SIGNAL(finished()), this, SLOT(exitLoop()));
|
|
thread->start();
|
|
}
|
|
|
|
m_eventLoop.exec();
|
|
}
|
|
|
|
void KFileMetaInfoTest::exitLoop()
|
|
{
|
|
--m_exitCount;
|
|
if (m_exitCount <= 0) {
|
|
m_eventLoop.quit();
|
|
}
|
|
}
|
|
|
|
#include "moc_kfilemetainfotest.cpp"
|