<div dir="ltr"><div>Hi! I am revisiting the <i>Spacewar!</i> exercise from The Cuis Smalltalk Book, and I am testing things that deal with morph collisions.</div><div><span class="gmail-Apple-converted-space"><br></span></div><div><span class="gmail-Apple-converted-space">The </span><b>LayoutMorphTest</b> tests in BaseImageTests insert clever code before the assertions, to ensure things happen orderly:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">(UISupervisor animatedUIOf: Processor activeProcess)<br>  ifNotNil: [ :ui | ui doOneCycleNowOn: ui mainCanvas ]<br>  ifNil: [ | updated d |<br>    updated := false.<br>    d := Delay forMilliseconds: 10.<br>    UISupervisor whenUIinSafeState: [ UISupervisor whenUIinSafeState: [ updated := true ]].</blockquote><div><br></div><div>Since I don't need (or I can't see the need) for my tests to display morphs on the screen, and since <b>Morph>>collides:</b> relies on the morphs having a display bound, in my tests it was enough to insert</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">space privateDisplayBounds: space fullBoundsInOwner</blockquote><div>before the assertions, where <i>space</i> owns the colliding morphs in the test; and since I don't display things on screen, test runs feel snappier.</div><div><br></div><div>1) The thing I'm doing with <b>privateDisplayBounds:</b> will it come back to bite me?</div><div>2) Is it better, for some definition of better, for morphic tests to display morphs on screen while they run?</div><div>3) I don't understand the need for the nesting in <b>UISupervisor whenUIinSafeState: [ UISupervisor whenUIinSafeState: [ updated := true ]]</b>, I removed the outer level and the LayoutMorph tests still pass. Maybe by chance? Things are hard to debug when they behave differently when debugging.</div><div>4) Can you imagine another way of writing these kinds of tests?</div><div><br></div><div>I attached a couple of simple examples so you don't have to type them.</div><div><br></div><div>-- </div><div>Eze</div></div>