Browse Source

more tests

cl-refactor
arkpar 10 years ago
parent
commit
48648ac178
  1. 4
      mix/ClientModel.cpp
  2. 4
      mix/qml/Debugger.qml
  3. 2
      mix/test/qml/TestMain.qml
  4. 64
      mix/test/qml/js/TestDebugger.js
  5. 1
      mix/test/qml/js/TestProject.js

4
mix/ClientModel.cpp

@ -401,9 +401,9 @@ void ClientModel::showDebuggerForTransaction(ExecutionResult const& _t)
AssemblyItem const& prevInstruction = codeItems[s.codeIndex][prevInstructionIndex];
auto functionIter = contract->functions().find(LocationPair(instruction.getLocation().start, instruction.getLocation().end));
if (functionIter != contract->functions().end() && ((prevInstruction.getJumpType() == AssemblyItem::JumpType::IntoFunction) || solCallStack.empty()))
solCallStack.push_back(QVariant::fromValue(functionIter.value()));
solCallStack.push_front(QVariant::fromValue(functionIter.value()));
else if (prevInstruction.getJumpType() == AssemblyItem::JumpType::OutOfFunction && !solCallStack.empty())
solCallStack.pop_back();
solCallStack.pop_front();
}
//format solidity context values

4
mix/qml/Debugger.qml

@ -17,6 +17,10 @@ Rectangle {
property alias solLocals: solLocals
property alias solStorage: solStorage
property alias solCallStack: solCallStack
property alias vmCallStack: callStack
property alias vmStorage: storage
property alias vmMemory: memoryDump
property alias vmCallData: callDataDump
signal debugExecuteLocation(string documentId, var location)
property string compilationErrorMessage
property bool assemblyMode: false

2
mix/test/qml/TestMain.qml

@ -76,6 +76,8 @@ TestCase
function test_dbg_transactionWithParameter() { TestDebugger.test_transactionWithParameter(); }
function test_dbg_constructorParameters() { TestDebugger.test_constructorParameters(); }
function test_dbg_arrayParametersAndStorage() { TestDebugger.test_arrayParametersAndStorage(); }
function test_dbg_solidity() { TestDebugger.test_solidityDebugging(); }
function test_dbg_vm() { TestDebugger.test_vmDebugging(); }
function test_miner_getDefaultiner() { TestMiner.test_getDefaultMiner(); }
function test_miner_selectMiner() { TestMiner.test_selectMiner(); }
function test_project_contractRename() { TestProject.test_contractRename(); }

64
mix/test/qml/js/TestDebugger.js

@ -137,3 +137,67 @@ function test_arrayParametersAndStorage()
tryCompare(mainApplication.mainContent.rightPane.solStorage.item.value, "s", "42");
tryCompare(mainApplication.mainContent.rightPane.solCallStack.listModel, 0, "setMV");
}
function test_solidityDebugging()
{
newProject();
editContract(
"contract Contract {\r " +
" function add(uint256 a, uint256 b) returns (uint256)\r " +
" {\r " +
" return a + b;\r " +
" }\r " +
" function Contract()\r " +
" {\r " +
" uint256 local = add(42, 34);\r " +
" storage = local;\r " +
" }\r " +
" uint256 storage;\r " +
"}");
mainApplication.mainContent.startQuickDebugging();
if (!ts.waitForSignal(mainApplication.clientModel, "debugDataReady(QObject*)", 5000))
fail("Error running transaction");
tryCompare(mainApplication.mainContent.rightPane.debugSlider, "maximumValue", 20);
tryCompare(mainApplication.mainContent.rightPane.debugSlider, "value", 0);
mainApplication.mainContent.rightPane.debugSlider.value = 13;
tryCompare(mainApplication.mainContent.rightPane.solCallStack.listModel, 0, "add");
tryCompare(mainApplication.mainContent.rightPane.solCallStack.listModel, 1, "Contract");
tryCompare(mainApplication.mainContent.rightPane.solLocals.item.value, "local", "0");
tryCompare(mainApplication.mainContent.rightPane.solStorage.item.value, "storage", undefined);
mainApplication.mainContent.rightPane.debugSlider.value = 19;
tryCompare(mainApplication.mainContent.rightPane.solLocals.item.value, "local", "76");
tryCompare(mainApplication.mainContent.rightPane.solStorage.item.value, "storage", "76");
}
function test_vmDebugging()
{
newProject();
editContract(
"contract Contract {\r " +
" function add(uint256 a, uint256 b) returns (uint256)\r " +
" {\r " +
" return a + b;\r " +
" }\r " +
" function Contract()\r " +
" {\r " +
" uint256 local = add(42, 34);\r " +
" storage = local;\r " +
" }\r " +
" uint256 storage;\r " +
"}");
mainApplication.mainContent.startQuickDebugging();
if (!ts.waitForSignal(mainApplication.clientModel, "debugDataReady(QObject*)", 5000))
fail("Error running transaction");
mainApplication.mainContent.rightPane.assemblyMode = !mainApplication.mainContent.rightPane.assemblyMode;
tryCompare(mainApplication.mainContent.rightPane.debugSlider, "maximumValue", 41);
tryCompare(mainApplication.mainContent.rightPane.debugSlider, "value", 0);
mainApplication.mainContent.rightPane.debugSlider.value = 35;
tryCompare(mainApplication.mainContent.rightPane.vmCallStack.listModel, 0, mainApplication.clientModel.contractAddresses["Contract"].substring(2));
tryCompare(mainApplication.mainContent.rightPane.vmStorage.listModel, 0, "@ 0 (0x0) 76 (0x4c)");
tryCompare(mainApplication.mainContent.rightPane.vmMemory.listModel, "length", 0);
}

1
mix/test/qml/js/TestProject.js

@ -3,6 +3,7 @@ function test_contractRename()
newProject();
tryCompare(mainApplication.mainContent.projectNavigator.sections.itemAt(0).model.get(0), "name", "Contract");
editContract("contract Renamed {}");
mainApplication.mainContent.startQuickDebugging();
if (!ts.waitForSignal(mainApplication.clientModel, "runComplete()", 5000))
fail("Error running transaction");
wait(1000);

Loading…
Cancel
Save