ByteCodeCompilerWithBreakpointSupportTests.st
author Jan Vrany <jan.vrany@labware.com>
Thu, 27 Oct 2022 14:53:59 +0100
branchjv
changeset 4735 3b11fb3ede98
parent 4315 734f7d2b6efe
permissions -rw-r--r--
Allow single underscore as method / block argument and temporaries This commit is a follow up for 38b221e.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4315
734f7d2b6efe Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 2538
diff changeset
     1
"{ Encoding: utf8 }"
734f7d2b6efe Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 2538
diff changeset
     2
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
 COPYRIGHT (c) 2006 by eXept Software AG
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
	      All Rights Reserved
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 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
     9
 inclusion of the above copyright notice.   This software may not
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 hereby transferred.
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
"{ Package: 'stx:libcomp' }"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
TestCase subclass:#ByteCodeCompilerWithBreakpointSupportTests
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	instanceVariableNames:'breakpoints method'
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	classVariableNames:''
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'System-Compiler-Debugging'
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
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
!ByteCodeCompilerWithBreakpointSupportTests class methodsFor:'documentation'!
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
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
 COPYRIGHT (c) 2006 by eXept Software AG
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	      All Rights Reserved
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
 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
    32
 inclusion of the above copyright notice.   This software may not
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
 hereby transferred.
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
! !
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
!ByteCodeCompilerWithBreakpointSupportTests methodsFor:'accessing'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
breakpoints
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    ^ breakpoints
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
! !
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
!ByteCodeCompilerWithBreakpointSupportTests methodsFor:'running'!
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
tearDown
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    self class removeSelector: #foo.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    breakpoints := nil.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    "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
    53
    "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
    54
! !
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
!ByteCodeCompilerWithBreakpointSupportTests methodsFor:'tests'!
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
test_01
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|
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
    source := 'foo ^ #foo'.
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
    breakpoints := Array with:(Breakpoint new position:4).
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 compile:source.
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
    self should:[ self foo ] raise:HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    "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
    71
    "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
    72
    "Modified: / 05-07-2011 / 21:08:33 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
!
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
test_02
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 |
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
    source := 'foo | a | a := 1. ^ a + 1'.
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
    breakpoints := Array with: (Breakpoint new position:19).
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 compile:source.
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
    self should:[self foo] raise: HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    "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
    88
    "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
    89
!
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
test_03a
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 |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    source := 'foo ^ true ifTrue:[ #true ] ifFalse:[ #false ]' .
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
              "12345678901234567890123456789012345678901234567890"
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
    breakpoints := Array with: (Breakpoint new position:20).
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 compile:source.
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
    self should:[self foo] raise: HaltInterrupt.
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
    "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
   105
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
test_03b
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   109
    | source ret |
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    source := 'foo ^ true ifTrue:[ #true ] ifFalse:[ #false ]' .
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
              "12345678901234567890123456789012345678901234567890"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   113
              "         1         2         3         4"
2499
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
    breakpoints := Array with: (Breakpoint new position:28).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    self compile:source.
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   118
    "/ method inspect.
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    self shouldnt:[self foo] raise: HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   122
    HaltInterrupt ignoreIn:[
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   123
        ret := self foo.
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   124
    ].
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   125
    self assert:(ret == #true)
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   126
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    "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
   128
    "Modified: / 05-07-2011 / 22:54:08 / cg"
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   129
!
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
test_03c
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 ret |
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   134
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   135
    source := 'foo ^ false ifTrue:[ #true ] ifFalse:[ #false ]' .
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   136
              "12345678901234567890123456789012345678901234567890"
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   137
              "         1         2         3         4"
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
    breakpoints := Array with: (Breakpoint new position:28).
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   140
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   141
    self compile:source.
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   142
    "/ method inspect.
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
    self shouldnt:[self foo] raise: HaltInterrupt.
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   145
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   146
    HaltInterrupt ignoreIn:[
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   147
        ret := self foo.
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
    self assert:(ret == #false)
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   150
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   151
    "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
   152
    "Created: / 05-07-2011 / 22:54:54 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
!
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
test_04
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 block |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    source := 'foo ^ [ #true ]' .
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
              "12345678901234567890123456789012345678901234567890"
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
    breakpoints := Array with: (Breakpoint new position:8).
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 compile:source.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
    self shouldnt:[block := self foo] raise: HaltInterrupt.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    self should:[block value] raise: HaltInterrupt.
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
    "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
   170
!
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
test_05
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 got result |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
    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
   177
              "12345678901234567890123456789012345678901234567890"
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   178
              "         1         2         3         4"
2499
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
    breakpoints := Array with: (Breakpoint new position:32).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
    self compile:source.
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   183
    "/ method inspect.
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
    got := false.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
    [ result := self foo ] 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
        on: HaltInterrupt do:
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
            [:halt|
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
            got := true.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
            halt proceed].
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
    self assert: got.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    self assert: result
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
    "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
   196
    "Modified: / 05-07-2011 / 22:20:25 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
!
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
test_06
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 nbreaks result |
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    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
   204
              "12345678901234567890123456789012345678901234567890"
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
    breakpoints := Array with: (Breakpoint new position:30).
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
    self compile:source.
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   209
    "/ method inspect.
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
    nbreaks := 0.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
    [ result := self foo ] 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
        on: HaltInterrupt do:
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
            [:halt|
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
            nbreaks := nbreaks + 1.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
            halt proceed].
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
    self assert: nbreaks == 10.
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
    self assert: result == 100
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
    "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
   222
    "Modified: / 05-07-2011 / 22:40:31 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
! !
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
!ByteCodeCompilerWithBreakpointSupportTests methodsFor:'utils'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
compile:source 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
    Class withoutUpdatingChangesDo:[
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
        method := 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
            ByteCodeCompilerWithBreakpointSupport 
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
                compile:source
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
                forClass:self class
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
                notifying:self
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
    ].
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   235
    ^ method
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
    "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
   238
    "Modified (format): / 05-07-2011 / 21:36:29 / cg"
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
! !
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
!ByteCodeCompilerWithBreakpointSupportTests class methodsFor:'documentation'!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
version_CVS
2538
e2818016d2d4 added: #test_03c
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
   244
    ^ '$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
   245
!
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
version_SVN
4315
734f7d2b6efe Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 2538
diff changeset
   248
    ^ '§ Id §'
2499
fc8b7716732f initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
! !