[squeak-dev] Some loop debugging help.

R. Clayton rclayton at monmouth.edu
Tue Mar 5 02:28:22 UTC 2013


I have an SUnit test:

  testTriangle

    | b n t |

      b := Bag new
    . n := 5

    . 1 to: n do: [ :i |
        i timesRepeat: [
          b add: (IntervalTreeInterval from: i to: i + 1)
          ]
        ]
    . t := IntervalTree withIntervals: b

    . Transcript show: 'Start testing' ; cr
    . 0 to: n do: [ :i |
        b := t intervalsContaining: i + 0.5
      . Transcript show: i ; cr ; flush
      . self assert: b size = i
      ]

If I run this method with the last statement commented out (that is, without
the assertion), the transcript shows

  Start testing
  0
  1
  2
  3
  4
  5

If I run the test with the last statement enabled (that is, with the
assertion), the transcript shows

  Start testing
  0
  1
  2

and testTriangle fails.  However, in the debugger I find that i is 6 and the
bag b is empty, which is correct because there are no intervals containing 6.5
(which makes the assertion fail the correct thing to do).  My question is: why
is i = 6?  I would have expected the loop to stop after i = 5, as it did when
there was no assertion.

As a secondary question, why did the transcript stop at 2 for the failing test?
I'm assuming it's a buffering problem, but I would have expected flush to push
the buffer contents along.

I'm running 

  Image
  -----
  /home/rclayton/projects/squeak/interval-tree/Squeak4.3.image
  Squeak4.3
  latest update: #11864
  Current Change Set: Unnamed1

  Virtual Machine
  ---------------
  /home/squeak-4.3/Contents/Linux-i686/lib/squeak/4.4.7-2357/squeakvm
  Squeak4.1 of 17 April 2010 [latest update: #9957]
  Unix built on Jan 23 2011 18:17:32 Compiler: 4.3.2
  platform sources revision 2357
  VMMaker versionString 4.4.7

  Operating System/Hardware
  -------------------------
  unix linux i686

  Operating System Details
  ------------------------
  Debian GNU/Linux 7.0 \n \l

  FileDoesNotExistException: '/etc/lsb-release'Linux version 3.2.0-4-686-pae
  (debian-kernel at lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1
  SMP Debian 3.2.35-2 



More information about the Squeak-dev mailing list