--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/VDBVariableObjectTests.st Mon Jul 08 13:31:11 2019 +0100
@@ -0,0 +1,118 @@
+"
+jv:vdb - Visual / VM Debugger
+Copyright (C) 2015-now Jan Vrany
+
+This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
+
+You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
+"
+"{ Package: 'jv:vdb/tests' }"
+
+"{ NameSpace: Smalltalk }"
+
+GDBDebuggerTestCase subclass:#VDBVariableObjectTests
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'VDB-Core-Tests'
+!
+
+!VDBVariableObjectTests class methodsFor:'documentation'!
+
+copyright
+"
+jv:vdb - Visual / VM Debugger
+Copyright (C) 2015-now Jan Vrany
+
+This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
+
+You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
+"
+! !
+
+!VDBVariableObjectTests methodsFor:'running'!
+
+setUp
+ super setUp.
+ debugger pythonImportVDB.
+
+ "Created: / 06-07-2019 / 01:20:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-07-2019 / 13:15:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VDBVariableObjectTests methodsFor:'tests'!
+
+test_variables_01a
+ | stack varobj |
+
+ debugger executable: GDBDebuggeesResource current binaryFactorial1.
+ self assert: debugger breakpoints isEmpty.
+
+ debugger send: 'source ', ((Smalltalk getPackageDirectoryForPackage:GDBDebuggeesResource package)
+ / 'c' / 'py-framedecorator.py') pathName.
+ debugger enableFrameFilters.
+ debugger send: 'b factorial'.
+ debugger send: 'r' andWaitFor: GDBStoppedEvent.
+ stack := debugger selectedInferior threads first stack.
+
+ varobj := VDBVariableObject evaluate: 'syntheticArg0' in: stack first using: debugger.
+
+ self assert: varobj expression = 'syntheticArg0'.
+ self assert: varobj value = '12'.
+ self assert: varobj type = 'long long'.
+
+ "
+ VDBFrameApplication new
+ debugger: debugger;
+ frame: stack first;
+ open.
+ "
+ debugger send: 'quit' andWait: false.
+
+ "Created: / 06-07-2019 / 01:23:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-07-2019 / 13:29:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+test_variables_02a
+ "
+ Test #duplicate
+ "
+ | c1 c1_cdr c1_cdr_d c1_cdr_d_cdr c1_cdr_d_cdr_d |
+
+ debugger executable: GDBDebuggeesResource current binaryPyVarobj.
+ self assert: debugger breakpoints isEmpty.
+
+ debugger send: 'source ', ((Smalltalk getPackageDirectoryForPackage:GDBDebuggeesResource package)
+ / 'c' / 'py-varobj.py') pathName.
+ debugger enablePrettyPrinting.
+ debugger send: 'b py-varobj.c:22'.
+ debugger send: 'r' andWaitFor: GDBStoppedEvent.
+
+ c1 := VDBVariableObject evaluate: '&c1' in: debugger selectedInferior threads first stack first using: debugger.
+ self assert: c1 isDynamic.
+ self assert: c1 path = '&c1'.
+
+ c1_cdr := c1 children second.
+ self assert: c1_cdr expression = 'cdr'.
+ self assert: c1_cdr isDynamic.
+ self assert: c1_cdr parent == c1.
+
+ c1_cdr_d := c1_cdr duplicate.
+ self assert: c1_cdr_d ~= c1_cdr.
+ self assert: c1_cdr_d parent ~= c1_cdr parent.
+
+ c1_cdr_d_cdr := c1_cdr_d children second.
+ self assert: c1_cdr_d_cdr expression = 'cdr'.
+ self assert: c1_cdr_d_cdr isDynamic.
+ self assert: c1_cdr_d_cdr parent == c1_cdr_d
+.
+ c1_cdr_d_cdr_d := c1_cdr_d_cdr duplicate.
+ self assert: c1_cdr_d_cdr_d ~= c1_cdr_d_cdr.
+ self assert: c1_cdr_d_cdr_d parent ~= c1_cdr_d_cdr parent.
+
+ debugger send: 'quit' andWait: false.
+
+ "Created: / 08-07-2019 / 15:38:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (comment): / 08-07-2019 / 16:53:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+