Björnke von Gierke wrote:

> On 20.02.2014, at 16:37, Richard Gaskin wrote:
>
>> The key point there is that both only catch things the engine
>> considers errors.
>>
>> Assert compliments those by providing for things which may be
>> syntactically correct and completely executable, yet are errors
>> within the context of the business logic of your app.
>
>
> I'm not a smart man, and can't imagine any such error ever happening in a program. Can you give a simple example where you'd use assert to catch that kind of error?

As Trevor noted a few days ago:

    I believe it was added in order to aid with adding test coverage
    to LiveCode. At least I seem to recall reading something about
    that in some commit notes on GitHub.

So in that spirit of building test harnesses, let's assume you're testing your app with a known set of data and expecting known results for what the app does with that data.

You may have two entry fields named "FirstName" and "LastName", and a third named "DisplayName" which concatenates both.

An assert statement that ensures the first and last name fields have been populated correctly and that the concatenation is correct might be:

   put MyFancyConcatenationAlgo(fld "FirstName", field "LastName) \
      into fld "DisplayName"
   assert fld "DisplayName" = "Richard Gaskin"

If the "DisplayName" field contains any other value, chances are the engine will never know the difference.

But for the data set you're testing with "Richard Gaskin" is the only acceptable value, so the assert will fail, triggering an assertError message:

  assertError handlerName, line, column, objectLongId

...and with that info you can know exactly where the erroneous value occurred so you can explore ways to correct it.

True, these wouldn't be too hard to check by other means, but once we also get the ability to turn off assert evaluations globally as most other implementations have, we have a very powerful opportunity for much deeper automated quality control.

--
 Richard Gaskin
 Fourth World
 LiveCode training and consulting: http://www.fourthworld.com
 Webzine for LiveCode developers: http://www.LiveCodeJournal.com
 Follow me on Twitter:  http://twitter.com/FourthWorldSys


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to