--- a/ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp Mon Apr 19 14:40:06 2010 +0300
+++ b/ganeswidgets/tsrc/unit/unittest_ganeswidgets.cpp Mon May 03 13:32:54 2010 +0300
@@ -20,8 +20,10 @@
#include <QModelIndex>
#include "hbautotest.h"
#include <hbapplication.h>
+#include <hblabel.h>
#include <hbmainwindow.h>
#include <hbscrollbar>
+#include <hbview>
#include <hgwidgets/hgwidgets.h>
#include <hgwidgets/hggrid.h>
#include <hgwidgets/hgmediawall.h>
@@ -39,6 +41,16 @@
static const QPointF grid_portrait_pos7(180, 200);
static const QPointF grid_portrait_pos8(280, 200);
+// These work with 360x640 resolution
+static const QPointF expected_label_pos_above_alone(180, 144);
+static const QPointF expected_label_pos_above_top(180, 132);
+static const QPointF expected_label_pos_above_bottom(180, 163);
+static const QPointF expected_label_pos_below_alone(180, 324);
+static const QPointF expected_label_pos_below_top(180, 312);
+static const QPointF expected_label_pos_below_bottom(180, 342);
+
+static const int default_delay(1500);
+
class TestGanesWidgets : public QObject
{
Q_OBJECT
@@ -55,6 +67,7 @@
void cleanup();
private slots:
+ void test_setModel();
void test_panGridLandscape();
void test_panGridPortrait();
void test_panCoverFlowLandscape();
@@ -75,15 +88,22 @@
void test_addItemsCoverFlow();
void test_removeItemsCoverFlow();
void test_moveItemsCoverFlow();
+ void test_labelPositionsCoverFlow();
+ void test_labelFontSpecsCoverFlow();
+ void test_resetModelCoverFlow();
+ void test_resetModelGrid();
private:
void pan( Qt::Orientation, TBool begin );
+ bool checkLabelAt(HbMainWindow *window, const QPointF &pos, const QString &expectedText);
+ HbLabel *findLabelAt(QGraphicsItem *parent, const QPointF &pos);
private:
HbMainWindow* mWindow;
HgWidget* mWidget;
+ HgMediawall* mMediawall;
};
@@ -105,8 +125,8 @@
void removeItems(int index, int count=1);
void moveItems(int from, int to, int count=1);
void changeItem(int index);
- void reset();
-
+ void reset(int newItemCount=0);
+
QImage mImage;
QStringList mItems;
bool mValidData;
@@ -129,7 +149,7 @@
void TestModel::generateItems(int count)
{
for (int i=0; i<count; i++) {
- mItems.append(QString("Item %0").arg(i));
+ mItems.append(QString("Item ").append(i));
}
}
@@ -143,7 +163,7 @@
beginInsertRows(QModelIndex(), index, index+count-1); // Inclusive
int end = index+count;
for ( ;index<end; index++) {
- mItems.insert(index, QString("Item %0").arg(mItems.count()));
+ mItems.insert(index, QString("Item ").append(mItems.count()));
}
endInsertRows();
}
@@ -171,14 +191,16 @@
}
}
-void TestModel::reset()
+void TestModel::reset(int newItemCount)
{
beginResetModel();
mItems.clear();
+ if (newItemCount > 0) {
+ generateItems(newItemCount);
+ }
endResetModel();
}
-
void TestModel::changeItem(int index)
{
if ( index >= 0 && index < mItems.count() ) {
@@ -189,6 +211,8 @@
int TestModel::rowCount(const QModelIndex &parent) const
{
+ Q_UNUSED(parent);
+
return mItems.count();
}
@@ -205,14 +229,10 @@
{
case Qt::DisplayRole:
{
- QStringList texts;
- QString text("Primary %0");
- text.arg(row);
- texts << text;
- text = "Secondary %0";
- text.arg(row);
- texts << text;
- returnValue = texts;
+ QStringList list;
+ list << QString("Primary %1").arg(row);
+ list << QString("Secondary %1").arg(row);
+ returnValue = list;
break;
}
case Qt::DecorationRole:
@@ -284,6 +304,36 @@
HbAutoTest::mouseRelease( (HbAutoTestMainWindow*)mWindow, mWidget, end, 100 );
}
+void TestGanesWidgets::test_setModel()
+{
+ mWindow = new HbMainWindow;
+ mWidget = new HgGrid(Qt::Horizontal);
+ mWindow->addView(mWidget);
+ QVERIFY(mWidget->model() == 0);
+
+ TestModel model1;
+ model1.generateItems(10);
+ mWidget->setModel(&model1);
+ QVERIFY(&model1 == mWidget->model());
+
+ mWindow->show();
+
+ QTest::qWait(2000);
+
+ TestModel model2;
+ model2.generateItems(20);
+ mWidget->setModel(&model2);
+ QVERIFY(&model2 == mWidget->model());
+
+ QTest::qWait(2000);
+
+ mWidget->setModel(0);
+ QVERIFY(mWidget->model() == 0);
+
+ delete mWindow;
+ mWindow = 0;
+}
+
void TestGanesWidgets::test_panGridLandscape()
{
mWindow = new HbMainWindow;
@@ -713,7 +763,7 @@
qRegisterMetaType<QModelIndex>("QModelIndex");
QSignalSpy currentItemSpy(mWidget->selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)));
- QTest::qWait(2000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(0, 0));
@@ -725,7 +775,7 @@
currentItemSpy.clear();
HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos1, 100);
- QTest::qWait(1000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(0, 0));
QVERIFY(currentItemSpy.count() == 1);
QVERIFY(currentItemSpy.at(0).count() > 0);
@@ -733,7 +783,7 @@
currentItemSpy.clear();
HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, 100);
- QTest::qWait(1000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(1, 0));
QVERIFY(currentItemSpy.count() == 1);
QVERIFY(currentItemSpy.at(0).count() > 0);
@@ -741,7 +791,7 @@
currentItemSpy.clear();
HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, 100);
- QTest::qWait(1000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(2, 0));
QVERIFY(currentItemSpy.count() == 1);
QVERIFY(currentItemSpy.at(0).count() > 0);
@@ -749,7 +799,7 @@
currentItemSpy.clear();
HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos2, 100);
- QTest::qWait(1000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(3, 0));
QVERIFY(currentItemSpy.count() == 1);
QVERIFY(currentItemSpy.at(0).count() > 0);
@@ -757,7 +807,7 @@
currentItemSpy.clear();
HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, 100);
- QTest::qWait(1000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(2, 0));
QVERIFY(currentItemSpy.count() == 1);
QVERIFY(currentItemSpy.at(0).count() > 0);
@@ -765,7 +815,7 @@
currentItemSpy.clear();
HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, 100);
- QTest::qWait(1000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(1, 0));
QVERIFY(currentItemSpy.count() == 1);
QVERIFY(currentItemSpy.at(0).count() > 0);
@@ -773,7 +823,7 @@
currentItemSpy.clear();
HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, 100);
- QTest::qWait(1000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(0, 0));
QVERIFY(currentItemSpy.count() == 1);
QVERIFY(currentItemSpy.at(0).count() > 0);
@@ -781,11 +831,11 @@
currentItemSpy.clear();
HbAutoTest::mouseClick((HbAutoTestMainWindow*)mWindow, mWidget, pos3, 100);
- QTest::qWait(1000);
+ QTest::qWait(default_delay);
QVERIFY(mWidget->currentIndex() == model.index(0, 0));
QVERIFY(currentItemSpy.count() == 0);
- QTest::qWait(2000);
+ QTest::qWait(default_delay);
delete mWindow;
mWindow = 0;
@@ -1279,73 +1329,74 @@
QList<QModelIndex> requestedIndexes;
TestModel model(&requestedIndexes);
- model.generateItems(120);
+ model.generateItems(110);
mWidget->setModel(&model);
mWindow->addView(mWidget);
mWindow->show();
QTest::qWait(2000);
- QVERIFY(requestedIndexes.count() == 40); // Scroll buffer size in coverflow mode is assumed to be 40
+ QVERIFY(requestedIndexes.count() == 30); // Scroll buffer size in coverflow mode is assumed to be 30
QVERIFY(requestedIndexes.front() == model.index(0, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.back() == model.index(29, 0));
requestedIndexes.clear();
// Move buffer to the end of items
- mWidget->scrollTo(model.index(119, 0));
+ mWidget->setCurrentIndex(model.index(95, 0));
+ mWidget->scrollTo(model.index(95, 0));
QTest::qWait(1000);
requestedIndexes.clear();
// Add one item to beginning of buffer
model.insertItems(80, 1);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 0); // New item falls outside of buffer as buffer is moved up
+ QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up to 81
requestedIndexes.clear();
- // Last item is now 120
+ // Last item is now 110
// Add many items to beginning of buffer
model.insertItems(81, 4);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 0); // New items falls outside of buffer as buffer is moved up
+ QVERIFY(requestedIndexes.count() == 0); // // Buffer is moved up to 85
requestedIndexes.clear();
- // Last item is now 124
+ // Last item is now 114
- // Add one item to the end
- model.insertItems(124, 1);
+ // Add one item to the end of the buffer
+ model.insertItems(114, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // The new item is requested
- QVERIFY(requestedIndexes.front() == model.index(124, 0));
+ QVERIFY(requestedIndexes.front() == model.index(114, 0));
requestedIndexes.clear();
- // Last item is now 125
+ // Last item is now 115
// Add many items to the end
- model.insertItems(125, 4);
+ model.insertItems(111, 4);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 4); // The new items are requested
- QVERIFY(requestedIndexes.front() == model.index(125, 0));
- QVERIFY(requestedIndexes.back() == model.index(128, 0));
+ QVERIFY(requestedIndexes.front() == model.index(111, 0));
+ QVERIFY(requestedIndexes.back() == model.index(114, 0));
requestedIndexes.clear();
- // Last item is now 129
+ // Last item is now 119
// Add one item to middle of buffer
- model.insertItems(110, 1);
+ model.insertItems(100, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // The new item is requested
- QVERIFY(requestedIndexes.front() == model.index(110, 0));
+ QVERIFY(requestedIndexes.front() == model.index(100, 0));
requestedIndexes.clear();
// Last item is now 130
// Add many items to middle of buffer
- model.insertItems(110, 4);
+ model.insertItems(100, 4);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 4); // The new items are requested
- QVERIFY(requestedIndexes.front() == model.index(110, 0));
- QVERIFY(requestedIndexes.back() == model.index(113, 0));
+ QVERIFY(requestedIndexes.front() == model.index(100, 0));
+ QVERIFY(requestedIndexes.back() == model.index(103, 0));
requestedIndexes.clear();
// Last item is now 134
// Add items to the buffer limit (beginning of buffer)
- model.insertItems(90, 20);
+ model.insertItems(70, 20);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New item falls outside of buffer as buffer is moved up
// Last item is now 154
@@ -1357,86 +1408,79 @@
requestedIndexes.clear();
// Move buffer to the beginning of items
- mWidget->scrollTo(model.index(0, 0));
+ mWidget->setCurrentIndex(model.index(15, 0));
+ mWidget->scrollTo(model.index(15, 0));
QTest::qWait(1000);
requestedIndexes.clear();
// Add one item to beginning
model.insertItems(0, 1);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 1); // The new item is requested
- QVERIFY(requestedIndexes.front() == model.index(0, 0));
- requestedIndexes.clear();
+ QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up
// Add many items to beginning
- model.insertItems(0, 5);
+ model.insertItems(1, 5);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 5); // The new items are requested
- QVERIFY(requestedIndexes.front() == model.index(0, 0));
- QVERIFY(requestedIndexes.back() == model.index(4, 0));
- requestedIndexes.clear();
+ QVERIFY(requestedIndexes.count() == 0); // Buffer is moved up
// Add one item to middle of buffer
- model.insertItems(20, 1);
+ model.insertItems(10, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // The new item is requested
- QVERIFY(requestedIndexes.front() == model.index(20, 0));
+ QVERIFY(requestedIndexes.front() == model.index(10, 0));
requestedIndexes.clear();
// Add many items to middle of buffer
- model.insertItems(20, 5);
+ model.insertItems(10, 5);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 5); // The new items are requested
- QVERIFY(requestedIndexes.front() == model.index(20, 0));
- QVERIFY(requestedIndexes.back() == model.index(24, 0));
+ QVERIFY(requestedIndexes.front() == model.index(10, 0));
+ QVERIFY(requestedIndexes.back() == model.index(14, 0));
requestedIndexes.clear();
// Add one item to end of buffer
- model.insertItems(39, 1);
+ model.insertItems(35, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // The new item is requested
- QVERIFY(requestedIndexes.front() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(35, 0));
requestedIndexes.clear();
// Add many items to end of buffer
- model.insertItems(30, 10);
+ model.insertItems(26, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 10); // The new items are requested
- QVERIFY(requestedIndexes.front() == model.index(30, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(26, 0));
+ QVERIFY(requestedIndexes.back() == model.index(35, 0));
requestedIndexes.clear();
// Add items to outside of buffer (after buffer)
- model.insertItems(40, 10);
+ model.insertItems(50, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // The new items are not requested
requestedIndexes.clear();
// Add items to the buffer limit (end of buffer)
- model.insertItems(35, 10);
+ model.insertItems(31, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 5); // The new items inside buffer are requested
- QVERIFY(requestedIndexes.front() == model.index(35, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(31, 0));
+ QVERIFY(requestedIndexes.back() == model.index(35, 0));
// Move buffer to the middle of items
+ mWidget->setCurrentIndex(model.index(60, 0));
mWidget->scrollTo(model.index(60, 0));
QTest::qWait(1000);
requestedIndexes.clear();
// Add items to the buffer limit (beginning of buffer)
- model.insertItems(35, 10);
+ model.insertItems(40, 10);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 5); // The new items inside buffer are requested
- QVERIFY(requestedIndexes.front() == model.index(40, 0));
- QVERIFY(requestedIndexes.back() == model.index(44, 0));
+ QVERIFY(requestedIndexes.count() == 0); // The buffer is moved up
// Add items over the whole buffer
- model.insertItems(35, 50);
+ model.insertItems(40, 50);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 40); // The new items inside buffer are requested
- QVERIFY(requestedIndexes.front() == model.index(40, 0));
- QVERIFY(requestedIndexes.back() == model.index(79, 0));
+ QVERIFY(requestedIndexes.count() == 0); // The buffer is moved up
QTest::qWait(2000);
@@ -1455,20 +1499,21 @@
QList<QModelIndex> requestedIndexes;
TestModel model(&requestedIndexes);
- model.generateItems(240);
+ model.generateItems(230);
mWidget->setModel(&model);
mWindow->addView(mWidget);
mWindow->show();
QTest::qWait(2000);
- QVERIFY(requestedIndexes.count() == 40); // Scroll buffer size in coverflow mode is assumed to be 40
+ QVERIFY(requestedIndexes.count() == 30); // Scroll buffer size in coverflow mode is assumed to be 40
QVERIFY(requestedIndexes.front() == model.index(0, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.back() == model.index(29, 0));
requestedIndexes.clear();
// Move buffer to the end of items
- mWidget->scrollTo(model.index(239, 0));
+ mWidget->setCurrentIndex(model.index(229, 0));
+ mWidget->scrollTo(model.index(229, 0));
QTest::qWait(1000);
requestedIndexes.clear();
@@ -1478,7 +1523,7 @@
QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
QVERIFY(requestedIndexes.front() == model.index(199, 0));
requestedIndexes.clear();
- // Last item is now 238
+ // Last item is now 228
// Remove many items from beginning of buffer
model.removeItems(199, 4);
@@ -1487,24 +1532,24 @@
QVERIFY(requestedIndexes.front() == model.index(195, 0));
QVERIFY(requestedIndexes.back() == model.index(198, 0));
requestedIndexes.clear();
- // Last item is now 234
+ // Last item is now 224
// Remove one item from the end
- model.removeItems(234, 1);
+ model.removeItems(224, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
QVERIFY(requestedIndexes.front() == model.index(194, 0));
requestedIndexes.clear();
- // Last item is now 233
+ // Last item is now 223
// Remove many items from the end
- model.removeItems(230, 4);
+ model.removeItems(220, 4);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 4); // New items are fetched to replace the removed ones
QVERIFY(requestedIndexes.front() == model.index(190, 0));
QVERIFY(requestedIndexes.back() == model.index(193, 0));
requestedIndexes.clear();
- // Last item is now 229
+ // Last item is now 219
// Remove one item from the middle of buffer
model.removeItems(210, 1);
@@ -1512,7 +1557,7 @@
QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
QVERIFY(requestedIndexes.front() == model.index(189, 0));
requestedIndexes.clear();
- // Last item is now 228
+ // Last item is now 218
// Remove many items from the middle of buffer
model.removeItems(210, 4);
@@ -1521,25 +1566,26 @@
QVERIFY(requestedIndexes.front() == model.index(185, 0));
QVERIFY(requestedIndexes.back() == model.index(188, 0));
requestedIndexes.clear();
- // Last item is now 224
+ // Last item is now 214
// Remove items from the buffer limit (beginning of buffer)
model.removeItems(180, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
- QVERIFY(requestedIndexes.front() == model.index(175, 0));
- QVERIFY(requestedIndexes.back() == model.index(179, 0));
+ QVERIFY(requestedIndexes.front() == model.index(180, 0));
+ QVERIFY(requestedIndexes.back() == model.index(184, 0));
requestedIndexes.clear();
- // Last item is now 214
+ // Last item is now 204
// Remove items from outside of buffer (before buffer)
model.removeItems(0, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // Buffer is not moved
requestedIndexes.clear();
- // Last item is now 204
+ // Last item is now 194
// Move buffer to the beginning of items
+ mWidget->setCurrentIndex(model.index(0, 0));
mWidget->scrollTo(model.index(0, 0));
QTest::qWait(1000);
requestedIndexes.clear();
@@ -1548,70 +1594,71 @@
model.removeItems(0, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
- QVERIFY(requestedIndexes.front() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(29, 0));
requestedIndexes.clear();
- // Last item is now 203
+ // Last item is now 193
// Remove many items from beginning
model.removeItems(0, 5);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
- QVERIFY(requestedIndexes.front() == model.index(35, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(25, 0));
+ QVERIFY(requestedIndexes.back() == model.index(29, 0));
requestedIndexes.clear();
- // Last item is now 198
+ // Last item is now 188
// Remove one item from the middle of buffer
- model.removeItems(20, 1);
+ model.removeItems(15, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
- QVERIFY(requestedIndexes.front() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(29, 0));
requestedIndexes.clear();
- // Last item is now 197
+ // Last item is now 187
// Remove many items from the middle of buffer
- model.removeItems(20, 5);
+ model.removeItems(15, 5);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the removed ones
- QVERIFY(requestedIndexes.front() == model.index(35, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(25, 0));
+ QVERIFY(requestedIndexes.back() == model.index(29, 0));
requestedIndexes.clear();
- // Last item is now 192
+ // Last item is now 182
// Remove one item from the end of buffer
- model.removeItems(39, 1);
+ model.removeItems(29, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the removed one
- QVERIFY(requestedIndexes.front() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(29, 0));
requestedIndexes.clear();
- // Last item is now 191
+ // Last item is now 181
// Remove many items from the end of buffer
- model.removeItems(30, 10);
+ model.removeItems(20, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 10); // New items are fetched to replace the removed ones
- QVERIFY(requestedIndexes.front() == model.index(30, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.front() == model.index(20, 0));
+ QVERIFY(requestedIndexes.back() == model.index(29, 0));
requestedIndexes.clear();
- // Last item is now 181
+ // Last item is now 171
// Remove items from outside of buffer (after buffer)
model.removeItems(50, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // Buffer is not updated
requestedIndexes.clear();
- // Last item is now 171
+ // Last item is now 161
// Remove items from the buffer limit (end of buffer)
- model.insertItems(35, 10);
+ model.removeItems(25, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 5); // The new items inside buffer are requested
- QVERIFY(requestedIndexes.front() == model.index(35, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
- // Last item is now 161
+ QVERIFY(requestedIndexes.front() == model.index(25, 0));
+ QVERIFY(requestedIndexes.back() == model.index(29, 0));
+ // Last item is now 151
// Move buffer to the middle of items
- mWidget->scrollTo(model.index(80, 0));
+ mWidget->setCurrentIndex(model.index(75, 0));
+ mWidget->scrollTo(model.index(75, 0));
QTest::qWait(1000);
requestedIndexes.clear();
@@ -1619,15 +1666,14 @@
model.removeItems(59, 2);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 1); // New item is fetched to replace the one removed from the buffer
- QVERIFY(requestedIndexes.front() == model.index(99, 0));
- // Last item is now 159
+ QVERIFY(requestedIndexes.front() == model.index(88, 0)); // Buffer is moved forward, this is the last item
+ requestedIndexes.clear();
+ // Last item is now 149
// Remove items over the whole buffer
model.removeItems(55, 50);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 40); // Whole buffer is updated
- QVERIFY(requestedIndexes.front() == model.index(60, 0));
- QVERIFY(requestedIndexes.back() == model.index(99, 0));
+ QVERIFY(requestedIndexes.count() == 30); // Whole buffer is updated
QTest::qWait(2000);
@@ -1653,9 +1699,9 @@
QTest::qWait(2000);
- QVERIFY(requestedIndexes.count() == 40); // Scroll buffer size in coverflow mode is assumed to be 40
+ QVERIFY(requestedIndexes.count() == 30); // Scroll buffer size in coverflow mode is assumed to be 40
QVERIFY(requestedIndexes.front() == model.index(0, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.back() == model.index(29, 0));
requestedIndexes.clear();
// Move one item forward
@@ -1667,7 +1713,7 @@
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
- model.moveItems(0, 39, 1);
+ model.moveItems(0, 29, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
@@ -1677,20 +1723,20 @@
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
// Move one item backward
- model.moveItems(39, 20, 1);
+ model.moveItems(29, 20, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
- model.moveItems(39, 38, 1);
+ model.moveItems(29, 28, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
- model.moveItems(39, 0, 1);
+ model.moveItems(29, 0, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
// Move many items backward
- model.moveItems(30, 20, 10);
+ model.moveItems(20, 5, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
@@ -1700,128 +1746,275 @@
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
// Move items from the border of the buffer forward
- model.moveItems(35, 50, 10);
+ model.moveItems(25, 50, 10);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the moved ones
- QVERIFY(requestedIndexes.front() == model.index(35, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
requestedIndexes.clear();
// Move items from the border of the buffer backward
- model.moveItems(35, 20, 10);
+ model.moveItems(25, 10, 10);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 5); // Items that were originally outside of buffer are fetched
- QVERIFY(requestedIndexes.front() == model.index(25, 0));
- QVERIFY(requestedIndexes.back() == model.index(29, 0));
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
requestedIndexes.clear();
// Move items from the buffer outside it
model.moveItems(20, 90, 10);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 10); // New items are fetched to replace the moved ones
- QVERIFY(requestedIndexes.front() == model.index(30, 0));
- QVERIFY(requestedIndexes.back() == model.index(39, 0));
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
requestedIndexes.clear();
// Move items from outside the buffer inside it
- model.moveItems(90, 20, 10);
+ model.moveItems(90, 15, 10);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 10); // Moved items are fetched
- QVERIFY(requestedIndexes.front() == model.index(20, 0));
- QVERIFY(requestedIndexes.back() == model.index(29, 0));
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
requestedIndexes.clear();
// Move buffer to the end of items
- mWidget->scrollTo(model.index(119, 0));
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
QTest::qWait(1000);
requestedIndexes.clear();
// Move one item forward
- model.moveItems(80, 100, 1);
+ model.moveItems(90, 100, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
- model.moveItems(80, 82, 1);
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
+ requestedIndexes.clear();
+
+ model.moveItems(90, 92, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
- model.moveItems(80, 119, 1);
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
+ requestedIndexes.clear();
+
+ model.moveItems(90, 119, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
+ requestedIndexes.clear();
+
// Move many items forward
- model.moveItems(80, 100, 5);
+ model.moveItems(90, 100, 5);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(120, 0));
+ mWidget->scrollTo(model.index(120, 0));
+ QTest::qWait(1000);
+ requestedIndexes.clear();
+
// Move one item backward
model.moveItems(119, 100, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(120, 0));
+ QTest::qWait(1000);
+ requestedIndexes.clear();
+
model.moveItems(119, 118, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
- model.moveItems(119, 80, 1);
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
+ requestedIndexes.clear();
+
+ model.moveItems(119, 90, 1);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
+ requestedIndexes.clear();
+
// Move many items backward
model.moveItems(110, 95, 10);
QTest::qWait(1000);
QVERIFY(requestedIndexes.count() == 0); // New items are not fetched as the changes happened inside the buffer
- // Move items from the border of the buffer backward
- model.moveItems(75, 60, 10);
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 5); // New items are fetched to replace the moved ones
- QVERIFY(requestedIndexes.front() == model.index(80, 0));
- QVERIFY(requestedIndexes.back() == model.index(84, 0));
+ requestedIndexes.clear();
+
+ // Move items from the border of the buffer backward
+ model.moveItems(85, 60, 10);
+ QTest::qWait(1000);
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
+
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
requestedIndexes.clear();
// Move items from the border of the buffer forward
- model.moveItems(75, 100, 10);
+ model.moveItems(85, 100, 10);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 5); // Items that were originally outside of buffer are fetched
- QVERIFY(requestedIndexes.front() == model.index(100, 0));
- QVERIFY(requestedIndexes.back() == model.index(104, 0));
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
+
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
requestedIndexes.clear();
// Move items from the buffer outside it
model.moveItems(100, 10, 10);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 10); // New items are fetched to replace the moved ones
- QVERIFY(requestedIndexes.front() == model.index(80, 0));
- QVERIFY(requestedIndexes.back() == model.index(89, 0));
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
+
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
requestedIndexes.clear();
// Move items from outside the buffer inside it
model.moveItems(10, 100, 10);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 10); // Moved items are fetched
- QVERIFY(requestedIndexes.front() == model.index(100, 0));
- QVERIFY(requestedIndexes.back() == model.index(109, 0));
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
+
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(110, 0));
+ mWidget->scrollTo(model.index(110, 0));
+ QTest::qWait(1000);
requestedIndexes.clear();
// Move buffer to the middle of items
+ mWidget->setCurrentIndex(model.index(60, 0));
+ mWidget->scrollTo(model.index(60, 0));
+ QTest::qWait(1000);
+
+ // Move buffer to the end of items
+ mWidget->setCurrentIndex(model.index(60, 0));
mWidget->scrollTo(model.index(60, 0));
QTest::qWait(1000);
requestedIndexes.clear();
// Move items over the whole buffer forward
- model.moveItems(35, 110, 50);
+ model.moveItems(40, 110, 50);
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 40); // Whole buffer is updated
- QVERIFY(requestedIndexes.front() == model.index(40, 0));
- QVERIFY(requestedIndexes.back() == model.index(79, 0));
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
+
+ // Move buffer to the middle of items
+ mWidget->setCurrentIndex(model.index(60, 0));
+ mWidget->scrollTo(model.index(60, 0));
+ QTest::qWait(1000);
+ requestedIndexes.clear();
// Move items over the whole buffer backward
- model.moveItems(35, 10, 50);
+ model.moveItems(40, 10, 50);
+ QTest::qWait(1000);
+ QVERIFY(requestedIndexes.count() == 30); // The whole buffer is reset
+
+ QTest::qWait(2000);
+
+ delete mWindow;
+ mWindow = 0;
+}
+
+void TestGanesWidgets::test_labelPositionsCoverFlow()
+{
+ mWindow = new HbMainWindow;
+ mMediawall = new HgMediawall();
+
+ TestModel model;
+ model.generateItems(50);
+ mWindow->addView(mMediawall);
+ mMediawall->setModel(&model);
+ mWindow->show();
+
+ mMediawall->setTitlePosition(HgMediawall::PositionNone);
+ mMediawall->setDescriptionPosition(HgMediawall::PositionNone);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionNone);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionNone);
+
+ // This updates the title and description label. But how to test they are in correct positions?
+ mMediawall->setCurrentIndex(model.index(1, 0));
+ QTest::qWait(1000);
+
+ mMediawall->setDescriptionPosition(HgMediawall::PositionAboveImage);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionNone);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionAboveImage);
+ mMediawall->setCurrentIndex(model.index(2, 0));
+ QTest::qWait(1000);
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_alone, "Secondary 2"));
+
+ mMediawall->setDescriptionPosition(HgMediawall::PositionBelowImage);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionNone);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionBelowImage);
+ mMediawall->setCurrentIndex(model.index(3, 0));
QTest::qWait(1000);
- QVERIFY(requestedIndexes.count() == 40); // Whole buffer is updated
- QVERIFY(requestedIndexes.front() == model.index(40, 0));
- QVERIFY(requestedIndexes.back() == model.index(79, 0));
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_alone, "Secondary 3"));
+
+ mMediawall->setTitlePosition(HgMediawall::PositionAboveImage);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionAboveImage);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionBelowImage);
+ mMediawall->setCurrentIndex(model.index(4, 0));
+ QTest::qWait(1000);
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_alone, "Primary 4"));
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_alone, "Secondary 4"));
+
+ mMediawall->setDescriptionPosition(HgMediawall::PositionAboveImage);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionAboveImage);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionAboveImage);
+ mMediawall->setCurrentIndex(model.index(5, 0));
+ QTest::qWait(1000);
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_top, "Primary 5"));
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_bottom, "Secondary 5"));
+
+ mMediawall->setDescriptionPosition(HgMediawall::PositionNone);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionAboveImage);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionNone);
+ mMediawall->setCurrentIndex(model.index(6, 0));
+ QTest::qWait(1000);
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_alone, "Primary 6"));
+
+ mMediawall->setTitlePosition(HgMediawall::PositionBelowImage);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionBelowImage);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionNone);
+ mMediawall->setCurrentIndex(model.index(7, 0));
+ QTest::qWait(1000);
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_alone, "Primary 7"));
+
+ mMediawall->setDescriptionPosition(HgMediawall::PositionAboveImage);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionBelowImage);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionAboveImage);
+ mMediawall->setCurrentIndex(model.index(8, 0));
+ QTest::qWait(1000);
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_above_alone, "Secondary 8"));
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_alone, "Primary 8"));
+
+ mMediawall->setDescriptionPosition(HgMediawall::PositionBelowImage);
+ QVERIFY(mMediawall->titlePosition() == HgMediawall::PositionBelowImage);
+ QVERIFY(mMediawall->descriptionPosition() == HgMediawall::PositionBelowImage);
+ mMediawall->setCurrentIndex(model.index(9, 0));
+ QTest::qWait(1000);
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_top, "Primary 9"));
+ QVERIFY(checkLabelAt(mWindow, expected_label_pos_below_bottom, "Secondary 9"));
QTest::qWait(2000);
@@ -1829,6 +2022,129 @@
mWindow = 0;
}
+void TestGanesWidgets::test_labelFontSpecsCoverFlow()
+{
+ mWindow = new HbMainWindow;
+ mMediawall = new HgMediawall();
+
+ TestModel model;
+ model.generateItems(50);
+ mWindow->addView(mMediawall);
+ mMediawall->setModel(&model);
+ mWindow->show();
+
+ mMediawall->setTitleFontSpec(HbFontSpec(HbFontSpec::Primary));
+ QVERIFY(mMediawall->titleFontSpec() == HbFontSpec(HbFontSpec::Primary));
+
+ mMediawall->setDescriptionFontSpec(HbFontSpec(HbFontSpec::Secondary));
+ QVERIFY(mMediawall->descriptionFontSpec() == HbFontSpec(HbFontSpec::Secondary));
+
+ mMediawall->setTitleFontSpec(HbFontSpec(HbFontSpec::Title));
+ QVERIFY(mMediawall->titleFontSpec() == HbFontSpec(HbFontSpec::Title));
+
+ mMediawall->setDescriptionFontSpec(HbFontSpec(HbFontSpec::PrimarySmall));
+ QVERIFY(mMediawall->descriptionFontSpec() == HbFontSpec(HbFontSpec::PrimarySmall));
+
+ QTest::qWait(2000);
+
+ delete mWindow;
+ mWindow = 0;
+}
+
+void TestGanesWidgets::test_resetModelCoverFlow()
+{
+ mWindow = new HbMainWindow;
+ mMediawall = new HgMediawall();
+
+ TestModel model;
+ model.generateItems(50);
+ mWindow->addView(mMediawall);
+ mMediawall->setModel(&model);
+ mWindow->show();
+
+ // Reset with same item count
+ model.reset(50);
+ QTest::qWait(2000);
+
+ // Reset with smaller item count
+ model.reset(20);
+ QTest::qWait(2000);
+
+ // Reset with larger item count
+ model.reset(100);
+ QTest::qWait(2000);
+
+ delete mWindow;
+ mWindow = 0;
+
+}
+
+void TestGanesWidgets::test_resetModelGrid()
+{
+ mWindow = new HbMainWindow;
+ mWidget = new HgGrid(Qt::Vertical);
+
+ TestModel model;
+ model.generateItems(50);
+ mWindow->addView(mWidget);
+ mWidget->setModel(&model);
+ mWindow->show();
+
+ QTest::qWait(2000);
+
+ // Reset with same item count
+ model.reset(50);
+ QTest::qWait(2000);
+
+ // Reset with smaller item count
+ model.reset(20);
+ QTest::qWait(2000);
+
+ // Reset with larger item count
+ model.reset(100);
+ QTest::qWait(2000);
+
+ delete mWindow;
+ mWindow = 0;
+
+}
+
+bool TestGanesWidgets::checkLabelAt(HbMainWindow *window, const QPointF &pos, const QString &expectedText)
+{
+ HbLabel *label = findLabelAt(window->currentView(), pos);
+ if (label) {
+ if (label->plainText() == expectedText) {
+ return true;
+ }
+ else {
+ qDebug() << "Label text did not match: expected" << expectedText << "got" << label->plainText();
+ return false;
+ }
+ }
+ qDebug() << "Label not found at pos" << pos;
+ return false;
+}
+
+HbLabel *TestGanesWidgets::findLabelAt(QGraphicsItem *parent, const QPointF &pos)
+{
+ QList<QGraphicsItem *> subItems = parent->childItems();
+ int count = subItems.count();
+ for (int i = 0; i < count; i++) {
+ QGraphicsItem *item = subItems.at(i);
+ QRectF itemRect(item->pos(), item->boundingRect().size());
+ if (itemRect.contains(pos)) {
+ HbLabel *label = qgraphicsitem_cast<HbLabel *>(subItems.at(i));
+ if (label) {
+ return label;
+ }
+ else {
+ return findLabelAt(subItems.at(i), pos);
+ }
+ }
+ }
+ return NULL;
+}
+
#ifdef _UNITTEST_GANESWIDGETS_LOG_TO_C_
int main (int argc, char* argv[])
{