[osflash] Design By Contract on ActionScript 2
Bernd Will
bernd at ewill.de
Sun Oct 8 10:08:21 EDT 2006
Hello Martin,
>>> You think of runtime validation of parameters? Thats insane concerning
performance and performance is what flash lacks in.
No. No runtime.
I talk about describing test situations - no matter whether you call it unit
tests or DBC or something else - to be placed at the head of a method or a
class.
Both are nice places, where every Jane and Joe programmer could easily find
unit tests DBC description or whatever tests someone could think of.
You no more would look around in folders to find files that might do tests
onto classes and you would have to know about the places of those tests.
One place right under the class head or method head would be a very nice
place everyone could find.
Regards
Bernd
_____
Von: osflash-bounces at osflash.org [mailto:osflash-bounces at osflash.org] Im
Auftrag von Martin Heidegger
Gesendet: Sonntag, 8. Oktober 2006 15:56
An: Open Source Flash Mailing List
Betreff: Re: [osflash] Design By Contract on ActionScript 2
You think of runtime validation of parameters? Thats insane concerning
performance and performance is what flash lacks in.
yours
Martin.
2006/10/8, Bernd Will < bernd at ewill.de <mailto:bernd at ewill.de> >:
Hello Martin,
You like to put the stuff outside the classes, while I would like to see
tests and validation being embedded as a kind of class documentation.
Regards
Bernd
_____
Von: osflash-bounces at osflash.org [mailto:
<mailto:osflash-bounces at osflash.org> osflash-bounces at osflash.org] Im
Auftrag von Martin Heidegger
Gesendet: Sonntag, 8. Oktober 2006 15:32
An: Open Source Flash Mailing List
Betreff: Re: [osflash] Design By Contract on ActionScript 2
I merly know about DBC what Wikipedia tells me.
Well, thats what mocks are supposed to do - at least they should help. Once
you use a mock in a unit test you should be able to check the state before
and the state afterwards. Interfaces are helpers that allow generic/plugable
designs. You assume a functionality by methods and documentation. Then you
check the implementation using mocks. I usually create a Abstract test and
extended versions for every implementation. I usually check multiple valid
and invalid inputs and check the output with a Mock. That should be a fully
working test of the implementation - right?
yours
Martin.
2006/10/8, Bernd Will <bernd at ewill.de <mailto:bernd at ewill.de> >:
Hello Martin,
you mean that every class should get an interface ?
DBC is more than just a syntax check, DBC allows pre and post checking as
well:
http://www.wayforward.net/pycontract/
Regards
Bernd
_____
Von: osflash-bounces at osflash.org [mailto:
<mailto:osflash-bounces at osflash.org> osflash-bounces at osflash.org] Im
Auftrag von Martin Heidegger
Gesendet: Sonntag, 8. Oktober 2006 15:14
An: Open Source Flash Mailing List
Betreff: Re: [osflash] Design By Contract on ActionScript 2
Well - so what? Unittests together with interfaces seem to be a strategy
that matches enough - doesn't it?
yours
Martin.
2006/10/8, Bernd Will < bernd at ewill.de <mailto:bernd at ewill.de> >:
Hello Martin,
"Interface" allow syntax check during compile time.
"Tests" allow semantic validation during runtime.
Regards
Bernd
_____
Von: osflash-bounces at osflash.org [mailto:
<mailto:osflash-bounces at osflash.org> osflash-bounces at osflash.org] Im
Auftrag von Martin Heidegger
Gesendet: Sonntag, 8. Oktober 2006 14:23
An: Open Source Flash Mailing List
Betreff: Re: [osflash] Design By Contract on ActionScript 2
To me working with interfaces is DBC. A object has a interface that allows
certain usage this usage is documented and tested with unit tests. is there
a need for more?
greetings
Martin.
2006/10/7, Bernd Will <bernd at ewill.de <mailto:bernd at ewill.de> >:
Hello everybody,
similar to doctest, DBC in Python is also easily injected by inserting
inside those comment tags at the beginning of a method.
It is very nice seeing UNITTEST and DBC in one comment placed directly below
the method's head.
Here an example for UNITTEST and DBC in Python:
def sort(a):
"""Sort a list *IN PLACE*.
>>> a = [1, 1, 1, 1, 1, 2, 2, 1]
>>> sort(a)
>>> a
[1, 1, 1, 1, 1, 1, 2, 2]
>>> a = 'the quick brown fox jumped over the lazy dog'.split()
>>> sort(a)
>>> a
['brown', 'dog', 'fox', 'jumped', 'lazy', 'over', 'quick', 'the', 'the']
pre:
# must be a list
isinstance(a, list)
# all elements must be comparable with all other items
forall(range(len(a)),
lambda i: forall(range(len(a)),
lambda j: (a[i] < a[j]) ^ (a[i] >= a[j])))
post[a]:
# length of array is unchanged
len(a) == len(__old__.a)
# all elements given are still in the array
forall(__old__.a, lambda e: __old__.a.count(e) == a.count(e))
# the array is sorted
forall([a[i] >= a[i-1] for i in range(1, len(a))])
"""
a.sort()
# enable contract checking
import contract
contract.checkmod(__name__)
def _test():
import doctest, sort
return doctest.testmod(sort)
if __name__ == "__main__":
_test()
Regards
Bernd
_____
Von: osflash-bounces at osflash.org [mailto:
<mailto:osflash-bounces at osflash.org> osflash-bounces at osflash.org] Im
Auftrag von Miguel Serrano Milano
Gesendet: Samstag, 7. Oktober 2006 16:09
An: osflash at osflash.org
Betreff: Re: [osflash] Design By Contract on ActionScript 2
Hi! I've been thinking about this last days. There's no solution at the
moment, but it is not difficult to develop a solution by one of this two
ways:
1. Explicit asserts and an AOP approach to check and invariants. The asserts
are easy to define: just a collection of Assert.precondition() and
Assert.precondition(), and as invariants a method classInvariants() could be
defined to be invoked after every method call.
2. A precompiler. I think there are tools to write precompilers for any
language. Do somebody know something about this?
What do you think?
Message: 1
Date: Thu, 5 Oct 2006 15:11:13 -0300
From: "Marcelo de Moraes Serpa" < celoserpa at gmail.com
<mailto:celoserpa at gmail.com> >
Subject: [osflash] Design By Contract on ActionScript 2
To: osflash at osflash.org
Message-ID:
< 1e5bcefd0610051111u32390762kc43f423a31d8b4f5 at mail.gmail.com
<mailto:1e5bcefd0610051111u32390762kc43f423a31d8b4f5 at mail.gmail.com> >
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Is there any tool for AS2 that allows me to implement the DBC methodology?
Cheers,
Marceo.
Miguel Serrano Milano
mserranom at gmail.com
_______________________________________________
osflash mailing list
osflash at osflash.org
http://osflash.org/mailman/listinfo/osflash_osflash.org
--
ICQ: 117662935
Skype: mastakaneda
_______________________________________________
osflash mailing list
osflash at osflash.org
http://osflash.org/mailman/listinfo/osflash_osflash.org
--
ICQ: 117662935
Skype: mastakaneda
_______________________________________________
osflash mailing list
osflash at osflash.org
http://osflash.org/mailman/listinfo/osflash_osflash.org
--
ICQ: 117662935
Skype: mastakaneda
_______________________________________________
osflash mailing list
osflash at osflash.org
http://osflash.org/mailman/listinfo/osflash_osflash.org
--
ICQ: 117662935
Skype: mastakaneda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://osflash.org/pipermail/osflash_osflash.org/attachments/20061008/a5c90290/attachment.htm
More information about the osflash
mailing list