tests/VDBVariableObjectTests.st
author Jan Vrany <jan.vrany@labware.com>
Tue, 26 Jul 2022 15:01:33 +0100
changeset 265 f2470f0dd9cd
parent 178 5d1c3e5fab6b
permissions -rw-r--r--
Do not show address for (pseudo) instructions with no code While such instructions do not appear in GDB-produced disassembly, they may appear in some manually-generated instruction lists. One example of such (pseudo) instruction is label.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
178
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
jv:vdb - Visual / VM Debugger
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
"{ Package: 'jv:vdb/tests' }"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"{ NameSpace: Smalltalk }"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
GDBDebuggerTestCase subclass:#VDBVariableObjectTests
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
	instanceVariableNames:''
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	classVariableNames:''
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	poolDictionaries:''
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	category:'VDB-Core-Tests'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
!VDBVariableObjectTests class methodsFor:'documentation'!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
copyright
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
jv:vdb - Visual / VM Debugger
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
Copyright (C) 2015-now Jan Vrany
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
This software is licensed under 'Creative Commons Attribution-NonCommercial 4.0 International License'
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
You may find a full license text in LICENSE.txt or at http://creativecommons.org/licenses/by-nc/4.0/
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
! !
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!VDBVariableObjectTests methodsFor:'running'!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
setUp
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    super setUp.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
    debugger pythonImportVDB.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    "Created: / 06-07-2019 / 01:20:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
    "Modified: / 08-07-2019 / 13:15:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
! !
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
!VDBVariableObjectTests methodsFor:'tests'!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
test_variables_01a
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    | stack varobj |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    debugger executable: GDBDebuggeesResource current binaryFactorial1.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    self assert: debugger breakpoints isEmpty.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
    debugger send: 'source ', ((Smalltalk getPackageDirectoryForPackage:GDBDebuggeesResource package)
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
            / 'c' / 'py-framedecorator.py') pathName.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    debugger enableFrameFilters.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    debugger send: 'b factorial'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    stack := debugger selectedInferior threads first stack.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    varobj := VDBVariableObject evaluate: 'syntheticArg0'  in: stack first using: debugger. 
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    self assert: varobj expression = 'syntheticArg0'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    self assert: varobj value = '12'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    self assert: varobj type = 'long long'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    "
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    VDBFrameApplication new
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
        debugger: debugger;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
        frame: stack first;
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
        open.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    "
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    debugger send: 'quit' andWait: false.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    "Created: / 06-07-2019 / 01:23:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    "Modified: / 08-07-2019 / 13:29:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
!
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
test_variables_02a
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    "
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    Test #duplicate
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    "
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    | c1 c1_cdr c1_cdr_d  c1_cdr_d_cdr c1_cdr_d_cdr_d |
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    debugger executable: GDBDebuggeesResource current binaryPyVarobj.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    self assert: debugger breakpoints isEmpty.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    debugger send: 'source ', ((Smalltalk getPackageDirectoryForPackage:GDBDebuggeesResource package)
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
            / 'c' / 'py-varobj.py') pathName.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    debugger enablePrettyPrinting.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    debugger send: 'b py-varobj.c:22'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    debugger send: 'r' andWaitFor: GDBStoppedEvent.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    c1 := VDBVariableObject evaluate: '&c1'  in: debugger selectedInferior threads first stack first using: debugger.   
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    self assert: c1 isDynamic.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    self assert: c1 path = '&c1'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    c1_cdr := c1 children second.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    self assert: c1_cdr expression = 'cdr'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    self assert: c1_cdr isDynamic.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    self assert: c1_cdr parent == c1.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    c1_cdr_d := c1_cdr duplicate.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    self assert: c1_cdr_d ~= c1_cdr.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    self assert: c1_cdr_d parent ~= c1_cdr parent.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    c1_cdr_d_cdr := c1_cdr_d children second.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    self assert: c1_cdr_d_cdr expression = 'cdr'.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    self assert: c1_cdr_d_cdr isDynamic.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    self assert: c1_cdr_d_cdr parent == c1_cdr_d
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    c1_cdr_d_cdr_d := c1_cdr_d_cdr duplicate.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    self assert: c1_cdr_d_cdr_d ~= c1_cdr_d_cdr.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    self assert: c1_cdr_d_cdr_d parent ~= c1_cdr_d_cdr parent.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    debugger send: 'quit' andWait: false.
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    "Created: / 08-07-2019 / 15:38:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    "Modified (comment): / 08-07-2019 / 16:53:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
! !
5d1c3e5fab6b Initial support for VDB python-based variable objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118