aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/debugger/qv4debugger
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml/debugger/qv4debugger')
-rw-r--r--tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp b/tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp
index 7668c8b016..8362cb9ed6 100644
--- a/tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp
+++ b/tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp
@@ -327,6 +327,7 @@ private slots:
void evaluateExpression();
void stepToEndOfScript();
+ void lastLineOfLoop();
private:
QV4Debugger *debugger() const
@@ -786,6 +787,31 @@ void tst_qv4debugger::stepToEndOfScript()
QCOMPARE(state.lineNumber, -4); // A return instruction without proper line number.
}
+void tst_qv4debugger::lastLineOfLoop()
+{
+ QString script =
+ "var ret = 0;\n"
+ "for (var i = 0; i < 10; ++i) {\n"
+ " if (i == 2)\n"
+ " ret += 4;\n" // breakpoint, then step over
+ " else \n"
+ " ret += 1;\n"
+ "}\n"; // after step over
+
+ debugger()->addBreakPoint("trueBranch", 4);
+ m_debuggerAgent->m_resumeSpeed = QV4Debugger::StepOver;
+ evaluateJavaScript(script, "trueBranch");
+ QVERIFY(m_debuggerAgent->m_wasPaused);
+ QCOMPARE(m_debuggerAgent->m_pauseReason, QV4Debugger::Step);
+ QVERIFY(m_debuggerAgent->m_statesWhenPaused.count() > 1);
+ QV4Debugger::ExecutionState firstState = m_debuggerAgent->m_statesWhenPaused.first();
+ QCOMPARE(firstState.fileName, QString("trueBranch"));
+ QCOMPARE(firstState.lineNumber, 4);
+ QV4Debugger::ExecutionState secondState = m_debuggerAgent->m_statesWhenPaused.at(1);
+ QCOMPARE(secondState.fileName, QString("trueBranch"));
+ QCOMPARE(secondState.lineNumber, 7);
+}
+
QTEST_MAIN(tst_qv4debugger)
#include "tst_qv4debugger.moc"