Example #1
0
void
formatTest(void) {
  DummyModel model;
  std::string ost = model.Format();
  BOOST_CHECK_EQUAL(ost, result);
}
void tst_TimelineNotesRenderPass::update()
{
    const TimelineNotesRenderPass *inst = TimelineNotesRenderPass::instance();
    TimelineAbstractRenderer renderer;
    TimelineRenderState parentState(0, 8, 1, 1);
    TimelineRenderPass::State *nullState = 0;
    QSGNode *nullNode = 0;
    TimelineRenderPass::State *result = inst->update(&renderer, &parentState, 0, 0, 0, true, 1);
    QCOMPARE(result, nullState);

    DummyModel model;
    DummyModel otherModel(13);

    TimelineNotesModel notes;
    notes.addTimelineModel(&model);
    notes.addTimelineModel(&otherModel);
    result = inst->update(&renderer, &parentState, 0, 0, 0, true, 1);
    QCOMPARE(result, nullState);

    renderer.setModel(&model);
    result = inst->update(&renderer, &parentState, 0, 0, 0, true, 1);
    QCOMPARE(result, nullState);

    renderer.setNotes(&notes);
    model.loadData();
    result = inst->update(&renderer, &parentState, 0, 0, 0, true, 1);
    QVERIFY(result != nullState);

    // The notes renderer creates a collapsed overlay and expanded nodes per row.
    QVERIFY(result->collapsedOverlay() != nullNode);
    QCOMPARE(result->expandedOverlay(), nullNode);
    QCOMPARE(result->expandedRows().count(), 1);
    QCOMPARE(result->collapsedRows().count(), 0);

    TimelineRenderPass::State *result2 = inst->update(&renderer, &parentState, result, 0, 0, false,
                                                      1);
    QCOMPARE(result2, result);

    notes.add(12, 0, QLatin1String("x"));
    notes.add(12, 9, QLatin1String("xx"));
    notes.add(13, 0, QLatin1String("y"));
    QVERIFY(renderer.notesDirty());
    result = inst->update(&renderer, &parentState, result, 0, 0, true, 1);
    QVERIFY(result != nullState);
    QSGGeometryNode *node = static_cast<QSGGeometryNode *>(result->expandedRows()[0]);
    QSGMaterial *material1 = node->material();
    QVERIFY(material1 != 0);
    QCOMPARE(node->geometry()->vertexCount(), 2);
    node = static_cast<QSGGeometryNode *>(result->collapsedOverlay());
    QSGMaterial *material2 = node->material();
    QCOMPARE(node->geometry()->vertexCount(), 2);
    QVERIFY(material2 != 0);
    QCOMPARE(material1->type(), material2->type());
    QSGMaterialShader *shader1 = material1->createShader();
    QVERIFY(shader1 != 0);
    QSGMaterialShader *shader2 = material2->createShader();
    QVERIFY(shader2 != 0);
    QCOMPARE(shader1->attributeNames(), shader2->attributeNames());

    delete shader1;
    delete shader2;

    parentState.setPassState(0, result);
    parentState.assembleNodeTree(&model, 1, 1);

    runSceneGraphTest(parentState.collapsedOverlayRoot());
    runSceneGraphTest(parentState.expandedRowRoot());
}
void tst_TimelineSelectionRenderPass::update()
{
    const TimelineSelectionRenderPass *inst = TimelineSelectionRenderPass::instance();
    TimelineAbstractRenderer renderer;
    TimelineRenderState parentState(0, 400, 1, 1);
    TimelineRenderPass::State *nullState = 0;
    QSGNode *nullNode = 0;
    TimelineRenderPass::State *result = inst->update(&renderer, &parentState, 0, 0, 10, true, 1);
    QCOMPARE(result, nullState);

    DummyModel model;

    result = inst->update(&renderer, &parentState, 0, 0, 10, true, 1);
    QCOMPARE(result, nullState);

    renderer.setModel(&model);
    result = inst->update(&renderer, &parentState, 0, 0, 10, true, 1);
    QCOMPARE(result, nullState);

    model.loadData();
    result = inst->update(&renderer, &parentState, 0, 0, 10, true, 1);
    QVERIFY(result != nullState);

    renderer.setSelectedItem(0);
    result = inst->update(&renderer, &parentState, 0, 0, 10, true, 1);
    QVERIFY(result != nullState);

    // The selection renderer creates a overlays.
    QVERIFY(result->collapsedOverlay() != nullNode);
    QVERIFY(result->expandedOverlay() != nullNode);
    QCOMPARE(result->expandedRows().count(), 0);
    QCOMPARE(result->collapsedRows().count(), 0);

    TimelineRenderPass::State *result2 = inst->update(&renderer, &parentState, result, 0, 10, false,
                                                      1);
    QCOMPARE(result2, result);

    renderer.setSelectedItem(1);
    result = inst->update(&renderer, &parentState, result, 0, 10, false, 1);
    QVERIFY(result != nullState);
    compareSelectionNode(result->collapsedOverlay(), QRectF(1, 0, 1, 30), model.selectionId(1));

    model.setExpanded(true);
    result = inst->update(&renderer, &parentState, result, 0, 10, false, 1);
    QVERIFY(result != nullState);
    compareSelectionNode(result->expandedOverlay(), QRectF(1, 0, 1, 30), model.selectionId(1));

    renderer.setSelectedItem(10);
    result = inst->update(&renderer, &parentState, result, 0, 11, false, 1);
    QVERIFY(result != nullState);
    float top = 30 * (1.0 - model.relativeHeight(10));
    compareSelectionNode(result->expandedOverlay(), QRectF(10, top, 200, 30 - top),
                         model.selectionId(10));

    renderer.setSelectedItem(11);
    result = inst->update(&renderer, &parentState, result, 0, 12, false, 1);
    QVERIFY(result != nullState);
    compareSelectionNode(result->expandedOverlay(), QRectF(11, 0, 200, 30), model.selectionId(11));

    parentState.setPassState(0, result);
    parentState.assembleNodeTree(&model, 1, 1);

    runSceneGraph(parentState.collapsedOverlayRoot());
    runSceneGraph(parentState.expandedOverlayRoot());
}