Android: Add test cases of editable QtAbstractItemModels
Task-number: QTBUG-129387 Task-number: QTBUG-130253 Change-Id: I92c5fd57b6fab6b7e50c76c995dacf1976a3332d Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
parent
a065c6bfe0
commit
8ec25c9d6b
@ -10,10 +10,17 @@ import java.util.List;
|
||||
import org.qtproject.qt.android.QtAbstractItemModel;
|
||||
import org.qtproject.qt.android.QtModelIndex;
|
||||
|
||||
public class TestQtAbstractItemModel extends QtAbstractItemModel
|
||||
public class TestQtAbstractItemModel
|
||||
extends QtAbstractItemModel implements QtAbstractItemModel.OnDataChangedListener
|
||||
{
|
||||
int m_rows = 0;
|
||||
int m_cols = 0;
|
||||
int m_dataChangedCount = 0;
|
||||
|
||||
public TestQtAbstractItemModel()
|
||||
{
|
||||
setOnDataChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int columnCount(QtModelIndex parent)
|
||||
@ -92,6 +99,18 @@ public class TestQtAbstractItemModel extends QtAbstractItemModel
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setData(QtModelIndex index, Object value, int role)
|
||||
{
|
||||
dataChanged(index, index , new int[]{role});
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDataChanged(QtModelIndex topLeft, QtModelIndex bottomRight, int[] roles) {
|
||||
m_dataChangedCount++;
|
||||
}
|
||||
|
||||
public void addRow()
|
||||
{
|
||||
beginInsertRows(new QtModelIndex(), m_rows, m_rows);
|
||||
@ -130,5 +149,6 @@ public class TestQtAbstractItemModel extends QtAbstractItemModel
|
||||
m_rows = 0;
|
||||
m_cols = 0;
|
||||
endResetModel();
|
||||
m_dataChangedCount = 0;
|
||||
}
|
||||
}
|
||||
|
@ -10,9 +10,16 @@ import java.util.List;
|
||||
import org.qtproject.qt.android.QtAbstractListModel;
|
||||
import org.qtproject.qt.android.QtModelIndex;
|
||||
|
||||
public class TestQtAbstractListModel extends QtAbstractListModel
|
||||
public class TestQtAbstractListModel
|
||||
extends QtAbstractListModel implements QtAbstractListModel.OnDataChangedListener
|
||||
{
|
||||
int m_rows = 0;
|
||||
int m_dataChangedCount = 0;
|
||||
|
||||
public TestQtAbstractListModel()
|
||||
{
|
||||
setOnDataChangedListener(this);
|
||||
}
|
||||
|
||||
@Override public Object data(QtModelIndex index, int role)
|
||||
{
|
||||
@ -65,6 +72,18 @@ public class TestQtAbstractListModel extends QtAbstractListModel
|
||||
endInsertRows();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setData(QtModelIndex index, Object value, int role)
|
||||
{
|
||||
dataChanged(index, index , new int[]{role});
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDataChanged(QtModelIndex topLeft, QtModelIndex bottomRight, int[] roles) {
|
||||
m_dataChangedCount++;
|
||||
}
|
||||
|
||||
public void addRow()
|
||||
{
|
||||
beginInsertRows(new QtModelIndex(), m_rows, m_rows);
|
||||
@ -86,5 +105,6 @@ public class TestQtAbstractListModel extends QtAbstractListModel
|
||||
beginResetModel();
|
||||
m_rows = 0;
|
||||
endResetModel();
|
||||
m_dataChangedCount = 0;
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <QtCore/qjniobject.h>
|
||||
#include <QtCore/qjnitypes.h>
|
||||
#include <QtCore/qstring.h>
|
||||
#include <QSignalSpy>
|
||||
|
||||
using namespace Qt::Literals;
|
||||
|
||||
@ -39,6 +40,8 @@ private slots:
|
||||
void fetchMore();
|
||||
void hasIndex();
|
||||
void data();
|
||||
void setData_data();
|
||||
void setData();
|
||||
};
|
||||
|
||||
void tst_AndroidItemModel::initTestCase_data()
|
||||
@ -204,6 +207,55 @@ void tst_AndroidItemModel::data()
|
||||
}
|
||||
}
|
||||
|
||||
void tst_AndroidItemModel::setData_data()
|
||||
{
|
||||
QTest::addColumn<int>("row");
|
||||
QTest::addColumn<int>("column");
|
||||
QTest::addColumn<int>("role");
|
||||
|
||||
QTest::newRow("role0") << 0 << 0 << 0;
|
||||
QTest::newRow("role1") << 0 << 0 << 1;
|
||||
QTest::newRow("role2") << 0 << 0 << 2;
|
||||
}
|
||||
|
||||
void tst_AndroidItemModel::setData()
|
||||
{
|
||||
QFETCH_GLOBAL(bool, isList);
|
||||
QFETCH(int, row);
|
||||
QFETCH(int, column);
|
||||
QFETCH(int, role);
|
||||
|
||||
jboolean success = false;
|
||||
QSignalSpy spy(
|
||||
qProxy,
|
||||
SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &, const QList<int> &)));
|
||||
|
||||
jModel.callMethod<void>("addRow");
|
||||
if (!isList)
|
||||
jModel.callMethod<void>("addCol");
|
||||
|
||||
QCOMPARE_EQ(qProxy->rowCount(), 1);
|
||||
QCOMPARE_EQ(qProxy->columnCount(), 1);
|
||||
|
||||
JQtModelIndex index = jModel.callMethod<JQtModelIndex>("index", row, column, JQtModelIndex());
|
||||
QVERIFY(jModel.callMethod<jboolean>("setData", index, QJniObject(Void()), role));
|
||||
QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 50);
|
||||
|
||||
const QList<QVariant> arguments = spy.takeFirst();
|
||||
QCOMPARE(arguments.size(), 3);
|
||||
|
||||
const auto topLeft = qvariant_cast<QModelIndex>(arguments.at(0));
|
||||
const auto bottomRight = qvariant_cast<QModelIndex>(arguments.at(1));
|
||||
const auto roles = qvariant_cast<QList<int>>(arguments.at(2));
|
||||
|
||||
QCOMPARE(topLeft, qProxy->index(row, column, QModelIndex()));
|
||||
QCOMPARE(bottomRight, qProxy->index(row, column, QModelIndex()));
|
||||
QCOMPARE(roles, QList<int>{role});
|
||||
|
||||
jint jDataChangedCount = jModel.getField<jint>("m_dataChangedCount");
|
||||
QTRY_COMPARE_WITH_TIMEOUT(jDataChangedCount, 1, 50);
|
||||
}
|
||||
|
||||
void tst_AndroidItemModel::resetModel()
|
||||
{
|
||||
jModel.callMethod<void>("reset");
|
||||
|
Loading…
x
Reference in New Issue
Block a user