tests/GDBMIParserTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 07 Feb 2019 15:18:41 +0000
changeset 175 a04e1a36e888
parent 174 18ef81a3fee5
child 208 b0d2028189fa
permissions -rw-r--r--
Fix for multi-location breakpoints created initially as pending If the breakpoint has been created as pending breakpoint it is unknown whether it is a multi-location breakpoint or not so it has no locations. If, once the object is loaded abd breakpoint can be installed, it turns out there are multiple locations, we get an an =breakpoint-modified event listing all locations. Therefore, we have to update existing breakpoint and add locations.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     4
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     5
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     7
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     8
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
     9
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    10
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    13
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    14
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    16
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    18
"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"{ Package: 'jv:libgdbs/tests' }"
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    21
"{ NameSpace: Smalltalk }"
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
    22
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    23
TestCase subclass:#GDBMIParserTests
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    24
	instanceVariableNames:'properties prop1 prop2 prop3'
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:''
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    26
	poolDictionaries:'GDBCommandStatus'
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    27
	category:'GDB-Private-Tests'
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    30
!GDBMIParserTests class methodsFor:'documentation'!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    31
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    32
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    33
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    34
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    35
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    36
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    37
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    38
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    39
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    40
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    41
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    42
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    43
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    44
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    45
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    46
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    47
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    48
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    49
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    50
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 89
diff changeset
    51
! !
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
    52
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    53
!GDBMIParserTests methodsFor:'accessing'!
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    54
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    55
prop1
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    56
    ^ prop1
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    57
!
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    58
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    59
prop2
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    60
    ^ prop2
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    61
!
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    62
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    63
prop3
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    64
    ^ prop3
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    65
! !
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    66
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    67
!GDBMIParserTests methodsFor:'accessing-properties'!
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    68
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
    69
properties
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    70
    ^ GDBObject getPropertiesOf: self.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
    71
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    72
    "Modified: / 20-06-2014 / 09:04:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
    73
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
    74
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    75
propertyAt: name
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    76
    ^ GDBObject getProperty: name of: self
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    77
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    78
    "Created: / 31-05-2014 / 00:00:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    79
    "Modified: / 20-06-2014 / 09:05:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    80
!
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    81
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    82
propertyAt: name put: value
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    83
    ^ GDBObject setProperty: name of: self to: value
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    84
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    85
    "Created: / 31-05-2014 / 00:01:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
    86
    "Modified: / 20-06-2014 / 09:05:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    87
! !
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    88
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
    89
!GDBMIParserTests methodsFor:'running'!
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    90
89
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    91
setUp
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    92
    Magritte::MADescriptionBuilder default flush.
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    93
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    94
    "Created: / 11-11-2017 / 12:02:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    95
!
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
    96
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    97
tearDown
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    98
    properties := nil.
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
    99
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   100
    "Created: / 18-06-2014 / 07:59:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   101
! !
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   102
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   103
!GDBMIParserTests methodsFor:'tests - C strings'!
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
test_c_string_01
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   106
    self assert:(GDBMIParser on:'"Hello" xxx') parseCString = 'Hello'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   107
    self assert:(GDBMIParser on:'"\"Hello\"" xxx') parseCString = '"Hello"'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   108
    self assert:(GDBMIParser on:'"\H\e\l\l\o" xxx') parseCString = 'Hello'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   109
    self assert:(GDBMIParser on:'"Hel\nlo" xxx') parseCString = 'Hel
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   110
lo'.
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   111
    self assert:(GDBMIParser on:'"X\xE1X" xxx') parseCString = ('X', (Character codePoint: 16rE1), 'X').
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   112
    self 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   113
        assert:(GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   114
                on:'"warning: File \"/home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/stx/.gdbinit\" auto-loading has been declined by your `auto-load safe-path'' set to \"$debugdir:$datadir/auto-load\".\n"') 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   115
                    parseCString 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   116
                    = 'warning: File "/home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/stx/.gdbinit" auto-loading has been declined by your `auto-load safe-path'' set to "$debugdir:$datadir/auto-load".
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   117
'.
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   118
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    "Created: / 28-05-2014 / 00:05:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   120
    "Modified: / 15-02-2018 / 08:55:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   121
    "Modified: / 04-02-2018 / 21:59:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
! !
a96eb336dbd3 More work reading.writing GDB events/commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   124
!GDBMIParserTests methodsFor:'tests - commands'!
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   125
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   126
test_command_01
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   127
    | command |
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   128
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   129
    command := (GDBMIParser on:'b factorial') parseCommand.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   130
    self assert:command isCLICommand.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   131
    self assert:command token isNil.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   132
    self assert:command value = 'b factorial'.
174
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   133
    self assert:command operation = 'break'.
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   134
    self assert:command runOnBackground not.
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   135
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   136
    command := (GDBMIParser on:'cont   &   ') parseCommand.
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   137
    self assert:command isCLICommand.
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   138
    self assert:command token isNil.
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   139
    self assert:command value = 'cont   '.
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   140
    self assert:command operation = 'continue'.
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   141
    self assert:command runOnBackground.
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   142
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   143
    "Created: / 24-06-2014 / 23:21:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
174
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   144
    "Modified: / 28-01-2019 / 23:05:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   145
!
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   146
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   147
test_command_02
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   148
    | command |
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   149
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   150
    command := (GDBMIParser on:'-gdb-exit') parseCommand.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   151
    self assert:command isMICommand.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   152
    self assert:command class == GDBMI_gdb_exit.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   153
    self assert:command arguments isEmpty
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   154
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   155
    "Created: / 24-06-2014 / 23:29:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   156
! !
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   157
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   158
!GDBMIParserTests methodsFor:'tests - commands reponses'!
27
e7e01078d9c4 Temporary commit - more on process simulator
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 20
diff changeset
   159
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   160
test_command_break_created_01
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   161
    | parser  events |
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   162
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   163
    parser := GDBMIParser 
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   164
            on:'=breakpoint-created,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xf3416ac0",func="__STX_AddTimeout",file="util.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0_x32_lin/build/stx/librun/util.c",line="143",thread-groups=["i1"],times="0",original-location="__STX_AddTimeout"}
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   165
'.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   166
    events := parser parseOutput.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   167
    self assert:events size == 1.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   168
    self assert:events first class == GDBBreakpointCreatedEvent.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   169
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   170
    "Created: / 11-07-2017 / 10:07:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   171
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 84
diff changeset
   172
89
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   173
test_command_break_created_02
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   174
    | parser  events |
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   175
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   176
    parser := GDBMIParser 
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   177
            on:'=breakpoint-created,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="<MULTIPLE>",times="0",original-location="stxThinLock"},{number="1.1",enabled="y",addr="0x00007fffeb6a0423",func="stxJ_MONITORENTER",file="../include/thinlocks.h",fullname="/home/jv/Private/Projects/SmalltalkX/sources/feature-94-revamp-thinlocks/build/stx/stc/thinlocks.h",line="127",thread-groups=["i1"]},{number="1.2",enabled="y",addr="0x00007ffff4c3b129",func="stxThinLock",file="../include/thinlocks.h",fullname="/home/jv/Private/Projects/SmalltalkX/sources/feature-94-revamp-thinlocks/build/stx/stc/thinlocks.h",line="128",thread-groups=["i1"]}
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   178
'.
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   179
    events := parser parseOutput.
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   180
    self assert:events size == 1.
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   181
    self assert:events first class == GDBBreakpointCreatedEvent.
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   182
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   183
    "Created: / 03-10-2017 / 11:20:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   184
!
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   185
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   186
test_command_break_list_01
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   187
    | parser  events |
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   188
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   189
    parser := GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   190
            on:'1^done,BreakpointTable={nr_rows="1",nr_cols="6",hdr=[{width="3",alignment="-1",col_name="number",colhdr="Num"},{width="14",alignment="-1",col_name="type",colhdr="Type"},{width="4",alignment="-1",col_name="disp",colhdr="Disp"},{width="3",alignment="-1",col_name="enabled",colhdr="Enb"},{width="10",alignment="-1",col_name="addr",colhdr="Address"},{width="40",alignment="2",col_name="what",colhdr="What"}],body=[bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x000100d0",func="main",file="hello.c",fullname="/home/foo/hello.c",line="5",thread-groups=["i1"],times="0",ignore="3"}]}
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   191
'.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   192
    parser token2CommandMappingBlock:[:token | GDBMI_break_list new ].
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   193
    events := parser parseOutput.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   194
    self assert:events size == 1.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   195
    self assert:(events first result propertyAt:'BreakpointTable') notNil.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   196
    self 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   197
        assert:((events first result propertyAt:'BreakpointTable') at:'body') 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   198
                notNil.
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   199
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   200
    "Created: / 20-06-2014 / 09:08:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   201
!
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   202
84
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   203
test_command_break_modified_01
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   204
    | parser  events |
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   205
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   206
    parser := GDBMIParser 
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   207
            on:'=breakpoint-modified,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0xf33f4daf",func="_mark",file="new.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0_x32_lin/build/stx/librun/new.c",line="18538",thread-groups=["i1"],times="0",script={"set $x = $x + 1","c"},original-location="_mark"}
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   208
'.
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   209
    events := parser parseOutput.
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   210
    self assert:events size == 1.
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   211
    self assert:events first class == GDBBreakpointModifiedEvent.
89
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   212
    self assert:(events first breakpoints first propertyAt:'script') = ('set $x = $x + 1', Character cr ,  'c')
84
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   213
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   214
    "Created: / 06-07-2017 / 07:47:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
89
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   215
    "Modified: / 12-11-2017 / 20:18:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
84
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   216
!
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   217
97
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   218
test_command_data_read_memory_01
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   219
    | parser events result |
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   220
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   221
    parser := GDBMIParser 
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   222
            on:('9^done,addr="0x00001390",nr-bytes="6",total-bytes="6",
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   223
next-row="0x00001396",prev-row="0x0000138e",next-page="0x00001396",
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   224
prev-page="0x0000138a",memory=[
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   225
{addr="0x00001390",data=["0x00","0x01"]},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   226
{addr="0x00001392",data=["0x02","0x03"]},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   227
{addr="0x00001394",data=["0x04","0x05"]}]' asStringCollection asStringWith:'').
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   228
    parser token2CommandMappingBlock:[:token | GDBMI_data_read_memory new ].
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   229
    events := parser parseOutput.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   230
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   231
    self assert:events size == 1.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   232
    result := events first result.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   233
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   234
    self assert:((result value) isKindOf: GDBMemoryDump).
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   235
    self assert: (result value) addr = '0x00001390'.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   236
    self assert: (result value) memory size = 3.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   237
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   238
    "Created: / 24-01-2018 / 08:55:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   239
    "Modified: / 25-01-2018 / 09:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   240
!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   241
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   242
test_command_data_read_memory_02
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   243
    | parser events result |
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   244
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   245
    parser := GDBMIParser 
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   246
            on:('4^done,addr="0x000013a0",nr-bytes="32",total-bytes="32",
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   247
next-row="0x000013c0",prev-row="0x0000139c",
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   248
next-page="0x000013c0",prev-page="0x00001380",memory=[
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   249
{addr="0x000013a0",data=["0x10","0x11","0x12","0x13"],ascii="xxxx"},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   250
{addr="0x000013a4",data=["0x14","0x15","0x16","0x17"],ascii="xxxx"},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   251
{addr="0x000013a8",data=["0x18","0x19","0x1a","0x1b"],ascii="xxxx"},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   252
{addr="0x000013ac",data=["0x1c","0x1d","0x1e","0x1f"],ascii="xxxx"},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   253
{addr="0x000013b0",data=["0x20","0x21","0x22","0x23"],ascii=" !!\"#"},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   254
{addr="0x000013b4",data=["0x24","0x25","0x26","0x27"],ascii="$%&''"},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   255
{addr="0x000013b8",data=["0x28","0x29","0x2a","0x2b"],ascii="()*+"},
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   256
{addr="0x000013bc",data=["0x2c","0x2d","0x2e","0x2f"],ascii=",-./"}]' asStringCollection asStringWith:'').
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   257
    parser token2CommandMappingBlock:[:token | GDBMI_data_read_memory new ].
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   258
    events := parser parseOutput.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   259
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   260
    self assert:events size == 1.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   261
    result := events first result.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   262
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   263
    self assert:((result value) isKindOf: GDBMemoryDump).
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   264
    self assert: (result value) addr = '0x000013a0'.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   265
    self assert: (result value) memory size = 8.
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   266
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   267
    "Created: / 25-01-2018 / 22:53:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   268
!
b17c889076e4 Added API for memory dumps
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   269
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   270
test_command_gdb_exit
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   271
    | parser events result |
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   272
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   273
    parser := GDBMIParser 
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   274
            on:'1^exit'.
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   275
    parser token2CommandMappingBlock:[:token | GDBMI_gdb_exit new ].
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   276
    events := parser parseOutput.
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   277
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   278
    self assert:events size == 1.
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   279
    result := events first result.
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   280
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   281
    self assert:result value isNil.
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   282
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   283
    "Created: / 31-05-2017 / 21:19:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   284
!
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 77
diff changeset
   285
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   286
test_command_stack_list_frames_01
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   287
    | parser  events |
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   288
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   289
    parser := GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   290
            on:'1^done,stack=[frame={level="0",addr="0x00010734",func="callee4",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="8"},frame={level="1",addr="0x0001076c",func="callee3",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"},frame={level="2",addr="0x0001078c",func="callee2",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="22"},frame={level="3",addr="0x000107b4",func="callee1",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="27"},frame={level="4",addr="0x000107e0",func="main",file="../../../devo/gdb/testsuite/gdb.mi/basics.c",fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="32"}]
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   291
'.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   292
    parser token2CommandMappingBlock:[:token | GDBMI_stack_list_frames new ].
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   293
    events := parser parseOutput.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   294
    self assert:events size == 1.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   295
    self assert:(events first result propertyAt:'stack') size == 5.
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   296
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   297
    "Created: / 19-06-2014 / 22:00:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
20
76ac209277a7 Unified implementation of #propertyAt: & #propertyAt:put:...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 18
diff changeset
   298
    "Modified: / 20-06-2014 / 09:18:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   299
!
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   300
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   301
test_command_thread_info_01
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   302
    | parser events result |
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   303
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   304
    parser := GDBMIParser 
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   305
            on:'1^done,threads=[{id="2",target-id="Thread 0xb7e14b90 (LWP 21257)",frame={level="0",addr="0xffffe410",func="__kernel_vsyscall",args=[]},state="running"},{id="1",target-id="Thread 0xb7e156b0 (LWP 21254)",frame={level="0",addr="0x0804891f",func="foo",args=[{name="i",value="10"}],file="/tmp/a.c",fullname="/tmp/a.c",line="158"},state="running"}],current-thread-id="1"'.        ''.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   306
    parser token2CommandMappingBlock:[:token | GDBMI_thread_info new ].
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   307
    events := parser parseOutput.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   308
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   309
    self assert:events size == 1.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   310
    result := events first result.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   311
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   312
    self assert: (result propertyAt: 'current-thread-id') = '1'.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   313
    self assert: (result propertyAt:'threads') size == 2.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   314
    self assert:((result propertyAt:'threads') first isKindOf: GDBThreadInfo).
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   315
    self assert: (result propertyAt:'threads') first id = 2.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   316
    self assert: (result propertyAt:'threads') first targetId = 'Thread 0xb7e14b90 (LWP 21257)'.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   317
    self assert: (result propertyAt:'threads') first state == GDBThreadStateRunning theOneAndOnlyInstance.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   318
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   319
    "Created: / 08-03-2015 / 08:13:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   320
!
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   321
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   322
test_command_var_create_01
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   323
    | parser events result |
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   324
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   325
    parser := GDBMIParser 
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   326
            on:'14^done,name="var1",numchild="0",value="5",type="int",thread-id="1",has_more="0"'.
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   327
    parser token2CommandMappingBlock:[:token | GDBMI_var_create new ].
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   328
    events := parser parseOutput.
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   329
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   330
    self assert:events size == 1.
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   331
    result := events first result.
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   332
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   333
    self assert:((result value) isKindOf: GDBVariableObject).
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 99
diff changeset
   334
    self assert: (result value) id = 'var1'.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   335
    self assert:((result value) instVarNamed: #value) = '5'.
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   336
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 72
diff changeset
   337
    "Created: / 19-03-2015 / 07:46:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   338
    "Modified: / 15-02-2018 / 09:18:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
99
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   339
!
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   340
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   341
test_command_var_create_02
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   342
    | parser events result |
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   343
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   344
    parser := GDBMIParser 
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   345
            on:'212^error,msg="Cannot instantiate printer for default visualizer"'.
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   346
    parser token2CommandMappingBlock:[:token | GDBMI_var_create new ].
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   347
    events := parser parseOutput.
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   348
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   349
    self assert:events size == 1.
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   350
    result := events first result.
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   351
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   352
    self assert: result isError.
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   353
    self assert: (result propertyAt: #msg) = 'Cannot instantiate printer for default visualizer'.
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   354
    self assert: result value isNil.
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   355
56b66436a713 Fixed MI parser to correctly parse command error responses
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 97
diff changeset
   356
    "Created: / 02-02-2018 / 09:27:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   357
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   358
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   359
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   360
test_command_var_update_01
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   361
    | parser events result changelist |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   362
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   363
    parser := GDBMIParser 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   364
            on:('3^done,changelist=[{name="var1",value="3",in_scope="true",
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   365
type_changed="false"}]' asStringCollection asStringWith:'').
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   366
    parser token2CommandMappingBlock:[:token | GDBMI_var_update new ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   367
    events := parser parseOutput.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   368
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   369
    self assert:events size == 1.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   370
    result := events first result.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   371
    changelist := result propertyAt: #changelist.  
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   372
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   373
    self assert: changelist size == 1.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   374
    self assert:(changelist first isKindOf: GDBVariableObjectChange).
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   375
    self assert:(changelist first id = 'var1').
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   376
    self assert:(changelist first value = '3').
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   377
    self assert:(changelist first isInvalid = false).
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   378
    self assert:(changelist first inScope = true)
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   379
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   380
    "Created: / 29-01-2018 / 20:21:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   381
    "Modified: / 12-02-2018 / 22:15:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   382
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   383
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   384
test_data_disassemble_01
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   385
    | parser  events  result  lines |
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   386
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   387
    parser := GDBMIParser 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   388
            on:('8^done,asm_insns=[src_and_asm_line={line="3",file="factorial1.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0/build/jv/libgdbs/tests/c/factorial1.c",line_asm_insn=[{address="0x000000000000064a",func-name="factorial",offset="0",opcodes="55",inst="push   %rbp"},{address="0x000000000000064b",func-name="factorial",offset="1",opcodes="48 89 e5",inst="mov    %rsp,%rbp"},{address="0x000000000000064e",func-name="factorial",offset="4",opcodes="48 83 ec 10",inst="sub    $0x10,%rsp"},{address="0x0000000000000652",func-name="factorial",offset="8",opcodes="89 7d fc",inst="mov    %edi,-0x4(%rbp)"}]},src_and_asm_line={line="4",file="factorial1.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0/build/jv/libgdbs/tests/c/factorial1.c",line_asm_insn=[{address="0x0000000000000655",func-name="factorial",offset="11",opcodes="83 7d fc 01",inst="cmpl   $0x1,-0x4(%rbp)"},{address="0x0000000000000659",func-name="factorial",offset="15",opcodes="75 07",inst="jne    0x662 <factorial+24>"}]},src_and_asm_line={line="5",file="factorial1.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0/build/jv/libgdbs/tests/c/factorial1.c",line_asm_insn=[{address="0x000000000000065b",func-name="factorial",offset="17",opcodes="b8 01 00 00 00",inst="mov    $0x1,%eax"},{address="0x0000000000000660",func-name="factorial",offset="22",opcodes="eb 11",inst="jmp    0x673 <factorial+41>"}]},src_and_asm_line={line="6",file="factorial1.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0/build/jv/libgdbs/tests/c/factorial1.c",line_asm_insn=[]},src_and_asm_line={line="7",file="factorial1.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0/build/jv/libgdbs/tests/c/factorial1.c",line_asm_insn=[{address="0x0000000000000662",func-name="factorial",offset="24",opcodes="8b 45 fc",inst="mov    -0x4(%rbp),%eax"},{address="0x0000000000000665",func-name="factorial",offset="27",opcodes="83 e8 01",inst="sub    $0x1,%eax"},{address="0x0000000000000668",func-name="factorial",offset="30",opcodes="89 c7",inst="mov    %eax,%edi"},{address="0x000000000000066a",func-name="factorial",offset="32",opcodes="e8 db ff ff ff",inst="callq  0x64a <factorial>"},{address="0x000000000000066f",func-name="factorial",offset="37",opcodes="0f af 45 fc",inst="imul   -0x4(%rbp),%eax"}]},src_and_asm_line={line="8",file="factorial1.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0/build/jv/libgdbs/tests/c/factorial1.c",line_asm_insn=[]},src_and_asm_line={line="9",file="factorial1.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/stx_8_0_0/build/jv/libgdbs/tests/c/factorial1.c",line_asm_insn=[{address="0x0000000000000673",func-name="factorial",offset="41",opcodes="c9",inst="leaveq "},{address="0x0000000000000674",func-name="factorial",offset="42",opcodes="c3",inst="retq   "}]}]').
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   389
    parser token2CommandMappingBlock:[:token | GDBMI_data_disassemble new ].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   390
    events := parser parseOutput.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   391
    self assert:events size == 1.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   392
    result := events first result.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   393
    lines := result propertyAt:#'asm_insns'.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   394
    self assert: lines isSequenceable.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   395
    self assert:(lines first isKindOf:GDBInstructionsAndSourceLine).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   396
    self assert:(lines first instructions isSequenceable).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   397
    self assert:(lines first instructions first isKindOf: GDBInstruction).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   398
    self assert:(lines first instructions first opcodes isByteArray).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   399
    self assert:(lines first instructions first address isInteger).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   400
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   401
    "Modified: / 03-07-2018 / 14:44:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   402
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   403
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   404
test_data_disassemble_02
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   405
    | parser  events  result  lines |
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   406
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   407
    parser := GDBMIParser 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   408
            on:('67^done,asm_insns=[{address="0x000000000070b748",func-name="bee!!JITObjectReference>>#sourceOffset:",offset="0",opcodes="48 89 c6",inst="mov    %rax,%rsi"},{address="0x000000000070b74b",func-name="bee!!JITObjectReference>>#sourceOffset:",offset="3",opcodes="48 8b 44 24 08",inst="mov    0x8(%rsp),%rax"}]').
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   409
    parser token2CommandMappingBlock:[:token | GDBMI_data_disassemble new ].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   410
    events := parser parseOutput.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   411
    self assert:events size == 1.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   412
    result := events first result.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   413
    lines := result propertyAt:#'asm_insns'.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   414
    self assert: lines isSequenceable.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   415
    self assert:(lines first isKindOf:GDBInstruction).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   416
    self assert:(lines first opcodes isByteArray).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   417
    self assert:(lines first address isInteger).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   418
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   419
    "Created: / 03-07-2018 / 17:12:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   420
! !
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   421
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   422
!GDBMIParserTests methodsFor:'tests - examples'!
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   423
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   424
test_simple_example_01
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   425
    | parser  events |
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   426
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   427
    parser := GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   428
            on:'^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x08048564",func="main",file="myprog.c",fullname="/home/nickrob/myprog.c",line="68",thread-groups=["i1"],times="0"}
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   429
(gdb)
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   430
'.
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   431
    events := parser parseOutput.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   432
    self assert:events size == 1.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   433
    self assert:events first isCommandResultEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   434
    self assert:events first result status == CommandStatusDone.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   435
    self 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   436
        assert:((events first result propertyAt:'bkpt') at:'addr') = '0x08048564'
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   437
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   438
    "Created: / 30-05-2014 / 23:53:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
18
6bf3d5c400d1 Make GDBEvent and GDBCommandResult also described by value descriptor...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 17
diff changeset
   439
    "Modified: / 19-06-2014 / 21:55:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   440
!
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   441
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   442
test_simple_example_02
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   443
    | input parser events |
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   444
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   445
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   446
    input := '1234*running
11
474fbb650afe PTY support refactored to use GDBPTY object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   447
1234^done
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   448
(gdb)
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   449
' readStream.
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   450
    parser := GDBMIParser on: input.
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   451
    events := parser parseOutput.
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   452
    self assert:events size == 1.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   453
    self assert:events first token == 1234.
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   454
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   455
    parser := GDBMIParser on: input.
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   456
    events := parser parseOutput.  
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   457
    self assert:events size == 1.
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   458
    self assert:events first isCommandResultEvent.
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   459
    self assert:events first result status == CommandStatusDone.
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   460
    self assert:events first token == 1234
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   461
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   462
    "Created: / 03-06-2014 / 00:50:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 47
diff changeset
   463
    "Modified: / 27-02-2015 / 09:24:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   464
!
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   465
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   466
test_simple_session_01
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   467
    | parser  events |
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   468
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   469
    parser := GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   470
            on:'~"GNU gdb (GDB) 7.5-ubuntu\n"
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   471
~"Copyright (C) 2012 Free Software Foundation, Inc.\n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   472
~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.  Type \"show copying\"\nand \"show warranty\" for details.\n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   473
~"This GDB was configured as \"x86_64-linux-gnu\".\nFor bug reporting instructions, please see:\n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   474
~"<http://www.gnu.org/software/gdb/bugs/>...\n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   475
~"Reading symbols from /home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/jv/libgdbs/tests/c/factorial..."
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   476
~"done.\n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   477
(gdb) 
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   478
'.
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   479
    events := parser parseOutput.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   480
    self assert:events size == 7.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   481
    self assert:events first isConsoleOutputEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   482
    self assert:events first value = 'GNU gdb (GDB) 7.5-ubuntu
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   483
'.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   484
    self assert:events last isConsoleOutputEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   485
    self assert:events last value = 'done.
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   486
'.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   487
    parser := GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   488
            on:'^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0000000000400556",func="main",file="factorial.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/jv/libgdbs/tests/c/factorial.c",line="12",times="0",original-location="main"}
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   489
(gdb) 
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   490
'.
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   491
    events := parser parseOutput.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   492
    self assert:events size == 1.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   493
    self assert:events first result status == CommandStatusDone.
77
305094ae9fd9 Removed simulated test - as the interface to GDB changes, recorded sessions are no longer valid.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   494
    self assert:((events first result propertyAt:'bkpt') at:'addr') 
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   495
                = '0x0000000000400556'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   496
    parser := GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   497
            on:'~"Breakpoint 2 at 0x400527: file factorial.c, line 4.\n"
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   498
=breakpoint-created,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x0000000000400527",func="factorial",file="factorial.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/jv/libgdbs/tests/c/factorial.c",line="4",times="0",original-location="factorial"}
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   499
^done
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   500
(gdb)
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   501
'.
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   502
    events := parser parseOutput.
89
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   503
    self assert:events size == 2.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   504
    self assert:events first isConsoleOutputEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   505
    self assert:events first value 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   506
                = 'Breakpoint 2 at 0x400527: file factorial.c, line 4.
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   507
'.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   508
    self assert:events second isNotificationEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   509
    self assert:events second class == GDBBreakpointCreatedEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   510
    self assert:events second type = 'breakpoint-created'.
89
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   511
    self assert:events second breakpoints size == 1.
ba62d486014f Initial support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   512
    self assert:events second breakpoints first class == GDBBreakpoint.
120
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   513
    self assert:events second breakpoints first number = '2'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   514
    self assert:events second breakpoints first file = 'factorial.c'.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   515
    parser := GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   516
            on:'&"info break\n"
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   517
~"Num     Type           Disp Enb Address            What\n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   518
~"1       breakpoint     keep y   0x0000000000400556 in main at factorial.c:12\n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   519
~"2       breakpoint     keep y   0x0000000000400527 in factorial at factorial.c:4\n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   520
^done
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   521
(gdb)
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   522
'.
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   523
    events := parser parseOutput.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   524
    self assert:events size == 5.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   525
    self assert:events first isLogOutputEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   526
    self assert:events first value = 'info break
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   527
'.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   528
    self assert:events second isConsoleOutputEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   529
    self assert:events third isConsoleOutputEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   530
    self assert:events fourth isConsoleOutputEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   531
    self assert:events fifth isCommandResultEvent.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   532
    parser := GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   533
            on:'&"run\n"
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   534
~"Starting program: /home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/jv/libgdbs/tests/c/factorial \n"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   535
=thread-group-started,id="i1",pid="17240"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   536
=thread-created,id="1",group-id="i1"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   537
^running
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   538
*running,thread-id="all"
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   539
(gdb)
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   540
'.
92
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   541
    "/ Note that parser yields anb output after first async event,
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   542
    "/ so to parse all events in the above input we have to call
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   543
    "/ parseOutput couple times
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   544
    events := parser parseOutput.
92
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   545
    self assert:events size == 3.
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   546
    self assert:events first isLogOutputEvent.
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   547
    self assert:events second isConsoleOutputEvent.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   548
    self assert:events third type = 'thread-group-started'.
92
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   549
    self assert:events third threadGroupId = 'i1'
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   550
.
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   551
    events := parser parseOutput.
92
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   552
    self assert:events size == 1.
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   553
    self assert:events first type = 'thread-created'.
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   554
    self assert:events first threadId = 1.
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   555
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   556
    events := parser parseOutput.
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   557
    self assert:events size == 2.
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   558
    self assert:events first isCommandResultEvent.
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   559
    self assert:events second type = 'running'.
4
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   560
62366cc0fd95 Added some events + fixed parser to parse a simple session.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3
diff changeset
   561
    "Created: / 01-06-2014 / 22:57:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
92
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   562
    "Modified: / 27-11-2017 / 20:29:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   563
!
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   564
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   565
test_simple_session_01_crlf
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   566
    | parser  events |
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   567
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   568
    parser := GDBMIParser 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   569
            on:('~"GNU gdb (GDB) 7.5-ubuntu\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   570
~"Copyright (C) 2012 Free Software Foundation, Inc.\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   571
~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.  Type \"show copying\"\nand \"show warranty\" for details.\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   572
~"This GDB was configured as \"x86_64-linux-gnu\".\nFor bug reporting instructions, please see:\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   573
~"<http://www.gnu.org/software/gdb/bugs/>...\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   574
~"Reading symbols from /home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/jv/libgdbs/tests/c/factorial..."
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   575
~"done.\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   576
(gdb) 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   577
' asStringCollection asStringWith: (Character return, Character lf)).
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   578
    events := parser parseOutput.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   579
    self assert:events size == 7.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   580
    self assert:events first isConsoleOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   581
    self assert:events first value = 'GNU gdb (GDB) 7.5-ubuntu
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   582
'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   583
    self assert:events last isConsoleOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   584
    self assert:events last value = 'done.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   585
'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   586
    parser := GDBMIParser 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   587
            on:'^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x0000000000400556",func="main",file="factorial.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/jv/libgdbs/tests/c/factorial.c",line="12",times="0",original-location="main"}
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   588
(gdb) 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   589
'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   590
    events := parser parseOutput.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   591
    self assert:events size == 1.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   592
    self assert:events first result status == CommandStatusDone.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   593
    self assert:((events first result propertyAt:'bkpt') at:'addr') 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   594
                = '0x0000000000400556'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   595
    parser := GDBMIParser 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   596
            on:'~"Breakpoint 2 at 0x400527: file factorial.c, line 4.\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   597
=breakpoint-created,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="0x0000000000400527",func="factorial",file="factorial.c",fullname="/home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/jv/libgdbs/tests/c/factorial.c",line="4",times="0",original-location="factorial"}
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   598
^done
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   599
(gdb)
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   600
'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   601
    events := parser parseOutput.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   602
    self assert:events size == 2.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   603
    self assert:events first isConsoleOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   604
    self assert:events first value 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   605
                = 'Breakpoint 2 at 0x400527: file factorial.c, line 4.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   606
'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   607
    self assert:events second isNotificationEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   608
    self assert:events second class == GDBBreakpointCreatedEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   609
    self assert:events second type = 'breakpoint-created'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   610
    self assert:events second breakpoints size == 1.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   611
    self assert:events second breakpoints first class == GDBBreakpoint.
120
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   612
    self assert:events second breakpoints first number = '2'.
73877848ea7f Added support for breakpoints with multiple locations
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   613
    self assert:events second breakpoints first file = 'factorial.c'.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   614
    parser := GDBMIParser 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   615
            on:'&"info break\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   616
~"Num     Type           Disp Enb Address            What\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   617
~"1       breakpoint     keep y   0x0000000000400556 in main at factorial.c:12\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   618
~"2       breakpoint     keep y   0x0000000000400527 in factorial at factorial.c:4\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   619
^done
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   620
(gdb)
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   621
'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   622
    events := parser parseOutput.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   623
    self assert:events size == 5.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   624
    self assert:events first isLogOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   625
    self assert:events first value = 'info break
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   626
'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   627
    self assert:events second isConsoleOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   628
    self assert:events third isConsoleOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   629
    self assert:events fourth isConsoleOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   630
    self assert:events fifth isCommandResultEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   631
    parser := GDBMIParser 
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   632
            on:'&"run\n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   633
~"Starting program: /home/jv/Private/Projects/SmalltalkX/sources/branches/jv1/build/jv/libgdbs/tests/c/factorial \n"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   634
=thread-group-started,id="i1",pid="17240"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   635
=thread-created,id="1",group-id="i1"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   636
^running
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   637
*running,thread-id="all"
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   638
(gdb)
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   639
'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   640
    "/ Note that parser yields anb output after first async event,
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   641
    "/ so to parse all events in the above input we have to call
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   642
    "/ parseOutput couple times
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   643
    events := parser parseOutput.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   644
    self assert:events size == 3.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   645
    self assert:events first isLogOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   646
    self assert:events second isConsoleOutputEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   647
    self assert:events third type = 'thread-group-started'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   648
    self assert:events third threadGroupId = 'i1'
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   649
.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   650
    events := parser parseOutput.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   651
    self assert:events size == 1.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   652
    self assert:events first type = 'thread-created'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   653
    self assert:events first threadId = 1.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   654
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   655
    events := parser parseOutput.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   656
    self assert:events size == 2.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   657
    self assert:events first isCommandResultEvent.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   658
    self assert:events second type = 'running'.
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   659
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 92
diff changeset
   660
    "Created: / 12-01-2018 / 08:42:15 / jv"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   661
! !
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   662
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   663
!GDBMIParserTests methodsFor:'tests - values'!
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   664
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   665
test_bytearray_01
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   666
    self assert:(GDBMIParser on:'"48 89 e5"') parseByteArray =#[16r48 16r89 16re5].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   667
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   668
    "Created: / 22-06-2018 / 11:22:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   669
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   670
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   671
test_list_01
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   672
    | list |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   673
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   674
    list := (GDBMIParser on:'[]') parseList.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   675
    self assert:list class == Array.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   676
    self assert:list isEmpty.
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   677
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   678
    "Created: / 18-06-2014 / 07:13:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   679
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   680
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   681
test_list_02
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   682
    | list |
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   683
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   684
    list := (GDBMIParser on:'["i1","i2"]') parseList.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   685
    self assert:list size == 2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   686
    self assert:list first = 'i1'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   687
    self assert:list second = 'i2'.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   688
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   689
    "Created: / 19-06-2014 / 09:24:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   690
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   691
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   692
test_list_03
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   693
    | list |
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   694
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   695
    list := (GDBMIParser on:'[["1","2"],"i2"]') parseList.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   696
    self assert:list size == 2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   697
    self assert:list first size == 2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   698
    self assert:list first first = '1'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   699
    self assert:list first second = '2'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   700
    self assert:list second = 'i2'.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   701
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   702
    "Created: / 19-06-2014 / 09:25:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   703
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   704
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   705
test_list_04
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   706
    | list |
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   707
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   708
    list := (GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   709
            on:'[bkpt={number="1",line="2"},bkpt={number="2",line="10"}]') parseList.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   710
    self assert:list size == 2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   711
    self assert:list first size == 2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   712
    self assert:(list first at:'number') = '1'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   713
    self assert:(list first at:'line') = '2'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   714
    self assert:list second size == 2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   715
    self assert:(list second at:'number') = '2'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   716
    self assert:(list second at:'line') = '10'.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   717
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   718
    "Created: / 19-06-2014 / 09:29:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   719
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   720
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   721
test_tuple_01
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   722
    | tuple |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   723
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   724
    tuple := (GDBMIParser on:'{}') parseTuple.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   725
    self assert:tuple class == Dictionary.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   726
    self assert:tuple isEmpty.
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   727
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   728
    "Created: / 14-06-2014 / 02:24:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   729
    "Modified: / 18-06-2014 / 07:03:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   730
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   731
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   732
test_tuple_02a
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   733
    | tuple |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   734
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   735
    tuple := (GDBMIParser on:'{p1="XXX"}') parseTuple.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   736
    self assert:tuple class == Dictionary.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   737
    self assert:tuple size == 1.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   738
    self assert:(tuple at:'p1') = 'XXX'.
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   739
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   740
    "Created: / 18-06-2014 / 07:12:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   741
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   742
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   743
test_tuple_02b
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   744
    | tuple |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   745
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   746
    tuple := (GDBMIParser on:'{p1=["i1","i2"]}') parseTuple.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   747
    self assert:tuple class == Dictionary.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   748
    self assert:tuple size == 1.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   749
    self assert:(tuple at:'p1') asArray = #( 'i1' 'i2' )
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   750
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   751
    "Created: / 18-06-2014 / 07:09:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   752
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   753
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   754
test_tuple_02c
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   755
    | tuple |
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   756
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   757
    tuple := (GDBMIParser on:'{p1={x="10",y="10"}}') parseTuple.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   758
    self assert:tuple class == Dictionary.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   759
    self assert:tuple size == 1.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   760
    self assert:(tuple at:'p1') class == Dictionary.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   761
    self assert:((tuple at:'p1') at:'x') = '10'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   762
    self assert:((tuple at:'p1') at:'y') = '10'.
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   763
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   764
    "Created: / 18-06-2014 / 07:12:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
84
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   765
!
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   766
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   767
test_tuple_03a
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   768
    | tuple |
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   769
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   770
    tuple := (GDBMIParser on:'{"c"}') parseTuple.
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   771
    self assert:tuple = #('c').
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   772
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   773
    "Created: / 06-07-2017 / 07:45:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   774
!
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   775
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   776
test_tuple_03b
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   777
    | tuple |
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   778
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   779
    tuple := (GDBMIParser on:'{"line1","line2"}') parseTuple.
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   780
    self assert:tuple = #('line1' 'line2').
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   781
7913863edaa6 Improved MI parser to handle degenrated tuples (`{"c"}`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
   782
    "Created: / 06-07-2017 / 08:21:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   783
! !
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   784
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   785
!GDBMIParserTests methodsFor:'tests - values - typed'!
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   786
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   787
test_typed_boolean
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   788
    self assert:(GDBMIParser on:'"y"') parseValueAsBoolean = true.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   789
    self assert:(GDBMIParser on:'"n"') parseValueAsBoolean = false.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   790
    self assert:(GDBMIParser on:'"yX"') parseValueAsBoolean = 'yX'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   791
    self assert:(GDBMIParser on:'"nM"') parseValueAsBoolean = 'nM'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   792
    self assert:(GDBMIParser on:'"1"') parseValueAsBoolean = true.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   793
    self assert:(GDBMIParser on:'"0"') parseValueAsBoolean = false.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   794
    self assert:(GDBMIParser on:'"1X"') parseValueAsBoolean = '1X'.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   795
    self assert:(GDBMIParser on:'"0M"') parseValueAsBoolean = '0M'.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   796
    self assert:(GDBMIParser on:'"no"') parseValueAsBoolean = 'no'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   797
    self assert:(GDBMIParser on:'"12xyz"') parseValueAsBoolean = '12xyz'.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   798
    self assert:(GDBMIParser on:'"true"') parseValueAsBoolean = true.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   799
    self assert:(GDBMIParser on:'"false"') parseValueAsBoolean = false.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   800
    self assert:(GDBMIParser on:'"invalid"') parseValueAsBoolean = 'invalid'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   801
    self assert:(GDBMIParser on:'"truelike"') parseValueAsBoolean = 'truelike'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   802
    self assert:(GDBMIParser on:'"falselike"') parseValueAsBoolean = 'falselike'.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   803
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   804
    "Created: / 18-06-2014 / 23:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   805
    "Modified: / 12-02-2018 / 22:21:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   806
!
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   807
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   808
test_typed_integer
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   809
    self assert:(GDBMIParser on:'"123"') parseValueAsInteger == 123.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   810
    self assert:(GDBMIParser on:'"0"') parseValueAsInteger == 0.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   811
    self assert:(GDBMIParser on:'"no"') parseValueAsInteger = 'no'.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   812
    self assert:(GDBMIParser on:'"12xyz"') parseValueAsInteger = '12xyz'.
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   813
    self assert:(GDBMIParser on:'"0xFaB"') parseValueAsInteger == 16rFaB. 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   814
    self assert:(GDBMIParser on:'"0x123"') parseValueAsInteger == 16r123.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   815
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   816
    "Created: / 19-06-2014 / 09:39:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   817
    "Modified: / 03-07-2018 / 14:50:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   818
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   819
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   820
test_typed_list_01a
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   821
    | object |
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   822
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   823
    object := (GDBMIParser on:'["123","456"]') parseValueAsListOf:Integer.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   824
    self assert:object size == 2.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   825
    self assert:object first == 123.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   826
    self assert:object second == 456.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   827
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   828
    "Created: / 19-06-2014 / 09:40:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   829
!
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   830
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   831
test_typed_list_02a
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   832
    | object |
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   833
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   834
    object := (GDBMIParser on:'["123","456"]') parseValueAsListOf:String.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   835
    self assert:object size == 2.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   836
    self assert:object first = '123'.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   837
    self assert:object second = '456'.
15
65d3b4bfe871 Initial support for parsing typed values (now only booleans and integers)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   838
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   839
    "Created: / 19-06-2014 / 09:41:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   840
!
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   841
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   842
test_typed_list_03a
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   843
    | objectDesc stringDesc switchDesc list |
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   844
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   845
    objectDesc := GDBMAContainer forClass:self class.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   846
    objectDesc define:#prop1 as:Integer.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   847
    objectDesc define:#prop2 as:Boolean.        
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   848
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   849
    stringDesc := Magritte::MAStringDescription new.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   850
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   851
    switchDesc := GDBMADescriptionSwitch forTag: 'object'  use: objectDesc forTag: nil  use: stringDesc.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   852
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   853
    list := (GDBMIParser on:'[object={prop1="123",prop2="n"},"xxx"]') parseValueAsListOf: nil describedBy: switchDesc.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   854
    self assert: list size == 2.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   855
    self assert: (list first isKindOf: self class).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   856
    self assert: (list first prop1 = 123).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   857
    self assert: (list first prop2 = false).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   858
    self assert: (list second = 'xxx').
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   859
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   860
    "Created: / 03-07-2018 / 16:35:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   861
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 120
diff changeset
   862
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   863
test_typed_object_01a
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   864
    | descriptor  object |
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   865
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   866
    descriptor := GDBMAContainer forClass:self class.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   867
    descriptor define:#prop1 as:Integer.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   868
    descriptor define:#prop2 as:Boolean.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   869
    object := (GDBMIParser on:'{prop1="123",prop2="y"}') 
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   870
            parseValueAsInstanceOf:self class
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   871
            describedBy:descriptor.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   872
    self assert:object class == self class.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   873
    self assert:object prop1 == 123.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   874
    self assert:object prop2.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   875
    self assert:object properties isEmptyOrNil
16
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   876
a5a8c0454395 Work in progress - object descriptors
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 15
diff changeset
   877
    "Created: / 18-06-2014 / 09:01:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   878
    "Modified: / 23-09-2014 / 22:37:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   879
!
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   880
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   881
test_typed_object_01b
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   882
    | descriptor  object |
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   883
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   884
    descriptor := GDBMAContainer forClass:self class.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   885
    descriptor 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   886
        define:#prop1
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   887
        as:Array
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   888
        of:Integer.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   889
    object := (GDBMIParser on:'{prop1=["123"]}') 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   890
            parseValueAsInstanceOf:self class
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   891
            describedBy:descriptor.
17
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   892
    self assert:object class == self class.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   893
    self assert:object prop1 size == 1.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   894
    self assert:object prop1 first = 123.
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   895
    self assert:object properties isEmptyOrNil
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   896
10d696c79188 Value descroptors refactored.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 16
diff changeset
   897
    "Created: / 19-06-2014 / 09:42:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   898
    "Modified: / 23-09-2014 / 23:01:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   899
!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   900
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   901
test_typed_object_02a
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   902
    | descriptor  object |
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   903
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   904
    descriptor := GDBMAContainer forClass:self class.
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   905
    descriptor define:#prop1 as:Integer.
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   906
    descriptor define:#prop2 as:Boolean.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   907
    object := (GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   908
            on:'[{prop1="123",prop2="y"},{prop1="789",prop2="n"}]') 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   909
                parseValueAsListOf:self class
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   910
                describedBy:descriptor.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   911
    self assert:object size == 2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   912
    self assert:object first class == self class.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   913
    self assert:object first prop1 == 123.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   914
    self assert:object first prop2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   915
    self assert:object first properties isEmptyOrNil.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   916
    self assert:object second class == self class.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   917
    self assert:object second prop1 == 789.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   918
    self assert:object second prop2 not.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   919
    self assert:object second properties isEmptyOrNil
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   920
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   921
    "Created: / 17-09-2014 / 07:42:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   922
    "Modified: / 23-09-2014 / 23:01:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   923
!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   924
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   925
test_typed_object_02b
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   926
    | descriptor  object |
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   927
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   928
    descriptor := GDBMAContainer forClass:self class.
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   929
    descriptor define:#prop1 as:Integer.
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   930
    descriptor define:#prop2 as:Boolean.
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   931
    object := (GDBMIParser 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   932
            on:'[object={prop1="123",prop2="y"},object={prop1="789",prop2="n"}]') 
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   933
                parseValueAsListOf:self class
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   934
                describedBy:descriptor.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   935
    self assert:object size == 2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   936
    self assert:object first class == self class.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   937
    self assert:object first prop1 == 123.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   938
    self assert:object first prop2.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   939
    self assert:object first properties isEmptyOrNil.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   940
    self assert:object second class == self class.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   941
    self assert:object second prop1 == 789.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   942
    self assert:object second prop2 not.
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   943
    self assert:object second properties isEmptyOrNil
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   944
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   945
    "Created: / 17-09-2014 / 07:43:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   946
    "Modified: / 23-09-2014 / 23:01:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
47
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   947
!
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   948
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   949
test_typed_object_03a
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   950
    | descriptor  object |
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   951
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   952
    descriptor := GDBMAContainer forClass:self class.
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   953
    descriptor add: 
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   954
        (Magritte::MASingleOptionDescription new
92
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   955
            optionsAndLabels: (Array with: 1 -> 'one' with: 2 -> 'two' with: #more -> 'more');
47
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   956
            accessor: (GDBMAPropertyAccessor forPropertyNamed: 'prop1')).
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   957
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   958
    object := (GDBMIParser on:'{prop1="one"}') 
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   959
                parseValueAsInstanceOf:self class
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   960
                describedBy:descriptor.
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   961
    self assert:object class == self class.
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   962
    self assert:object prop1 == 1.
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   963
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   964
    object := (GDBMIParser on:'{prop1="more"}') 
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   965
                parseValueAsInstanceOf:self class
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   966
                describedBy:descriptor.
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   967
    self assert:object class == self class.
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   968
    self assert:object prop1 == #more.         
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   969
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   970
    self should: [ 
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   971
    object := (GDBMIParser on:'{prop1="fail"}') 
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   972
                parseValueAsInstanceOf:self class
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   973
                describedBy:descriptor.
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   974
    ] raise: Magritte::MAReadError
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   975
4f5d75acecb0 Added support for parsing enums using MAOptionDescription
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   976
    "Created: / 25-09-2014 / 08:33:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
92
0f11fece852c Removed GDB simulator and fixed rest of the tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   977
    "Modified: / 27-11-2017 / 20:30:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   978
! !
29ea333a1811 More work on events and parsing.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   979
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   980
!GDBMIParserTests class methodsFor:'documentation'!
6
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   981
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   982
version_HG
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   983
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   984
    ^ '$Changeset: <not expanded> $'
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   985
! !
d935bc59f6f4 Removed useless MI prefix
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4
diff changeset
   986