MCPcopy Create free account
hub / github.com/KDAB/hotspot / testSourceCodeModelSearch

Method testSourceCodeModelSearch

tests/modeltests/tst_models.cpp:479–558  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

477 }
478
479 void testSourceCodeModelSearch()
480 {
481 QTemporaryFile file;
482 if (!file.open()) {
483 QSKIP("Failed to create test file");
484 }
485
486 for (int i = 0; i < 10; i++) {
487 file.write(QStringLiteral("Line %1\n").arg(i).toUtf8());
488 }
489
490 file.flush();
491
492 DisassemblyOutput output;
493 output.mainSourceFileName = file.fileName();
494 output.realSourceFileName = file.fileName();
495
496 DisassemblyOutput::DisassemblyLine line1;
497 line1.fileLine = Data::FileLine {file.fileName(), 4};
498
499 DisassemblyOutput::DisassemblyLine line2;
500 line2.fileLine = Data::FileLine {file.fileName(), 8};
501
502 output.disassemblyLines = {line1, line2};
503
504 SourceCodeModel model(nullptr);
505 model.setDisassembly(output, {});
506
507 QCOMPARE(model.rowCount(), 6); // 5 lines + function name
508 QCOMPARE(model.data(model.index(1, SourceCodeModel::SourceCodeColumn), Qt::DisplayRole).value<QString>(),
509 QStringLiteral("Line 3"));
510
511 QCOMPARE(model.data(model.index(5, SourceCodeModel::SourceCodeColumn), Qt::DisplayRole).value<QString>(),
512 QStringLiteral("Line 7"));
513
514 // check if search works in general
515 QSignalSpy searchSpy(&model, &SourceCodeModel::resultFound);
516 for (int i = 0; i < 5; i++) {
517 model.find(QStringLiteral("Line 5"), Direction::Forward, i);
518 auto result = searchSpy.takeFirst();
519 QCOMPARE(result.at(0).value<QModelIndex>(), model.index(3, SourceCodeModel::SourceCodeColumn));
520 }
521
522 // Check wrap around
523 for (int i = 1; i < 4; i++) {
524 QSignalSpy endReached(&model, &SourceCodeModel::searchEndReached);
525 model.find(QStringLiteral("Line 3"), Direction::Forward, i);
526 QCOMPARE(endReached.size(), 1);
527 }
528
529 // check if no result found works
530 searchSpy.clear();
531 for (int i = 0; i < 5; i++) {
532 model.find(QStringLiteral("Line 8"), Direction::Forward, i);
533 auto result = searchSpy.takeFirst();
534 QCOMPARE(result.at(0).value<QModelIndex>().isValid(), false);
535 }
536

Callers

nothing calls this directly

Calls 9

openMethod · 0.80
sizeMethod · 0.80
setDisassemblyMethod · 0.45
rowCountMethod · 0.45
dataMethod · 0.45
indexMethod · 0.45
findMethod · 0.45
clearMethod · 0.45
isValidMethod · 0.45

Tested by

no test coverage detected