[Cuis] New updates

Juan Vuletich juan at jvuletich.org
Sat Nov 28 14:28:18 CST 2015


Thanks, Folks!!!

Cheers,
Juan Vuletich

On 27/11/2015 12:21 p.m., Andres Valloud wrote:
> Hello,
>
> The fixes to exceptions are about solving subtle misbehaviors with the 
> messages #pass, #outer, and #resignalAs:.  Generally speaking, the 
> main issue was that the correct handler block wouldn't be found.  
> Thus, for example, sending the message #pass would fail to find a 
> default handler.  I found these types of issues while porting 
> Assessments (more on Assessments below), because it uses #pass to 
> track exceptions, and #resignalAs: to remap other exceptions into 
> exceptions Assessments understands.  Correct nested execution of #pass 
> required a stack of handler contexts, thus now exceptions keep an 
> ordered collection of handler contexts rather than just the topmost 
> handler.  Surely this is not the only way this can be done.
>
> Assessments is a testing framework specifically designed with 
> collaboration in mind.  I had been making SUnit extensions since 2001, 
> and eventually I realized sharing such extensions and improvements 
> with other SUnit users would be fundamentally obstructed.  SUnit's 
> design is such that one has to change the framework itself in order to 
> extend its behavior.  Thus, what I change in my image does not 
> necessarily have to work in someone else's image, and vice versa.  As 
> a result, most SUnit users end up implementing extensions such as file 
> logging or more extensive result reporting, and those extensions are 
> incompatible with each other.
>
> Instead, Assessments is built around the principle that the testing 
> framework's behavior and extensibility should rely on object 
> composition rather than subclassing.  In addition, a few critical 
> objects are now reified explicitly.  Chief among them is the 
> Assessment (the "test suite"), with its evaluation context (no 
> parallel).  The key is that the evaluation context of an assessment 
> can change how tests are executed, how results are collected, and so 
> on.  Since this is done by object composition, it's trivial to e.g. 
> set up an assessment to report results to multiple files and to the 
> GUI without changing Assessments itself. As a result, extensions can 
> be shared without the threat of immediate incompatibility.
>
> But what about pre-existing SUnit tests?  Well surely a new testing 
> framework built around collaboration wouldn't immediately obsolete the 
> enormous body of SUnit tests out there, or force a migration because 
> NIH or something like that.  And that's exactly what Assessments 
> accomplishes.  Since there is an evaluation context object, an 
> assessment ("test suite") can specify which execution policy goes for 
> which check ("test").  Assessments uses this flexibility to execute 
> SUnit tests in situ, as if SUnit itself was running them.  Unlike 
> other solutions deployed to solve this problem, Assessments does not 
> require modifications to existing code.  Loading Assessments is 
> effectively invisible to existing SUnit code.
>
> The end result is that the Assessments checklist evaluator (the "test 
> runner") displays both SUnit tests and native Assessments tests, and 
> one assessment object can execute both types together.
>
> In addiiton, Assessments provides a clean, native implementation of 
> SUnit Validation (also known as "Extreme Validation"), as well as 
> SUnit Benchmarks.  Both of these are implemented in terms of 
> Assessments checklists.  Briefly, validation involves using tests to 
> verify e.g. business objects at run time.  A typical application of 
> validation would be data entry verification.  The Benchmarks is 
> another application of tests, where each test measures the time needed 
> to execute some code. In addition, Benchmarks can enforce that some 
> code runs within a certain amount of time.  An interesting detail is 
> that the required time is specified in "message send" units, rather 
> than time.  Thus, the benchmarks do not become obsolete or 
> inappropriate depending on the speed of the machine where the 
> measurements are taken.
>
> For more information, the Assessments package contains more detailed 
> comments as well as links to additional detail.  I originally 
> presented Assessments at ESUG 2008, the video of the talk is online 
> here (and other places):
>
> https://vimeo.com/1945494
>
> There are also some notes on validation here:
>
> http://csl.ensm-douai.fr/Esug2007Media/uploads/1/Extreme.pdf
>
> There is also a paper by Leandro Caniglia titled "Extreme Validation", 
> which unfortunately I couldn't immediately find in Google.  But I 
> image I can get a copy and put it online somewhere.
>
> Andres.
>
> On 11/23/15 7:35 , Luciano Notarfrancesco wrote:
>> Hi all,
>> About my recent changes, some of them are 1) extensions to Theme to be
>> able to customize some more aspects of how the windows and widgets look,
>> or 2) fixes for small bugs that I found on the way, like misalignments
>> of a few pixels between parts of a widget or a window. The motivation
>> behind this was just to be able to implement a very minimalist look
>> (borders of just 1 pixel, no decorations, no icons, no anything that I
>> dont need and takes up screen real estate), and a sort of tiling dynamic
>> window manager very much like http://dwm.suckless.org
>> (https://github.com/len/Cuis-Smalltalk-DWM).
>>
>> In order to implement this "window manager" as an external package with
>> minimal changes to the core system, I decided to: 1) make the current
>> Theme receive messages #windowOpen: #windowClosed: every time
>> SystemWindows are open or closed, in order to give it a chance to
>> implement window-management behaviour or delegate it to a proper window
>> manager; 2) move the window-management keyboard shortcuts (like alt-w to
>> close) to Theme, so it is all in one place, easy to change, and easy to
>> make a Theme that delegates keyboard events to a proper window manager.
>>
>> Again I did it like this in order to minimize changes to the core
>> system. At the moment window management is in part implemented in
>> SystemWindow, and also in HandMorph and Morph. I had to make some small
>> modifications in order to get the desired behavior when using DWM, and
>> keep the original behavior in the base system. Maybe in the long run we
>> would want to have a WindowManager class that do this, handle keyboard
>> events for the window-management shortcuts and receives #windowOpen: and
>> #windowClosed:, etc. But I would like to think better about this before
>> adding new concepts and complexity to the core.
>>
>> Cheers,
>> Luciano
>>
>>
>> On Mon, Nov 23, 2015 at 12:59 PM, Juan Vuletich <juan at jvuletich.org
>> <mailto:juan at jvuletich.org>> wrote:
>>
>>     Hi all,
>>
>>     I recently included some new updates:
>>
>>     - Fixes to Exceptions by Andrés Valloud and Martin McClure.
>>     - Assessments framework for testing and validation by Andrés 
>> Valloud.
>>     - Many fixes and enhancements to Layouts, Window drawing, keyboard
>>     shortcuts, etc. by Luciano Notarfrancesco
>>
>>     Thank you very much Folks! Andrés, Luciano, please comment a bit on
>>     what you did, especially subtle but important behavior such as
>>     Exceptions and new stuff like Assessments, and the new Theme and
>>     Window Manager.
>>
>>     Cheers,
>>     Juan Vuletich
>>
>>     _______________________________________________
>>     Cuis mailing list
>>     Cuis at jvuletich.org <mailto:Cuis at jvuletich.org>
>>     http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org
>>
>>
>>
>>
>> _______________________________________________
>> Cuis mailing list
>> Cuis at jvuletich.org
>> http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org
>>
>
> _______________________________________________
> Cuis mailing list
> Cuis at jvuletich.org
> http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org
>





More information about the Cuis mailing list