File indexing completed on 2024-04-21 05:18:10
0001 /* 0002 SPDX-FileCopyrightText: 2011 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "kmime_message.h" 0008 #include "kmime_content_p.h" 0009 #include "kmime_headers_p.h" 0010 0011 #include <QTest> 0012 #include <QObject> 0013 #include <QDebug> 0014 0015 using namespace KMime; 0016 using namespace KMime::Headers; 0017 using namespace KMime::Headers::Generics; 0018 0019 // this is to ensure we don't accidentally increase the size of memory hotspots 0020 // and to help with optimizing memory use of these structures 0021 class SizeTest : public QObject 0022 { 0023 Q_OBJECT 0024 private Q_SLOTS: 0025 0026 void testContent() 0027 { 0028 qDebug() << sizeof(Content); 0029 QVERIFY(sizeof(Content) <= 16); 0030 qDebug() << sizeof(ContentPrivate); 0031 QVERIFY(sizeof(ContentPrivate) <= 0032 (sizeof(QByteArray) * 5 + sizeof(QList<Content *>) * 2 + 32)); 0033 qDebug() << sizeof(Message); 0034 QCOMPARE(sizeof(Message), sizeof(Content)); 0035 } 0036 0037 void testHeaders() 0038 { 0039 qDebug() << sizeof(Headers::Base); 0040 QVERIFY(sizeof(Base) <= 16); 0041 QCOMPARE(sizeof(Unstructured), sizeof(Base)); 0042 QCOMPARE(sizeof(Structured), sizeof(Base)); 0043 QCOMPARE(sizeof(Address), sizeof(Base)); 0044 QCOMPARE(sizeof(MailboxList), sizeof(Base)); 0045 QCOMPARE(sizeof(SingleMailbox), sizeof(Base)); 0046 QCOMPARE(sizeof(AddressList), sizeof(Base)); 0047 QCOMPARE(sizeof(Ident), sizeof(Base)); 0048 QCOMPARE(sizeof(SingleIdent), sizeof(Base)); 0049 QCOMPARE(sizeof(Token), sizeof(Base)); 0050 QCOMPARE(sizeof(PhraseList), sizeof(Base)); 0051 QCOMPARE(sizeof(DotAtom), sizeof(Base)); 0052 QCOMPARE(sizeof(Parametrized), sizeof(Base)); 0053 QCOMPARE(sizeof(ReturnPath), sizeof(Base)); 0054 QCOMPARE(sizeof(MailCopiesTo), sizeof(Base)); 0055 QCOMPARE(sizeof(ContentTransferEncoding), sizeof(Base)); 0056 QCOMPARE(sizeof(ContentID), sizeof(Base)); 0057 QCOMPARE(sizeof(ContentType), sizeof(Base)); 0058 QCOMPARE(sizeof(Generic), sizeof(Base)); 0059 QCOMPARE(sizeof(Control), sizeof(Base)); 0060 QCOMPARE(sizeof(Date), sizeof(Base)); 0061 QCOMPARE(sizeof(Newsgroups), sizeof(Base)); 0062 QCOMPARE(sizeof(Lines), sizeof(Base)); 0063 } 0064 0065 #define VERIFYSIZE( class, limit ) \ 0066 qDebug() << #class << sizeof( class ); \ 0067 QVERIFY( sizeof( class ) <= limit ); 0068 0069 void testHeadersPrivate() 0070 { 0071 VERIFYSIZE(BasePrivate, sizeof(QByteArray)); 0072 VERIFYSIZE(UnstructuredPrivate, sizeof(BasePrivate) + sizeof(QString)); 0073 VERIFYSIZE(StructuredPrivate, sizeof(BasePrivate)); // empty 0074 VERIFYSIZE(AddressPrivate, sizeof(StructuredPrivate)); 0075 VERIFYSIZE(MailboxListPrivate, 0076 sizeof(BasePrivate) + sizeof(QList<Types::Mailbox>)); 0077 VERIFYSIZE(SingleMailboxPrivate, sizeof(MailboxListPrivate)); 0078 VERIFYSIZE(AddressListPrivate, sizeof(BasePrivate) + sizeof(KMime::Types::AddressList)); 0079 VERIFYSIZE(IdentPrivate, sizeof(AddressListPrivate) + sizeof(KMime::Types::AddrSpecList) + sizeof(QByteArray)); 0080 VERIFYSIZE(SingleIdentPrivate, sizeof(IdentPrivate)); 0081 VERIFYSIZE(TokenPrivate, sizeof(StructuredPrivate) + sizeof(QByteArray)); 0082 VERIFYSIZE(PhraseListPrivate, sizeof(StructuredPrivate) + sizeof(QStringList)); 0083 VERIFYSIZE(DotAtomPrivate, sizeof(StructuredPrivate) + sizeof(QByteArray)); 0084 VERIFYSIZE(ParametrizedPrivate, sizeof(StructuredPrivate) + sizeof(QMap<QString, QString>)); 0085 VERIFYSIZE(ReturnPathPrivate, sizeof(AddressPrivate) + sizeof(Types::Mailbox)); 0086 VERIFYSIZE(MailCopiesToPrivate, sizeof(AddressListPrivate) + 8); 0087 VERIFYSIZE(ContentTransferEncodingPrivate, sizeof(TokenPrivate) + 8); 0088 VERIFYSIZE(ContentIDPrivate, sizeof(SingleIdentPrivate)); 0089 VERIFYSIZE(ContentTypePrivate, sizeof(ParametrizedPrivate) + sizeof(QByteArray) + 8); 0090 VERIFYSIZE(GenericPrivate, sizeof(UnstructuredPrivate) + 8); 0091 VERIFYSIZE(ControlPrivate, sizeof(StructuredPrivate) + 2*sizeof(QByteArray)); 0092 VERIFYSIZE(DatePrivate, sizeof(StructuredPrivate) + 8); 0093 VERIFYSIZE(NewsgroupsPrivate, 0094 sizeof(StructuredPrivate) + sizeof(QList<QByteArray>)); 0095 VERIFYSIZE(LinesPrivate, sizeof(StructuredPrivate) + 8); 0096 } 0097 }; 0098 0099 QTEST_MAIN(SizeTest) 0100 0101 #include "sizetest.moc"