Boost logo

Boost :

From: Dean Michael Berris (mikhailberis_at_[hidden])
Date: 2006-09-14 12:45:25

Hi Rene!

On 9/14/06, Rene Rivera <grafikrobot_at_[hidden]> 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

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.
email: dean_at_[hidden]
mobile: +63 928 7291459
phone: +63 2 8943415
other: +1 408 4049532

Boost list run by bdawes at, gregod at, cpdaniel at, john at