File indexing completed on 2024-12-08 10:15:32
0001 /* This file is part of the KDE project 0002 Copyright (C) 2017 Jarosław Staniek <staniek@kde.org> 0003 0004 This program is free software; you can redistribute it and/or 0005 modify it under the terms of the GNU Library General Public 0006 License as published by the Free Software Foundation; either 0007 version 2 of the License, or (at your option) any later version. 0008 0009 This program is distributed in the hope that it will be useful, 0010 but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0012 Library General Public License for more details. 0013 0014 You should have received a copy of the GNU Library General Public License 0015 along with this program; see the file COPYING. If not, write to 0016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0017 * Boston, MA 02110-1301, USA. 0018 */ 0019 0020 #include <QtTest> 0021 #include <KProperty> 0022 0023 class KPropertyTest : public QObject 0024 { 0025 Q_OBJECT 0026 private Q_SLOTS: 0027 void testNull(); 0028 private: 0029 }; 0030 0031 void KPropertyTest::testNull() 0032 { 0033 { 0034 // isNull 0035 const KProperty nullProperty; 0036 QVERIFY(nullProperty.isNull()); 0037 const KProperty nullPropertyCopy(nullProperty); 0038 QVERIFY(nullPropertyCopy.isNull()); 0039 QVERIFY2(nullProperty == nullPropertyCopy, "two null properties are equal"); 0040 QVERIFY2(nullProperty == KProperty(), "two null properties are equal v2"); 0041 QVERIFY2(!(nullProperty != nullPropertyCopy), "two null properties are equal v2"); 0042 } 0043 { 0044 // name 0045 const KProperty nullProperty; 0046 const KProperty nullPropertyCopy(nullProperty); 0047 KProperty notNullProperty("notNull"); 0048 QVERIFY(!notNullProperty.isNull()); 0049 QVERIFY2(!(nullProperty == notNullProperty), "null property is not equal to not null property"); 0050 notNullProperty.setName(QByteArray()); 0051 QVERIFY2(notNullProperty.isNull(), "Not null property becomes null after setting empty name"); 0052 notNullProperty.setName(""); 0053 QVERIFY2(notNullProperty.isNull(), "Not null property becomes null after setting empty name v2"); 0054 notNullProperty.setName("other"); 0055 QVERIFY2(!notNullProperty.isNull(), "Null property becomes not-null after setting non-empty name"); 0056 QVERIFY(nullProperty.name().isEmpty()); 0057 QVERIFY(nullPropertyCopy.name().isEmpty()); 0058 } 0059 { 0060 // caption 0061 const KProperty nullProperty; 0062 const KProperty nullPropertyCopy(nullProperty); 0063 KProperty notNullProperty("notNull"); 0064 QVERIFY(nullProperty.caption().isEmpty()); 0065 QVERIFY(nullPropertyCopy.caption().isEmpty()); 0066 QVERIFY(notNullProperty.caption().isEmpty()); 0067 KProperty propertyWithCaption("withCaption", 17, "My caption"); 0068 QVERIFY(!propertyWithCaption.isNull()); 0069 propertyWithCaption.setName(QByteArray()); 0070 QVERIFY2(propertyWithCaption.isNull(), "Property with name and caption is null after setting " 0071 "empty name"); 0072 } 0073 { 0074 // caption does not influence null 0075 KProperty propertyWithCaption("withCaption", 17, "My caption"); 0076 propertyWithCaption.setCaption(QByteArray()); 0077 QVERIFY2(!propertyWithCaption.isNull(), "Property with name and caption is still not null " 0078 "after setting empty caption"); 0079 } 0080 { 0081 // description 0082 KProperty nullProperty; 0083 nullProperty.setDescription("My desc"); 0084 QVERIFY2(nullProperty.isNull(), "Null property with non-empty description is still null"); 0085 } 0086 { 0087 // value 0088 KProperty nullProperty; 0089 QTest::ignoreMessage(QtWarningMsg, "COULD NOT SET value to a null property"); 0090 nullProperty.setValue(0.123); 0091 QTest::ignoreMessage(QtWarningMsg, "COULD NOT SET value to a null property"); 0092 KProperty nullPropertyWithValue(QByteArray(), 177); 0093 QVERIFY2(nullPropertyWithValue.isNull(), "Null property with value set from ctor is still null"); 0094 QVERIFY2(nullPropertyWithValue.value().isNull(), "Null property with value set from " 0095 "ctor still has no value"); 0096 } 0097 } 0098 0099 /* TODO 0100 KProperty::KProperty(KProperty const&) 0101 KProperty::KProperty(QByteArray const&, KPropertyListData*, QVariant const&, QString const&, QString const&, int, KProperty*) 0102 KProperty::KProperty(QByteArray const&, QStringList const&, QStringList const&, QVariant const&, QString const&, QString const&, int, KProperty*) 0103 KProperty::KProperty(QByteArray const&, QVariant const&, QString const&, QString const&, int, KProperty*) 0104 KProperty::KProperty() 0105 KProperty::captionForDisplaying() const 0106 KProperty::caption() const 0107 KProperty::childValueChanged(KProperty*, QVariant const&, bool) 0108 KProperty::children() const 0109 KProperty::child(QByteArray const&) 0110 KProperty::clearModifiedFlag() 0111 KProperty::composedProperty() const 0112 KProperty::description() const 0113 KProperty::hasOptions() const 0114 KProperty::iconName() const 0115 KProperty::isModified() const 0116 OK KProperty::isNull() const 0117 KProperty::isReadOnly() const 0118 KProperty::isStorable() const 0119 KProperty::isVisible() const 0120 KProperty::listData() const 0121 KProperty::name() const 0122 KProperty::oldValue() const 0123 KProperty::operator=(KProperty const&) 0124 KProperty::operator=(QVariant const&) 0125 KProperty::operator==(KProperty const&) const 0126 KProperty::option(char const*, QVariant const&) const 0127 KProperty::parent() const 0128 KProperty::resetValue() 0129 KProperty::setCaption(QString const&) 0130 KProperty::setComposedProperty(KComposedPropertyInterface*) 0131 KProperty::setDescription(QString const&) 0132 KProperty::setIconName(QString const&) 0133 KProperty::setListData(KPropertyListData*) 0134 KProperty::setListData(QStringList const&, QStringList const&) 0135 KProperty::setName(QByteArray const&) 0136 KProperty::setOption(char const*, QVariant const&) 0137 KProperty::setReadOnly(bool) 0138 KProperty::setStorable(bool) 0139 KProperty::setType(int) 0140 KProperty::setValueSyncPolicy(KProperty::ValueSyncPolicy) 0141 KProperty::setValue(QVariant const&, QFlags<KProperty::ValueOption>) 0142 KProperty::setVisible(bool) 0143 KProperty::type() const 0144 KProperty::valueEqualsTo(QVariant const&, QFlags<KProperty::ValueOption>) const 0145 KProperty::valueSyncPolicy() const 0146 KProperty::value() const 0147 0148 KPropertyListData::~KPropertyListData() 0149 KPropertyListData::KPropertyListData(QList<QVariant>, QStringList const&) 0150 KPropertyListData::KPropertyListData(QStringList const&, QStringList const&) 0151 KPropertyListData::KPropertyListData() 0152 KPropertyListData::keysAsStringList() const 0153 KPropertyListData::setKeysAsStringList(QStringList const&) 0154 */ 0155 0156 /* Full API TODO: 0157 0158 KComposedPropertyCreatorInterface::~KComposedPropertyCreatorInterface() 0159 KComposedPropertyCreatorInterface::KComposedPropertyCreatorInterface() 0160 KComposedPropertyInterface::~KComposedPropertyInterface() 0161 KComposedPropertyInterface::KComposedPropertyInterface(KProperty*) 0162 KPropertySetBuffer::KPropertySetBuffer(KPropertySet const&) 0163 KPropertySetBuffer::KPropertySetBuffer() 0164 KPropertySetBuffer::init(KPropertySet const&) 0165 KPropertySetBuffer::intersectedChanged(KPropertySet&, KProperty&) 0166 KPropertySetBuffer::intersectedReset(KPropertySet&, KProperty&) 0167 KPropertySetBuffer::intersect(KPropertySet const&) 0168 KPropertyFactoryManager::~KPropertyFactoryManager() 0169 KPropertyFactoryManager::KPropertyFactoryManager() 0170 KPropertyFactoryManager::addInitFunction(void (*)()) 0171 KPropertyFactoryManager::canConvertValueToText(KProperty const*) const 0172 KPropertyFactoryManager::canConvertValueToText(int) const 0173 KPropertyFactoryManager::createComposedProperty(KProperty*) 0174 KPropertyFactoryManager::propertyValueToLocalizedString(KProperty const*) const 0175 KPropertyFactoryManager::propertyValueToString(KProperty const*) const 0176 KPropertyFactoryManager::registerFactory(KPropertyFactory*) 0177 KPropertyFactoryManager::self() 0178 KPropertyFactoryManager::valueToLocalizedString(int, QVariant const&) const 0179 KPropertyFactoryManager::valueToString(int, QVariant const&) const 0180 KPropertyFactory::~KPropertyFactory() 0181 KPropertyFactory::KPropertyFactory() 0182 KPropertyFactory::addComposedPropertyCreatorInternal(int, KComposedPropertyCreatorInterface*, bool) 0183 KPropertyFactory::addComposedPropertyCreator(int, KComposedPropertyCreatorInterface*) 0184 KPropertyFactory::addDisplayInternal(int, KPropertyValueDisplayInterface*, bool) 0185 KPropertyFactory::addDisplay(int, KPropertyValueDisplayInterface*) 0186 KPropertyFactory::composedPropertyCreators() const 0187 KPropertyFactory::valueDisplays() const 0188 KPropertyUtils::keyForEnumValue(char const*, int) 0189 KPropertyValueDisplayInterface::~KPropertyValueDisplayInterface() 0190 KPropertyValueDisplayInterface::KPropertyValueDisplayInterface() 0191 KPropertyValueDisplayInterface::maxStringValueLength() 0192 KPropertyValueDisplayInterface::valueToLocalizedString(QVariant const&) 0193 */ 0194 0195 QTEST_GUILESS_MAIN(KPropertyTest) 0196 0197 #include "KPropertyTest.moc"