File indexing completed on 2024-05-19 16:19:06
0001 /*************************************************************************** 0002 Copyright (C) 2015 Robby Stephenson <robby@periapsis.org> 0003 ***************************************************************************/ 0004 0005 /*************************************************************************** 0006 * * 0007 * This program is free software; you can redistribute it and/or * 0008 * modify it under the terms of the GNU General Public License as * 0009 * published by the Free Software Foundation; either version 2 of * 0010 * the License or (at your option) version 3 or any later version * 0011 * accepted by the membership of KDE e.V. (or its successor approved * 0012 * by the membership of KDE e.V.), which shall act as a proxy * 0013 * defined in Section 14 of version 3 of the license. * 0014 * * 0015 * This program is distributed in the hope that it will be useful, * 0016 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0018 * GNU General Public License for more details. * 0019 * * 0020 * You should have received a copy of the GNU General Public License * 0021 * along with this program. If not, see <http://www.gnu.org/licenses/>. * 0022 * * 0023 ***************************************************************************/ 0024 0025 #undef QT_NO_CAST_FROM_ASCII 0026 0027 #include "citetest.h" 0028 #include "../cite/lyxpipe.h" 0029 #include "../cite/clipboard.h" 0030 #include "../config/tellico_config.h" 0031 #include "../collections/bibtexcollection.h" 0032 0033 #include <QTest> 0034 #include <QTemporaryFile> 0035 #include <QApplication> 0036 #include <QClipboard> 0037 0038 QTEST_MAIN( CiteTest ) 0039 0040 void CiteTest::testLyxpipe() { 0041 QTemporaryFile tempFile(QStringLiteral("citetest.XXXXXX.in")); 0042 QVERIFY(tempFile.open()); 0043 // remove ".in" that gets added by Lyxpipe 0044 Tellico::Config::setLyxpipe(tempFile.fileName().remove(QStringLiteral(".in"))); 0045 0046 Tellico::Cite::Lyxpipe pipe; 0047 QVERIFY(!pipe.hasError()); 0048 QVERIFY(pipe.errorString().isEmpty()); 0049 QCOMPARE(pipe.type(), Tellico::Cite::CiteLyxpipe); 0050 0051 Tellico::Data::CollPtr coll(new Tellico::Data::BibtexCollection(true)); 0052 0053 Tellico::Data::EntryPtr entry1(new Tellico::Data::Entry(coll)); 0054 entry1->setField(QStringLiteral("title"), QStringLiteral("Title 1")); 0055 entry1->setField(QStringLiteral("bibtex-key"), QStringLiteral("title1")); 0056 Tellico::Data::EntryPtr entry2(new Tellico::Data::Entry(coll)); 0057 entry2->setField(QStringLiteral("title"), QStringLiteral("Title 2")); 0058 entry2->setField(QStringLiteral("bibtex-key"), QStringLiteral("title2")); 0059 0060 coll->addEntries(Tellico::Data::EntryList() << entry1 << entry2); 0061 0062 QVERIFY(pipe.cite(coll->entries())); 0063 QVERIFY(!pipe.hasError()); 0064 QVERIFY(pipe.errorString().isEmpty()); 0065 0066 // read and verify file contents 0067 QTextStream ts(&tempFile); 0068 QString text = ts.readAll(); 0069 QCOMPARE(text, QStringLiteral("LYXCMD:tellico:citation-insert:title1, title2\n")); 0070 } 0071 0072 void CiteTest::testLyxpipeNotExists() { 0073 Tellico::Cite::Lyxpipe pipe; 0074 0075 Tellico::Data::CollPtr coll(new Tellico::Data::BibtexCollection(true)); 0076 Tellico::Data::EntryPtr entry1(new Tellico::Data::Entry(coll)); 0077 entry1->setField(QStringLiteral("title"), QStringLiteral("Title 1")); 0078 entry1->setField(QStringLiteral("bibtex-key"), QStringLiteral("title1")); 0079 coll->addEntries(Tellico::Data::EntryList() << entry1); 0080 0081 // cite should fail with an error 0082 QVERIFY(!pipe.cite(coll->entries())); 0083 QVERIFY(pipe.hasError()); 0084 QVERIFY(!pipe.errorString().isEmpty()); 0085 } 0086 0087 void CiteTest::testClipboard() { 0088 Tellico::Cite::Clipboard clip; 0089 QVERIFY(!clip.hasError()); 0090 QVERIFY(clip.errorString().isEmpty()); 0091 QCOMPARE(clip.type(), Tellico::Cite::CiteClipboard); 0092 0093 Tellico::Data::CollPtr coll(new Tellico::Data::BibtexCollection(true)); 0094 0095 Tellico::Data::EntryPtr entry1(new Tellico::Data::Entry(coll)); 0096 entry1->setField(QStringLiteral("title"), QStringLiteral("Title 1")); 0097 entry1->setField(QStringLiteral("bibtex-key"), QStringLiteral("title1")); 0098 Tellico::Data::EntryPtr entry2(new Tellico::Data::Entry(coll)); 0099 entry2->setField(QStringLiteral("title"), QStringLiteral("Title 2")); 0100 entry2->setField(QStringLiteral("bibtex-key"), QStringLiteral("title2")); 0101 0102 coll->addEntries(Tellico::Data::EntryList() << entry1 << entry2); 0103 0104 QVERIFY(clip.cite(coll->entries())); 0105 QVERIFY(!clip.hasError()); 0106 QVERIFY(clip.errorString().isEmpty()); 0107 0108 // read and verify clipboard contents 0109 QCOMPARE(QApplication::clipboard()->text(), QStringLiteral("\\cite{title1, title2}")); 0110 }