File indexing completed on 2024-05-12 04:49:41
0001 /**************************************************************************************** 0002 * Copyright (c) 2012 Jasneet Singh Bhatti <jazneetbhatti@gmail.com> * 0003 * This program is free software; you can redistribute it and/or modify it under * 0004 * the terms of the GNU General Public License as published by the Free Software * 0005 * Foundation; either version 2 of the License, or (at your option) any later * 0006 * version. * 0007 * * 0008 * This program is distributed in the hope that it will be useful, but WITHOUT ANY * 0009 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * 0010 * PARTICULAR PURPOSE. See the GNU General Public License for more details. * 0011 * * 0012 * You should have received a copy of the GNU General Public License along with * 0013 * this program. If not, see <http://www.gnu.org/licenses/>. * 0014 ****************************************************************************************/ 0015 0016 #include "TestMetaCapability.h" 0017 0018 #include "core/capabilities/ActionsCapability.h" 0019 #include "core/capabilities/BookmarkThisCapability.h" 0020 #include "core/capabilities/CollectionScanCapability.h" 0021 #include "core/capabilities/MultiSourceCapability.h" 0022 #include "core/interfaces/MetaCapability.h" 0023 0024 #include <QString> 0025 0026 /** 0027 * Ad-hoc mock to test MetaCapability 0028 */ 0029 class MetaCapabilityMock : public MetaCapability 0030 { 0031 public: 0032 static Capabilities::ActionsCapability *actionsCapability; 0033 static Capabilities::BookmarkThisCapability *bookmarkThisCapability; 0034 0035 bool hasCapabilityInterface( Capabilities::Capability::Type type ) const override 0036 { 0037 switch( type ) 0038 { 0039 case Capabilities::Capability::Actions: 0040 case Capabilities::Capability::BookmarkThis: 0041 return true; 0042 default: 0043 break; 0044 } 0045 return false; 0046 } 0047 0048 Capabilities::Capability *createCapabilityInterface( Capabilities::Capability::Type type ) override 0049 { 0050 switch( type ) 0051 { 0052 case Capabilities::Capability::Actions: 0053 return actionsCapability; 0054 case Capabilities::Capability::BookmarkThis: 0055 return bookmarkThisCapability; 0056 default: 0057 break; 0058 } 0059 return nullptr; 0060 } 0061 0062 private: 0063 static QAction *action; 0064 static QList<QAction*> actionsList; 0065 }; 0066 0067 QAction *MetaCapabilityMock::action = new QAction( nullptr ); 0068 QList<QAction*> MetaCapabilityMock::actionsList; 0069 0070 // Create the static instances to be returned for testing 0071 Capabilities::ActionsCapability *MetaCapabilityMock::actionsCapability = new Capabilities::ActionsCapability( actionsList ); 0072 Capabilities::BookmarkThisCapability *MetaCapabilityMock::bookmarkThisCapability= new Capabilities::BookmarkThisCapability( action ); 0073 0074 QTEST_MAIN( TestMetaCapability ) 0075 0076 TestMetaCapability::TestMetaCapability() 0077 { 0078 } 0079 0080 void 0081 TestMetaCapability::testHas() 0082 { 0083 MetaCapability *metaCapability = new MetaCapabilityMock(); 0084 QVERIFY( metaCapability ); 0085 0086 // these capabilities should be provided 0087 QVERIFY( metaCapability->has<Capabilities::ActionsCapability>() == true ); 0088 QVERIFY( metaCapability->has<Capabilities::BookmarkThisCapability>() == true ); 0089 0090 // these should not 0091 QVERIFY( metaCapability->has<Capabilities::CollectionScanCapability>() == false ); 0092 QVERIFY( metaCapability->has<Capabilities::MultiSourceCapability>() == false ); 0093 } 0094 0095 void 0096 TestMetaCapability::testCreate() 0097 { 0098 MetaCapability *metaCapability = new MetaCapabilityMock(); 0099 QVERIFY( metaCapability ); 0100 0101 // these capabilities should be provided 0102 // check that the correct instances are returned 0103 QVERIFY( metaCapability->create<Capabilities::ActionsCapability>() == MetaCapabilityMock::actionsCapability ); 0104 QVERIFY( metaCapability->create<Capabilities::BookmarkThisCapability>() == MetaCapabilityMock::bookmarkThisCapability ); 0105 0106 // these should not 0107 QVERIFY( metaCapability->create<Capabilities::CollectionScanCapability>() == nullptr ); 0108 QVERIFY( metaCapability->create<Capabilities::MultiSourceCapability>() == nullptr ); 0109 }