ByteCodeCompilerWithBreakpointSupportTests.st
author Claus Gittinger <cg@exept.de>
Wed, 03 Apr 2019 22:40:09 +0200
changeset 4403 4649f9dd9614
parent 2538 e2818016d2d4
child 4315 734f7d2b6efe
permissions -rw-r--r--
#DOCUMENTATION by cg class: LazyMethod changed: #noByteCode
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
	      All Rights Reserved
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 hereby transferred.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'stx:libcomp' }"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
TestCase subclass:#ByteCodeCompilerWithBreakpointSupportTests
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
	instanceVariableNames:'breakpoints method'
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
	classVariableNames:''
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	poolDictionaries:''
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	category:'System-Compiler-Debugging'
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!ByteCodeCompilerWithBreakpointSupportTests class methodsFor:'documentation'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
copyright
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
 COPYRIGHT (c) 2006 by eXept Software AG
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	      All Rights Reserved
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
 This software is furnished under a license and may be used
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
 only in accordance with the terms of that license and with the
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
 be provided or otherwise made available to, or used by, any
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
 other person.  No title to or ownership of the software is
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
 hereby transferred.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
! !
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
!ByteCodeCompilerWithBreakpointSupportTests methodsFor:'accessing'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
breakpoints
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
    ^ breakpoints
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
! !
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
!ByteCodeCompilerWithBreakpointSupportTests methodsFor:'running'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
tearDown
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
    self class removeSelector: #foo.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    breakpoints := nil.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "Created: / 16-06-2011 / 14:58:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
    "Modified: / 17-06-2011 / 09:00:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
! !
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
!ByteCodeCompilerWithBreakpointSupportTests methodsFor:'tests'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
test_01
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    |source|
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    source := 'foo ^ #foo'.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    breakpoints := Array with:(Breakpoint new position:4).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    self compile:source.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    self should:[ self foo ] raise:HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    "Created: / 16-06-2011 / 14:17:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    "Modified: / 17-06-2011 / 09:03:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
    70
    "Modified: / 05-07-2011 / 21:08:33 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
test_02
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    | source |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    source := 'foo | a | a := 1. ^ a + 1'.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    breakpoints := Array with: (Breakpoint new position:19).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    self compile:source.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    self should:[self foo] raise: HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    "Created: / 16-06-2011 / 15:23:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    "Modified: / 17-06-2011 / 09:00:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
test_03a
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    | source |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    source := 'foo ^ true ifTrue:[ #true ] ifFalse:[ #false ]' .
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
              "12345678901234567890123456789012345678901234567890"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    breakpoints := Array with: (Breakpoint new position:20).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    self compile:source.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    self should:[self foo] raise: HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    "Created: / 17-06-2011 / 09:05:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
test_03b
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   107
    | source ret |
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    source := 'foo ^ true ifTrue:[ #true ] ifFalse:[ #false ]' .
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
              "12345678901234567890123456789012345678901234567890"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   111
              "         1         2         3         4"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    breakpoints := Array with: (Breakpoint new position:28).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    self compile:source.
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   116
    "/ method inspect.
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    self shouldnt:[self foo] raise: HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   120
    HaltInterrupt ignoreIn:[
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   121
        ret := self foo.
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   122
    ].
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   123
    self assert:(ret == #true)
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   124
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    "Created: / 17-06-2011 / 09:09:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   126
    "Modified: / 05-07-2011 / 22:54:08 / cg"
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   127
!
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   128
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   129
test_03c
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   130
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   131
    | source ret |
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   132
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   133
    source := 'foo ^ false ifTrue:[ #true ] ifFalse:[ #false ]' .
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   134
              "12345678901234567890123456789012345678901234567890"
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   135
              "         1         2         3         4"
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   136
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   137
    breakpoints := Array with: (Breakpoint new position:28).
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   138
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   139
    self compile:source.
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   140
    "/ method inspect.
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   141
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   142
    self shouldnt:[self foo] raise: HaltInterrupt.
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   143
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   144
    HaltInterrupt ignoreIn:[
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   145
        ret := self foo.
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   146
    ].
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   147
    self assert:(ret == #false)
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   148
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   149
    "Created: / 17-06-2011 / 09:09:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   150
    "Created: / 05-07-2011 / 22:54:54 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
test_04
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
    | source block |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    source := 'foo ^ [ #true ]' .
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
              "12345678901234567890123456789012345678901234567890"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
    breakpoints := Array with: (Breakpoint new position:8).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
    self compile:source.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
    self shouldnt:[block := self foo] raise: HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
    self should:[block value] raise: HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    "Created: / 17-06-2011 / 09:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
test_05
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
    | source got result |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
    source := 'foo | a | a := 100. ^a between: a-a and: a+a' .
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
              "12345678901234567890123456789012345678901234567890"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   176
              "         1         2         3         4"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
    breakpoints := Array with: (Breakpoint new position:32).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
    self compile:source.
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   181
    "/ method inspect.
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
    got := false.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
    [ result := self foo ] 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
        on: HaltInterrupt do:
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
            [:halt|
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
            got := true.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
            halt proceed].
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
    self assert: got.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    self assert: result
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    "Created: / 17-06-2011 / 09:14:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   194
    "Modified: / 05-07-2011 / 22:20:25 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
test_06
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    | source nbreaks result |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
    source := 'foo |a| 1 to: 10 do:[:x| a := x * x ]. ^a ' .
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
              "12345678901234567890123456789012345678901234567890"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
    breakpoints := Array with: (Breakpoint new position:30).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
    self compile:source.
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   207
    "/ method inspect.
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
    nbreaks := 0.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
    [ result := self foo ] 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
        on: HaltInterrupt do:
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
            [:halt|
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
            nbreaks := nbreaks + 1.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
            halt proceed].
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
    self assert: nbreaks == 10.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
    self assert: result == 100
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
    "Created: / 17-06-2011 / 11:56:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   220
    "Modified: / 05-07-2011 / 22:40:31 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
! !
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
!ByteCodeCompilerWithBreakpointSupportTests methodsFor:'utils'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
compile:source 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
    Class withoutUpdatingChangesDo:[
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
        method := 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
            ByteCodeCompilerWithBreakpointSupport 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
                compile:source
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
                forClass:self class
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
                notifying:self
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
    ].
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   233
    ^ method
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
    "Modified: / 17-06-2011 / 09:15:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   236
    "Modified (format): / 05-07-2011 / 21:36:29 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
! !
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
!ByteCodeCompilerWithBreakpointSupportTests class methodsFor:'documentation'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
version_CVS
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   242
    ^ '$Header: /cvs/stx/stx/libcomp/ByteCodeCompilerWithBreakpointSupportTests.st,v 1.2 2011-07-05 21:25:22 cg Exp $'
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
version_SVN
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   246
    ^ '§ Id §'
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
! !