
Hi Everyone, I've been mulling around having watched this video ( http://tinyurl.com/kywhy ) about Behavior Driven Development ( http://tinyurl.com/jzbcb ). I've been practicing TDD for a while now, and it (BDD) seems like a more "intuitive" and readable alternative to the "assert*" way of specifying behavior. I was on the way to writing something quick to use in a project in-house, and thought out loud: would the Boost community be interested in having something like this alongside or built upon the already existing testing framework? I had been thinking about the syntax to which the BDD approach allows us: int my_value = 0; //... value(my_value).should.equal(10); // will throw an exception value(my_value).should.not_equal(9); // will also throw an exception char * my_pointer = NULL; //... pointer(my_pointer).should.be_null(); // will evaluate to true, or do nothing pointer(my_pointer).should.not_be_null(); // will throw an exception where value(my_value) is defined as (untested): template <typename T> spec<T> value ( const T & v ) { return spec<T>(v); }; where spec<> is defined as (untested): template <typename T> struct spec { T value; should_impl<T> should(value); }; and should_impl<> is defined as (untested): template <typename T> struct should_impl { T & _value; should_impl(T & value) : _value(value); template <typename ArgType> bool equal (const ArgType & expected) const { if (_value == expected) return true; throw not_equal_exception<T, ArgType>(_value, expected); }; template <typename ArgType> bool not_equal (const ArgType & expected) const { if (_value != expected) return true; throw are_equal_exception<T, ArgType> (_value, expected); }; }; Which would entail the use of some of the Boost.MPL for some of the type-safeness magic required to determine if the value being scrutinized (i don't want to say tested) is a pointer, a reference, or an instance among other things. I'm writing this message off the top of my head and even before I start writing the framework for an internal project; so I'd like to know if anybody is interested in something like this. (After all, I'd like to know if there is enough interest so that I can write it from scratch to comply with the Boost Library requirements in mind already). ;) Have a great day everyone, and hope to hear from you soon! -- 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