
Hi Rene! On 9/14/06, Rene Rivera <grafikrobot@gmail.com> wrote:
To take some of Dean's examples:
[snipped my examples]
I would expect to more native syntax:
==== int my_value = 0; ensure( 10 == my_value ); ensure( 9 != my_value );
char * my_pointer = NULL ; ensure( NULL == my_pointer ); ensure( NULL != my_Pointer ); ====
This is also similar to: int my_value = 0; assert(10 == my_value); assert( 9 != my_value); char * my_pointer = NULL; assert( NULL == my_pointer ); assert( NULL != my_pointer ); Which is precisely what BDD wants to get away from.
Hence why I don't see the point of BDD when I'd rather have a contract definition framework.
What a potential for having a BDD framework in place, is that you can have your system level tests (or acceptance tests) written out in english (in a text file) and generate your acceptance tests from that document. In your text file you'd probably see: Protocol Definition client sends "GET /index.html" to the server; server response is a string server response should equal "HTTP/1.1\r\n" And then you can come up with a pretty trivial tool (perhaps with Spirit or maybe Boost.Build) to generate something like the following: void protocol_definition { std::string server_response = client.sends("GET /index.html", server); // ignored to the value(server_response).should.equal("HTTP/1.1\r\n"); }; Then that allows you to re-write your acceptance tests according to the requirements, and be able to programmatically generate a program from that document format. Think of it as metaprogramming, but this time not just with templates and preprocessor directives. ;) That's just one of the potentials. Another is having to be able to communicate to other programmers a document derived from code, using almost the same process as outlined above. Of course, there is also the "it reads better" or "it reads naturally to me" factor, which is I think is one of the key things to remember when designing readable interfaces. :-) -- Dean Michael C. Berris C++ Software Architect Orange and Bronze Software Labs, Ltd. Co. web: http://software.orangeandbronze.com/ email: dean@orangeandbronze.com mobile: +63 928 7291459 phone: +63 2 8943415 other: +1 408 4049532 blogs: http://mikhailberis.blogspot.com http://3w-agility.blogspot.com http://cplusplus-soup.blogspot.com