&gt;At first glance, that is really cool. We&#39;ve also batted around some<br>
&gt;other names like #facet or #behavior.<br><br>LOL..I smile because we went through the same semantic struggles as well.<br><br>The funny thing is the rSpec project led us to our resolve. :-)<br><br>We basically came to this conclusion every object has a behavior but that behavior is governed by a context or multiple context concerning that type.&nbsp; Given that we are specifying how an object should behave under a certain context, the DSL quickly took shape.&nbsp; About the only difference is we introduced the term [concerning] instead of describe.<br>
<br>pseudo DSL:<br><br>these specs are concerning this [Type]<br>&nbsp;&nbsp;&nbsp; when this [type] is in this context<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; then specify that it should behave this way<br><br>In C# this DSL creates a lot of noise in the syntax! For example:<br>
<br>[Context, Concerning(&quot;EquationGenerator&quot;)]<br>&nbsp;&nbsp;&nbsp; public class When_initializing_the_EquationGenerator_with_one_and_five : NBehave.NUnitSpecBase<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; protected override void Before_each_spec()<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; _generator = new EquationGenerator(_LowerBound, _UpperBound);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Specification]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public void Should_generate_equations_where_the_left_hand_side_is_greater_than_or_equal_to_the_lower_bound()<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IList&lt;Equation&gt; equations = _generator.GenerateEquations();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; foreach (Equation equation in equations)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; equation.LeftHandSide.should_be_greater_than_or_equal_to(_LowerBound);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Specification]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public void Should_generate_equations_where_the_left_hand_side_is_less_than_or_equal_to_the_upper_bound()...<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Specification]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public void Should_generate_equations_where_the_right_hand_side_is_greater_than_or_equal_to_the_lower_bound()...<br>
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Specification]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public void Should_generate_equations_where_the_right_hand_side_is_less_than_or_equal_to_the_upper_bound()...<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; [Specification]<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public void Should_generate_twenty_five_equations()...<br>
&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp; <br>I think we have taken this as far as it can go for a statically typed language.&nbsp; Hence my interest in rSpec especially once MS gets IronRuby baked!&nbsp; I can easily see Ruby taking over the MS culture once IronRuby is complete.<br>