File indexing completed on 2024-04-14 05:12:17

0001 /*
0002     SPDX-FileCopyrightText: 2006 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "contentindextest.h"
0008 
0009 #include "kmime_content.h"
0010 #include "kmime_contentindex.h"
0011 
0012 using namespace KMime;
0013 
0014 #include <QTest>
0015 
0016 QTEST_MAIN(ContentIndexTest)
0017 
0018 void ContentIndexTest::testToString()
0019 {
0020     KMime::ContentIndex ci;
0021     QCOMPARE(ci.toString(), QString());
0022     ci.push(1);
0023     QCOMPARE(ci.toString(), QLatin1StringView("1"));
0024     ci.push(2);
0025     QCOMPARE(ci.toString(), QLatin1StringView("2.1"));
0026 }
0027 
0028 void ContentIndexTest::testFromString()
0029 {
0030     ContentIndex ci1;
0031     QVERIFY(!ci1.isValid());
0032 
0033     ContentIndex ci2(QStringLiteral("1.2.bla"));
0034     QVERIFY(!ci2.isValid());
0035 
0036     ContentIndex ci3(QStringLiteral("1"));
0037     QVERIFY(ci3.isValid());
0038     QCOMPARE(ci3.pop(), 1u);
0039     QVERIFY(!ci3.isValid());
0040 
0041     ContentIndex ci4(QStringLiteral("3.2"));
0042     QVERIFY(ci4.isValid());
0043     QCOMPARE(ci4.pop(), 3u);
0044     QCOMPARE(ci4.pop(), 2u);
0045     QVERIFY(!ci4.isValid());
0046 }
0047 
0048 void ContentIndexTest::testContent()
0049 {
0050     auto c1 = new Content();
0051     QCOMPARE(c1->content(ContentIndex()), c1);
0052     QCOMPARE(c1->content(ContentIndex(u"1")), (Content *)nullptr);
0053     QCOMPARE(c1->indexForContent(c1), ContentIndex());
0054 
0055     auto c11 = new Content();
0056     c1->appendContent(c11);
0057     QCOMPARE(c1->content(ContentIndex(u"1")), c11);
0058     QCOMPARE(c1->content(ContentIndex(u"3")), (Content *)nullptr);
0059     QCOMPARE(c1->content(ContentIndex(u"2.1")), (Content *)nullptr);
0060     QCOMPARE(c1->indexForContent(c1), ContentIndex());
0061     QCOMPARE(c1->indexForContent(c11), ContentIndex(u"1"));
0062     QCOMPARE(c1->indexForContent(c1->contents().first()), ContentIndex(u"1"));
0063 
0064     auto c12 = new Content();
0065     c1->appendContent(c12);
0066     auto c121 = new Content();
0067     c12->appendContent(c121);
0068     QCOMPARE(c1->content(ContentIndex(u"2")), c12);
0069     QCOMPARE(c1->content(ContentIndex(u"2.1")), c121);
0070     QCOMPARE(c1->indexForContent(c121), ContentIndex(u"2.1"));
0071     QCOMPARE(c121->index(), ContentIndex(u"2.1"));
0072 
0073     QCOMPARE(c1->indexForContent((Content *)nullptr), ContentIndex());
0074     delete c1;
0075 }
0076 
0077 void ContentIndexTest::testNavigation()
0078 {
0079     ContentIndex ci;
0080     QCOMPARE(ci.toString(), QString());
0081     ci.push(1);
0082     ci.push(2);
0083     ci.push(3);
0084     QCOMPARE(ci.toString(), QLatin1StringView("3.2.1"));
0085     QCOMPARE(ci.pop(), 3u);
0086     QCOMPARE(ci.up(), 1u);
0087     QCOMPARE(ci.toString(), QLatin1StringView("2"));
0088 }
0089 
0090 
0091 #include "moc_contentindextest.cpp"