[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