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(¬es); 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()); }