You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

444 lines
14 KiB

/*
Copyright (c) 2010 Stephen Kelly <steveire@gmail.com>
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
*/
#include "kselectionproxymodeltestsuite.h"
#include <kselectionproxymodel.h>
#include "modelselector.h"
//BEGIN NoSelection
/**
When there is no selection, everything from the source model should be a noop in the proxy.
*/
template<KSelectionProxyModel::FilterBehavior _filterBehaviour>
class TestData<NoSelectionStrategy, _filterBehaviour> : public NoSelectionStrategy
{
public:
TestData(ProxyModelTest *proxyModelTest)
: NoSelectionStrategy(proxyModelTest), m_proxyModelTest(proxyModelTest)
{ }
// If there is no selection, changes in the source model have no effect.
void noselection_testMoveData()
{
QTest::addColumn<SignalList>("signalList");
QTest::addColumn<PersistentChangeList>("changeList");
noopTest("move01");
noopTest("move02");
noopTest("move03");
noopTest("move04");
noopTest("move05");
}
KSelectionProxyModel::FilterBehavior filterBehaviour()
{
return _filterBehaviour;
}
void testInsertWhenEmptyData() override
{
noop_testInsertWhenEmptyData();
}
void testInsertInRootData() override
{
noop_testInsertInRootData();
}
void testInsertInTopLevelData() override
{
noop_testInsertInTopLevelData();
}
void testInsertInSecondLevelData() override
{
noop_testInsertInSecondLevelData();
}
void testRemoveFromRootData() override
{
noop_testRemoveFromRootData();
}
void testRemoveFromTopLevelData() override
{
noop_testRemoveFromTopLevelData();
}
void testRemoveFromSecondLevelData() override
{
noop_testRemoveFromSecondLevelData();
}
void testMoveFromRootData() override
{
noselection_testMoveData();
}
void testMoveFromTopLevelData() override
{
noselection_testMoveData();
}
void testMoveFromSecondLevelData() override
{
noselection_testMoveData();
}
void testModifyInRootData() override
{
noop_testModifyInRootData();
}
void testModifyInTopLevelData() override
{
noop_testModifyInTopLevelData();
}
void testModifyInSecondLevelData() override
{
noop_testModifyInSecondLevelData();
}
private:
ProxyModelTest *m_proxyModelTest;
};
//END NoSelection
//BEGIN ImmediateSelectionStrategy
//BEGIN ChildrenOfExactSelection
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testInsertWhenEmptyData()
{
noop_testInsertWhenEmptyData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testInsertInRootData()
{
noop_testInsertInRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testInsertInTopLevelData()
{
QTest::addColumn<SignalList>("signalList");
QTest::addColumn<PersistentChangeList>("changeList");
IndexFinder indexFinder;
newInsertTest(QStringLiteral("insert01"), indexFinder, 0, 0, 10);
newInsertTest(QStringLiteral("insert02"), indexFinder, 0, 9, 10);
newInsertTest(QStringLiteral("insert03"), indexFinder, 10, 10, 10);
newInsertTest(QStringLiteral("insert04"), indexFinder, 10, 19, 10);
newInsertTest(QStringLiteral("insert05"), indexFinder, 4, 4, 10);
newInsertTest(QStringLiteral("insert06"), indexFinder, 4, 13, 10);
newInsertTest(QStringLiteral("insert07"), indexFinder, 0, 0, 10);
newInsertTest(QStringLiteral("insert08"), indexFinder, 10, 10, 10);
newInsertTest(QStringLiteral("insert09"), indexFinder, 4, 4, 10);
newInsertTest(QStringLiteral("insert10"), indexFinder, 0, 4, 10);
newInsertTest(QStringLiteral("insert11"), indexFinder, 10, 14, 10);
newInsertTest(QStringLiteral("insert12"), indexFinder, 4, 8, 10);
noopTest(QStringLiteral("insert13"));
noopTest(QStringLiteral("insert14"));
noopTest(QStringLiteral("insert15"));
noopTest(QStringLiteral("insert16"));
noopTest(QStringLiteral("insert17"));
noopTest(QStringLiteral("insert18"));
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testInsertInSecondLevelData()
{
noop_testInsertInSecondLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testRemoveFromRootData()
{
noop_testRemoveFromRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testRemoveFromTopLevelData()
{
QTest::addColumn<SignalList>("signalList");
QTest::addColumn<PersistentChangeList>("changeList");
IndexFinder indexFinder;
newRemoveTest(QStringLiteral("remove01"), indexFinder, 0, 0, 10);
newRemoveTest(QStringLiteral("remove02"), indexFinder, 0, 4, 10);
newRemoveTest(QStringLiteral("remove03"), indexFinder, 9, 9, 10);
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testRemoveFromSecondLevelData()
{
noop_testRemoveFromSecondLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testMoveFromRootData()
{
noop_testMoveFromRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testMoveFromTopLevelData()
{
IndexFinder indexFinder;
testForwardingMoveData(indexFinder, indexFinder);
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testMoveFromSecondLevelData()
{
noop_testMoveFromSecondLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testModifyInRootData()
{
noop_testModifyInRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testModifyInTopLevelData()
{
QTest::addColumn<SignalList>("signalList");
QTest::addColumn<PersistentChangeList>("changeList");
newModifyTest(QStringLiteral("modify01"), IndexFinder(), 0, 0);
newModifyTest(QStringLiteral("modify02"), IndexFinder(), 0, 4);
newModifyTest(QStringLiteral("modify03"), IndexFinder(), 9, 9);
newModifyTest(QStringLiteral("modify04"), IndexFinder(), 6, 9);
newModifyTest(QStringLiteral("modify05"), IndexFinder(), 4, 4);
newModifyTest(QStringLiteral("modify06"), IndexFinder(), 3, 7);
newModifyTest(QStringLiteral("modify07"), IndexFinder(), 0, 9);
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ChildrenOfExactSelection>::testModifyInSecondLevelData()
{
noop_testModifyInSecondLevelData();
}
//END ChildrenOfExactSelection
//BEGIN ExactSelection
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testInsertWhenEmptyData()
{
QTest::addColumn<SignalList>("signalList");
QTest::addColumn<PersistentChangeList>("changeList");
IndexFinder indexFinder;
noopTest(QStringLiteral("insert01"));
newInsertTest(QStringLiteral("insert02"), indexFinder, 0, 0, 0);
newInsertTest(QStringLiteral("insert03"), indexFinder, 0, 0, 0);
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testInsertInRootData()
{
noop_testInsertInRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testInsertInTopLevelData()
{
noop_testInsertInTopLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testInsertInSecondLevelData()
{
noop_testInsertInSecondLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testRemoveFromRootData()
{
noop_testRemoveFromRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testRemoveFromTopLevelData()
{
noop_testRemoveFromTopLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testRemoveFromSecondLevelData()
{
noop_testRemoveFromSecondLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testMoveFromRootData()
{
noop_testMoveFromRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testMoveFromTopLevelData()
{
noop_testMoveFromTopLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testMoveFromSecondLevelData()
{
noop_testMoveFromSecondLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testModifyInRootData()
{
QTest::addColumn<SignalList>("signalList");
QTest::addColumn<PersistentChangeList>("changeList");
noopTest(QStringLiteral("modify01"));
noopTest(QStringLiteral("modify02"));
noopTest(QStringLiteral("modify03"));
noopTest(QStringLiteral("modify04"));
noopTest(QStringLiteral("modify05"));
newModifyTest(QStringLiteral("modify06"), IndexFinder(), 0, 0);
newModifyTest(QStringLiteral("modify07"), IndexFinder(), 0, 0);
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testModifyInTopLevelData()
{
noop_testModifyInTopLevelData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::ExactSelection>::testModifyInSecondLevelData()
{
noop_testModifyInSecondLevelData();
}
//END ExactSelection
//BEGIN SubTrees
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testInsertWhenEmptyData()
{
QTest::addColumn<SignalList>("signalList");
QTest::addColumn<PersistentChangeList>("changeList");
IndexFinder indexFinder;
noopTest(QStringLiteral("insert01"));
newInsertTest(QStringLiteral("insert02"), indexFinder, 0, 0, 0);
newInsertTest(QStringLiteral("insert03"), indexFinder, 0, 0, 0);
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testInsertInRootData()
{
noop_testInsertInRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testInsertInTopLevelData()
{
testForwardingInsertData(IndexFinder(QList<int>() << 0));
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testInsertInSecondLevelData()
{
testForwardingInsertData(IndexFinder(QList<int>() << 0 << 5));
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testRemoveFromRootData()
{
noop_testRemoveFromRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testRemoveFromTopLevelData()
{
testForwardingRemoveData(IndexFinder(QList<int>() << 0));
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testRemoveFromSecondLevelData()
{
testForwardingRemoveData(IndexFinder(QList<int>() << 0 << 5));
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testMoveFromRootData()
{
noop_testMoveFromRootData();
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testMoveFromTopLevelData()
{
testForwardingMoveData(IndexFinder(QList<int>() << 0), IndexFinder(QList<int>() << 0));
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testMoveFromSecondLevelData()
{
testForwardingMoveData(IndexFinder(QList<int>() << 0 << 5), IndexFinder(QList<int>() << 0 << 5));
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testModifyInRootData()
{
QTest::addColumn<SignalList>("signalList");
QTest::addColumn<PersistentChangeList>("changeList");
noopTest(QStringLiteral("modify01"));
noopTest(QStringLiteral("modify02"));
noopTest(QStringLiteral("modify03"));
noopTest(QStringLiteral("modify04"));
noopTest(QStringLiteral("modify05"));
newModifyTest(QStringLiteral("modify06"), IndexFinder(), 0, 0);
newModifyTest(QStringLiteral("modify07"), IndexFinder(), 0, 0);
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testModifyInTopLevelData()
{
testForwardingModifyData(IndexFinder(QList<int>() << 0));
}
template<>
void TestData<ImmediateSelectionStrategy<9>, KSelectionProxyModel::SubTrees>::testModifyInSecondLevelData()
{
testForwardingModifyData(IndexFinder(QList<int>() << 0 << 5));
}
//END SubTrees
//END ImmediateSelectionStrategy
PROXYMODELTEST_MAIN(SelectionProxyModelTest,
SELECTIONPROXYMODELSIMPLETEST(NoSelectionStrategy, KSelectionProxyModel::ChildrenOfExactSelection)
SELECTIONPROXYMODELSIMPLETEST(NoSelectionStrategy, KSelectionProxyModel::ExactSelection)
SELECTIONPROXYMODELSIMPLETEST(NoSelectionStrategy, KSelectionProxyModel::SubTreeRoots)
SELECTIONPROXYMODELSIMPLETEST(NoSelectionStrategy, KSelectionProxyModel::SubTrees)
SELECTIONPROXYMODELSIMPLETEST(NoSelectionStrategy, KSelectionProxyModel::SubTreesWithoutRoots)
SELECTIONCOMPLETETEST1(ImmediateSelectionStrategy, 9, KSelectionProxyModel::ChildrenOfExactSelection)
SELECTIONCOMPLETETEST1(ImmediateSelectionStrategy, 9, KSelectionProxyModel::ExactSelection)
SELECTIONCOMPLETETEST1(ImmediateSelectionStrategy, 9, KSelectionProxyModel::SubTrees)
)