コード例 #1
0
ファイル: tst_qvectorarray.cpp プロジェクト: Distrotech/qt3d
void tst_QVectorArray::create4DArray()
{
    QVector4DArray array;
    QVERIFY(array.isEmpty());

    array.append(1.0f, 2.0f, 3.0f, 4.0f);
    array.append(3.0f, 4.0f, 5.0f, 6.0f);
    array.append(QVector4D(5.0f, 6.0f, 7.0f, 8.0f));

    QCOMPARE(array.size(), 3);
    QVERIFY(array[0] == QVector4D(1.0f, 2.0f, 3.0f, 4.0f));
    QVERIFY(array[1] == QVector4D(3.0f, 4.0f, 5.0f, 6.0f));
    QVERIFY(array[2] == QVector4D(5.0f, 6.0f, 7.0f, 8.0f));

    array.append(QVector4D(7.0f, 8.0f, 9.0f, 10.0f),
                 QVector4D(9.0f, 10.0f, 11.0f, 12.0f));
    array.append(QVector4D(11.0f, 12.0f, 13.0f, 14.0f),
                 QVector4D(13.0f, 14.0f, 15.0f, 16.0f),
                 QVector4D(15.0f, 16.0f, 17.0f, 18.0f));
    array.append(QVector4D(17.0f, 18.0f, 19.0f, 20.0f),
                 QVector4D(19.0f, 20.0f, 21.0f, 22.0f),
                 QVector4D(21.0f, 22.0f, 23.0f, 24.0f));

    for (int index = 0; index < array.size(); ++index) {
        QVERIFY(array[index] == QVector4D(index * 2 + 1,
                                          index * 2 + 2,
                                          index * 2 + 3,
                                          index * 2 + 4));
    }

    QVector4DArray array2(34);
    QCOMPARE(array2.size(), 34);
    for (int index = 0; index < array2.size(); ++index)
        QCOMPARE(array2[index], QVector4D(0.0f, 0.0f, 0.0f, 0.0f));

    QVector4DArray array3(15, QVector4D(1.0f, 2.0f, 3.0f, 4.0f));
    QCOMPARE(array3.size(), 15);
    for (int index = 0; index < array3.size(); ++index)
        QCOMPARE(array3[index], QVector4D(1.0f, 2.0f, 3.0f, 4.0f));
}
コード例 #2
0
void tst_QVectorArray::vector4DArray()
{
    QVector4DArray array;
    QVERIFY(array.isEmpty());

    array.append(1.0f, 2.0f, 3.0f, 4.0f);
    array.append(3.0f, 4.0f, 5.0f, 6.0f);
    array.append(QVector4D(5.0f, 6.0f, 7.0f, 8.0f));

    QCOMPARE(array.size(), 3);
    QVERIFY(array[0] == QVector4D(1.0f, 2.0f, 3.0f, 4.0f));
    QVERIFY(array[1] == QVector4D(3.0f, 4.0f, 5.0f, 6.0f));
    QVERIFY(array[2] == QVector4D(5.0f, 6.0f, 7.0f, 8.0f));

    array.append(QVector4D(7.0f, 8.0f, 9.0f, 10.0f),
                 QVector4D(9.0f, 10.0f, 11.0f, 12.0f));
    array.append(QVector4D(11.0f, 12.0f, 13.0f, 14.0f),
                 QVector4D(13.0f, 14.0f, 15.0f, 16.0f),
                 QVector4D(15.0f, 16.0f, 17.0f, 18.0f));
    array.append(QVector4D(17.0f, 18.0f, 19.0f, 20.0f),
                 QVector4D(19.0f, 20.0f, 21.0f, 22.0f),
                 QVector4D(21.0f, 22.0f, 23.0f, 24.0f));

    for (int index = 0; index < array.size(); ++index) {
        QVERIFY(array[index] == QVector4D(index * 2 + 1,
                                          index * 2 + 2,
                                          index * 2 + 3,
                                          index * 2 + 4));
    }

    int size = array.size();
    QVector4DArray result = array.scaled(1.0);
    // check did not change the original
    QCOMPARE(array.size(), size);
    QCOMPARE(array[0], QVector4D(1.0f, 2.0f, 3.0f, 4.0f));
    QCOMPARE(array[4], QVector4D(9.0f, 10.0f, 11.0f, 12.0));
    // result should be copy - mult by 1.0 costs nothing
    QVERIFY(!result.isDetached());
    QCOMPARE(result.size(), size);
    QCOMPARE(result[0], QVector4D(1.0f, 2.0f, 3.0f, 4.0f));
    QCOMPARE(result[4], QVector4D(9.0f, 10.0f, 11.0f, 12.0));
    // now actually do a scale
    result = array.scaled(2.0);
    QCOMPARE(result.size(), size);
    QCOMPARE(array.size(), size);
    QCOMPARE(result[0], QVector4D(2.0f, 4.0f, 6.0f, 8.0f));
    QCOMPARE(result[4], QVector4D(18.0f, 20.0f, 22.0f, 24.0f));

    array.scale(1.0);
    QCOMPARE(array.size(), size);  // should all be the same
    QCOMPARE(array[0], QVector4D(1.0f, 2.0f, 3.0f, 4.0f));
    QCOMPARE(array[4], QVector4D(9.0f, 10.0f, 11.0f, 12.0));

    array.scale(2.0);
    QCOMPARE(array.size(), size);  // size should be the same
    QCOMPARE(array[0], QVector4D(2.0f, 4.0f, 6.0f, 8.0f));
    QCOMPARE(array[4], QVector4D(18.0f, 20.0f, 22.0f, 24.0f));
}