File indexing completed on 2024-04-28 05:42:13
0001 // clang-format off 0002 /* 0003 KDiff3 - Text Diff And Merge Tool 0004 0005 SPDX-FileCopyrightText: 2020 Michael Reeves reeves.87@gmail.com 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 // clang-format on 0009 0010 #include <QTest> 0011 #include <QtGlobal> 0012 0013 #include "../combiners.h" 0014 0015 class CombinertestTest: public QObject 0016 { 0017 Q_OBJECT; 0018 0019 private: 0020 QString nonEmpty2(){ return "test 2";} 0021 0022 QString nonEmpty1(){ return "test 1";} 0023 QString emptyString(){ return "";} 0024 bool yes() { return true; } 0025 bool no() { return false;} 0026 0027 private Q_SLOTS: 0028 void testOrCombiner() 0029 { 0030 boost::signals2::signal<bool(), or_> test1; 0031 std::list<boost::signals2::scoped_connection> connections; 0032 0033 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0034 connections.push_back(test1.connect(boost::bind(&CombinertestTest::yes, this))); 0035 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0036 0037 QVERIFY(test1()); 0038 connections.clear(); 0039 0040 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0041 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0042 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0043 0044 QVERIFY(!test1()); 0045 connections.clear(); 0046 0047 connections.push_back(test1.connect(boost::bind(&CombinertestTest::yes, this))); 0048 connections.push_back(test1.connect(boost::bind(&CombinertestTest::yes, this))); 0049 connections.push_back(test1.connect(boost::bind(&CombinertestTest::yes, this))); 0050 0051 QVERIFY(test1()); 0052 connections.clear(); 0053 } 0054 0055 void testAndCombiner() 0056 { 0057 boost::signals2::signal<bool(), and_> test1; 0058 std::list<boost::signals2::scoped_connection> connections; 0059 0060 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0061 connections.push_back(test1.connect(boost::bind(&CombinertestTest::yes, this))); 0062 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0063 0064 QVERIFY(!test1()); 0065 connections.clear(); 0066 0067 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0068 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0069 connections.push_back(test1.connect(boost::bind(&CombinertestTest::no, this))); 0070 0071 QVERIFY(!test1()); 0072 connections.clear(); 0073 0074 connections.push_back(test1.connect(boost::bind(&CombinertestTest::yes, this))); 0075 connections.push_back(test1.connect(boost::bind(&CombinertestTest::yes, this))); 0076 connections.push_back(test1.connect(boost::bind(&CombinertestTest::yes, this))); 0077 0078 QVERIFY(test1()); 0079 connections.clear(); 0080 } 0081 0082 void testFirstNonEmpty() 0083 { 0084 boost::signals2::signal<QString (), FirstNonEmpty<QString>> test1; 0085 std::list<boost::signals2::scoped_connection> connections; 0086 0087 //Just in case someone monkeys with the test functions 0088 QVERIFY(emptyString().isEmpty()); 0089 QVERIFY(!nonEmpty1().isEmpty()); 0090 QVERIFY(!nonEmpty1().isEmpty()); 0091 0092 connections.clear(); 0093 QVERIFY(test1().isEmpty()); 0094 0095 connections.push_back(test1.connect(boost::bind(&CombinertestTest::emptyString, this))); 0096 connections.push_back(test1.connect(boost::bind(&CombinertestTest::nonEmpty1, this))); 0097 connections.push_back(test1.connect(boost::bind(&CombinertestTest::nonEmpty2, this))); 0098 0099 QCOMPARE(test1(), nonEmpty1()); 0100 connections.clear(); 0101 0102 connections.push_back(test1.connect(boost::bind(&CombinertestTest::nonEmpty1, this))); 0103 connections.push_back(test1.connect(boost::bind(&CombinertestTest::emptyString, this))); 0104 connections.push_back(test1.connect(boost::bind(&CombinertestTest::nonEmpty2, this))); 0105 0106 QCOMPARE(test1(), nonEmpty1()); 0107 connections.clear(); 0108 0109 connections.push_back(test1.connect(boost::bind(&CombinertestTest::nonEmpty1, this))); 0110 connections.push_back(test1.connect(boost::bind(&CombinertestTest::emptyString, this))); 0111 connections.push_back(test1.connect(boost::bind(&CombinertestTest::nonEmpty2, this))); 0112 0113 QCOMPARE(test1(), nonEmpty1()); 0114 connections.clear(); 0115 0116 connections.push_back(test1.connect(boost::bind(&CombinertestTest::emptyString, this))); 0117 connections.push_back(test1.connect(boost::bind(&CombinertestTest::nonEmpty2, this))); 0118 connections.push_back(test1.connect(boost::bind(&CombinertestTest::nonEmpty1, this))); 0119 0120 QCOMPARE(test1(), nonEmpty2()); 0121 connections.clear(); 0122 0123 connections.push_back(test1.connect(boost::bind(&CombinertestTest::emptyString, this))); 0124 connections.push_back(test1.connect(boost::bind(&CombinertestTest::emptyString, this))); 0125 connections.push_back(test1.connect(boost::bind(&CombinertestTest::emptyString, this))); 0126 0127 QCOMPARE(test1(), emptyString()); 0128 connections.clear(); 0129 } 0130 }; 0131 0132 QTEST_MAIN(CombinertestTest); 0133 0134 #include "combinertest.moc"