mirror of
https://github.com/status-im/dotherside.git
synced 2025-02-06 17:53:34 +00:00
Work on MockQAbstractListModel
This commit is contained in:
parent
f2ef4be82d
commit
4660a36e8d
@ -79,15 +79,15 @@ DOS_API void DOS_CALL dos_qvariant_setFloat (DosQVariant *vptr, float value);
|
||||
DOS_API void DOS_CALL dos_qvariant_setDouble (DosQVariant *vptr, double value);
|
||||
DOS_API void DOS_CALL dos_qvariant_setString (DosQVariant *vptr, const char *value);
|
||||
DOS_API void DOS_CALL dos_qvariant_setQObject(DosQVariant *vptr, DosQObject *value);
|
||||
DOS_API bool DOS_CALL dos_qvariant_isnull (DosQVariant *vptr);
|
||||
DOS_API bool DOS_CALL dos_qvariant_isnull (const DosQVariant *vptr);
|
||||
DOS_API void DOS_CALL dos_qvariant_delete (DosQVariant *vptr);
|
||||
DOS_API void DOS_CALL dos_qvariant_assign (DosQVariant *vptr, DosQVariant *other);
|
||||
DOS_API int DOS_CALL dos_qvariant_toInt (DosQVariant *vptr);
|
||||
DOS_API bool DOS_CALL dos_qvariant_toBool (DosQVariant *vptr);
|
||||
DOS_API char *DOS_CALL dos_qvariant_toString (DosQVariant *vptr);
|
||||
DOS_API float DOS_CALL dos_qvariant_toFloat (DosQVariant *vptr);
|
||||
DOS_API double DOS_CALL dos_qvariant_toDouble (DosQVariant *vptr);
|
||||
DOS_API DosQObject *DOS_CALL dos_qvariant_toQObject(DosQVariant *vptr);
|
||||
DOS_API void DOS_CALL dos_qvariant_assign (DosQVariant *vptr, const DosQVariant *other);
|
||||
DOS_API int DOS_CALL dos_qvariant_toInt (const DosQVariant *vptr);
|
||||
DOS_API bool DOS_CALL dos_qvariant_toBool (const DosQVariant *vptr);
|
||||
DOS_API char *DOS_CALL dos_qvariant_toString (const DosQVariant *vptr);
|
||||
DOS_API float DOS_CALL dos_qvariant_toFloat (const DosQVariant *vptr);
|
||||
DOS_API double DOS_CALL dos_qvariant_toDouble (const DosQVariant *vptr);
|
||||
DOS_API DosQObject *DOS_CALL dos_qvariant_toQObject(const DosQVariant *vptr);
|
||||
|
||||
// QMetaObject
|
||||
DOS_API DosQMetaObject *DOS_CALL dos_qmetaobject_create(DosQMetaObject *superClassMetaObject,
|
||||
@ -115,7 +115,17 @@ DOS_API void DOS_CALL dos_qabstractlistmodel_beginRemoveRows(DosQAbstractListMod
|
||||
DOS_API void DOS_CALL dos_qabstractlistmodel_endRemoveRows (DosQAbstractListModel *vptr);
|
||||
DOS_API void DOS_CALL dos_qabstractlistmodel_beginResetModel(DosQAbstractListModel *vptr);
|
||||
DOS_API void DOS_CALL dos_qabstractlistmodel_endResetModel (DosQAbstractListModel *vptr);
|
||||
DOS_API void DOS_CALL dos_qabstractlistmodel_dataChanged (DosQAbstractListModel *vptr, DosQModelIndex *topLeft, DosQModelIndex *bottomRight, int *rolesPtr, int rolesLength);
|
||||
|
||||
/// Emit the dataChanged signal
|
||||
/// @param vptr The DosQAbstractListModel pointer
|
||||
/// @param topLeft The topLeft DosQModelIndex. The index is owned by the caller thus it will not be deleted
|
||||
/// @param bottomRight The bottomright DosQModelIndex. The index is owned by the caller thus it will not be deleted
|
||||
/// @param rolesPtr The roles array. The pointer is owned by the caller and thus it will not be deleted
|
||||
/// @param rolesLength The roles array length
|
||||
DOS_API void DOS_CALL dos_qabstractlistmodel_dataChanged(DosQAbstractListModel *vptr,
|
||||
const DosQModelIndex *topLeft,
|
||||
const DosQModelIndex *bottomRight,
|
||||
int *rolesPtr, int rolesLength);
|
||||
|
||||
// QObject
|
||||
DOS_API DosQMetaObject *DOS_CALL dos_qobject_qmetaobject();
|
||||
|
@ -239,9 +239,9 @@ void dos_qqmlcontext_setcontextproperty(::DosQQmlContext *vptr, const char *name
|
||||
return new QVariant(value);
|
||||
}
|
||||
|
||||
bool dos_qvariant_isnull(::DosQVariant *vptr)
|
||||
bool dos_qvariant_isnull(const DosQVariant *vptr)
|
||||
{
|
||||
auto variant = static_cast<QVariant *>(vptr);
|
||||
auto variant = static_cast<const QVariant *>(vptr);
|
||||
return variant->isNull();
|
||||
}
|
||||
|
||||
@ -251,46 +251,46 @@ void dos_qvariant_delete(::DosQVariant *vptr)
|
||||
delete variant;
|
||||
}
|
||||
|
||||
void dos_qvariant_assign(::DosQVariant *vptr, ::DosQVariant *other)
|
||||
void dos_qvariant_assign(::DosQVariant *vptr, const DosQVariant *other)
|
||||
{
|
||||
auto leftQVariant = static_cast<QVariant *>(vptr);
|
||||
auto rightQVariant = static_cast<QVariant *>(other);
|
||||
auto rightQVariant = static_cast<const QVariant *>(other);
|
||||
*leftQVariant = *rightQVariant;
|
||||
}
|
||||
|
||||
int dos_qvariant_toInt(::DosQVariant *vptr)
|
||||
int dos_qvariant_toInt(const ::DosQVariant *vptr)
|
||||
{
|
||||
auto variant = static_cast<QVariant *>(vptr);
|
||||
auto variant = static_cast<const QVariant *>(vptr);
|
||||
return variant->toInt();
|
||||
}
|
||||
|
||||
bool dos_qvariant_toBool(::DosQVariant *vptr)
|
||||
bool dos_qvariant_toBool(const ::DosQVariant *vptr)
|
||||
{
|
||||
auto variant = static_cast<QVariant *>(vptr);
|
||||
auto variant = static_cast<const QVariant *>(vptr);
|
||||
return variant->toBool();
|
||||
}
|
||||
|
||||
float dos_qvariant_toFloat(::DosQVariant *vptr)
|
||||
float dos_qvariant_toFloat(const DosQVariant *vptr)
|
||||
{
|
||||
auto variant = static_cast<QVariant *>(vptr);
|
||||
auto variant = static_cast<const QVariant *>(vptr);
|
||||
return variant->toFloat();
|
||||
}
|
||||
|
||||
double dos_qvariant_toDouble(::DosQVariant *vptr)
|
||||
double dos_qvariant_toDouble(const DosQVariant *vptr)
|
||||
{
|
||||
auto variant = static_cast<QVariant *>(vptr);
|
||||
auto variant = static_cast<const QVariant *>(vptr);
|
||||
return variant->toDouble();
|
||||
}
|
||||
|
||||
char *dos_qvariant_toString(::DosQVariant *vptr)
|
||||
char *dos_qvariant_toString(const DosQVariant *vptr)
|
||||
{
|
||||
auto variant = static_cast<QVariant *>(vptr);
|
||||
auto variant = static_cast<const QVariant *>(vptr);
|
||||
return convert_to_cstring(variant->toString());
|
||||
}
|
||||
|
||||
::DosQObject *dos_qvariant_toQObject(::DosQVariant *vptr)
|
||||
::DosQObject *dos_qvariant_toQObject(const DosQVariant *vptr)
|
||||
{
|
||||
auto variant = static_cast<QVariant *>(vptr);
|
||||
auto variant = static_cast<const QVariant *>(vptr);
|
||||
return variant->value<QObject *>();
|
||||
}
|
||||
|
||||
@ -612,15 +612,15 @@ void dos_qabstractlistmodel_endResetModel(::DosQAbstractListModel *vptr)
|
||||
}
|
||||
|
||||
void dos_qabstractlistmodel_dataChanged(::DosQAbstractListModel *vptr,
|
||||
::DosQModelIndex *topLeftIndex,
|
||||
::DosQModelIndex *bottomRightIndex,
|
||||
const ::DosQModelIndex *topLeftIndex,
|
||||
const ::DosQModelIndex *bottomRightIndex,
|
||||
int *rolesArrayPtr,
|
||||
int rolesArrayLength)
|
||||
{
|
||||
auto object = static_cast<QObject *>(vptr);
|
||||
auto model = dynamic_cast<DOS::DosIQAbstractListModelImpl *>(object);
|
||||
auto topLeft = static_cast<QModelIndex *>(topLeftIndex);
|
||||
auto bottomRight = static_cast<QModelIndex *>(bottomRightIndex);
|
||||
auto topLeft = static_cast<const QModelIndex *>(topLeftIndex);
|
||||
auto bottomRight = static_cast<const QModelIndex *>(bottomRightIndex);
|
||||
auto roles = QVector<int>::fromStdVector(std::vector<int>(rolesArrayPtr, rolesArrayPtr + rolesArrayLength));
|
||||
model->publicDataChanged(*topLeft, *bottomRight, roles);
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ using namespace std;
|
||||
|
||||
namespace
|
||||
{
|
||||
std::string toStringFromQVariant(DosQVariant* variant) {
|
||||
std::string toStringFromQVariant(const DosQVariant* variant) {
|
||||
CharPointer charArray(dos_qvariant_toString(variant), &dos_chararray_delete);
|
||||
return std::string(charArray.get());
|
||||
}
|
||||
@ -163,7 +163,22 @@ void MockQAbstractListModel::onDataCalled(void *selfVPtr, const DosQModelIndex *
|
||||
|
||||
void MockQAbstractListModel::onSetDataCalled(void *selfVPtr, const DosQModelIndex *index, const DosQVariant *value, int role, bool *result)
|
||||
{
|
||||
auto self = static_cast<MockQAbstractListModel*>(selfVPtr);
|
||||
*result = false;
|
||||
|
||||
if (!dos_qmodelindex_isValid(index))
|
||||
return;
|
||||
|
||||
const int row = dos_qmodelindex_row(index);
|
||||
const int column = dos_qmodelindex_column(index);
|
||||
|
||||
if (row < 0 || row >= self->m_names.size() || column != 0)
|
||||
return;
|
||||
|
||||
self->m_names[row] = toStringFromQVariant(value);
|
||||
dos_qabstractlistmodel_dataChanged(self->data(), index, index, 0, 0);
|
||||
|
||||
*result = true;
|
||||
}
|
||||
|
||||
void MockQAbstractListModel::onRoleNamesCalled(void *selfVPtr, DosQHashIntQByteArray *result)
|
||||
|
@ -44,4 +44,21 @@ QtObject {
|
||||
&& testObject.data(testObject.index(2,0, null)) === "Andy"
|
||||
&& testObject.data(testObject.index(3,0, null)) === "Anna"
|
||||
}
|
||||
|
||||
function testSetData() {
|
||||
if (!testObject)
|
||||
return false
|
||||
var index = testObject.index(0,0, null)
|
||||
if (!index.valid)
|
||||
return false;
|
||||
if (testObject.data(index) !== "John")
|
||||
return false
|
||||
var dataChanged = false
|
||||
testObject.dataChanged.connect(function(topLeft, bottomRight, role) {
|
||||
dataChanged = topLeft === index && bottomRight === index
|
||||
})
|
||||
if (!testObject.setData(index, "Paul"))
|
||||
return false
|
||||
return testObject.data(index) === "Paul";
|
||||
}
|
||||
}
|
||||
|
@ -362,6 +362,15 @@ private slots:
|
||||
QVERIFY(result.toBool());
|
||||
}
|
||||
|
||||
void testSetData() {
|
||||
QObject* testCase = engine->rootObjects().first();
|
||||
QVERIFY(testCase);
|
||||
QVariant result;
|
||||
QVERIFY(QMetaObject::invokeMethod(testCase, "testSetData", Q_RETURN_ARG(QVariant, result)));
|
||||
QVERIFY(result.type() == QVariant::Bool);
|
||||
QVERIFY(result.toBool());
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
QString value;
|
||||
|
Loading…
x
Reference in New Issue
Block a user