<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" version="2.0">
  <channel>
    <title>Jean-Paul S. Boodhoo's Blog</title>
    <link>http://blog.jpboodhoo.com/</link>
    <description>Develop With Passion</description>
    <language>en-us</language>
    <copyright>Jean-Paul S. Boodhoo</copyright>
    <lastBuildDate>Mon, 05 Jan 2009 15:03:00 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6276.0</generator>
    <managingEditor>jp@jpboodhoo.com</managingEditor>
    <webMaster>jp@jpboodhoo.com</webMaster>
    <creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><link>http://feeds.feedburner.com/JPBoodhoo</link><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url><title>Jean-Paul S. Boodhoo's Blog</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JPBoodhoo" type="application/rss+xml" /><item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=ce7884b4-ac60-43a8-beeb-3db2eef1b92b</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,ce7884b4-ac60-43a8-beeb-3db2eef1b92b.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,ce7884b4-ac60-43a8-beeb-3db2eef1b92b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ce7884b4-ac60-43a8-beeb-3db2eef1b92b</wfw:commentRss>
      
      <title>Keep Moving Forward!!</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,ce7884b4-ac60-43a8-beeb-3db2eef1b92b.aspx</guid>
      <link>http://blog.jpboodhoo.com/KeepMovingForward.aspx</link>
      <pubDate>Mon, 05 Jan 2009 15:03:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
To steal a quote from Walt Disney,this is going to be the theme I will keep trying&#xD;
to encourage people about this year. Don’t get too focused on the person on your left,&#xD;
or to the person on your right, just move forward at your own pace!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I pray that the 2009 year will bring all of you much joy and success in your personal&#xD;
and professional lives.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The 2009 &lt;a href="http://www.jpboodhoo.com/training.oo"&gt;Nothin But .Net&lt;/a&gt; course&#xD;
schedule has now been finalized. There are some locations that are still hovering&#xD;
on the radar that have not been posted. A significant change that will take place&#xD;
this year is the attendee cap which will be placed at 16 people. Just the right size&#xD;
for 4 groups of 4 people. If you are hoping to register for one of the upcoming courses&#xD;
you will have to be patient and give me a couple of weeks, as I am currently switching&#xD;
over to a new registration provider.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It is my hope and prayer that this year will allow you the opportunity to grow incrementally&#xD;
and consistently and that you will Keep Moving Forward!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=ce7884b4-ac60-43a8-beeb-3db2eef1b92b"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=RjL3iT.P"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=RjL3iT.P" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=NLUimj.P"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=NLUimj.P" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=LCYKS1.P"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=LCYKS1.P" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,ce7884b4-ac60-43a8-beeb-3db2eef1b92b.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=cffb5285-f290-4c07-99ab-277342015e5e</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,cffb5285-f290-4c07-99ab-277342015e5e.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,cffb5285-f290-4c07-99ab-277342015e5e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=cffb5285-f290-4c07-99ab-277342015e5e</wfw:commentRss>
      <slash:comments>3</slash:comments>
      
      <title>Interesting Collaboration Tool To Check Out</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,cffb5285-f290-4c07-99ab-277342015e5e.aspx</guid>
      <link>http://blog.jpboodhoo.com/InterestingCollaborationToolToCheckOut.aspx</link>
      <pubDate>Tue, 23 Dec 2008 22:42:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
My good friend &lt;a href="http://sleepoverrated.com/"&gt;Scott&lt;/a&gt; just pointed me in the&#xD;
direction of a really great (and very affordable) collaboration tool with excellent&#xD;
Skype support. Check it out at:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a title="https://www.yugma.com/" href="https://www.yugma.com/"&gt;https://www.yugma.com/&lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=cffb5285-f290-4c07-99ab-277342015e5e"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=60irO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=60irO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=Q3GXO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=Q3GXO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=hVloO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=hVloO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,cffb5285-f290-4c07-99ab-277342015e5e.aspx</comments>
      <category>Tools</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=d769ebce-81e2-4e4a-983b-44ec56464da1</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,d769ebce-81e2-4e4a-983b-44ec56464da1.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,d769ebce-81e2-4e4a-983b-44ec56464da1.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d769ebce-81e2-4e4a-983b-44ec56464da1</wfw:commentRss>
      <slash:comments>9</slash:comments>
      
      <title>Purge Subversion Files</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,d769ebce-81e2-4e4a-983b-44ec56464da1.aspx</guid>
      <link>http://blog.jpboodhoo.com/PurgeSubversionFiles.aspx</link>
      <pubDate>Tue, 23 Dec 2008 19:49:07 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
Often times when I am copying files between different subversion folders, I want to&#xD;
make sure that I copy them and place them in the new location while not keeping any&#xD;
of the subversion folders/files kicking around. In the past I had a system for doing&#xD;
this (mostly with some well placed keyboard shortcuts). Now that I am moving most&#xD;
of my automation tasks into powershell, I thought I would share this script with you:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre style="overflow: auto"&gt;param([string] $folder)&#xD;
  if (($folder -eq $null) -or ([System.IO.Directory]::Exists($folder) -eq $false))&#xD;
  {&#xD;
    "usage: kill_subversion_files.ps1 [path_to_folder_to_purge_subversion_files_from]"&#xD;
  }&#xD;
  else&#xD;
  {&#xD;
    "Deleting all subversion files from $folder"&#xD;
    get-childitem $folder -recurse -force -include *svn | remove-item -recurse -force&#xD;
  }&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I place this scripts (named kill_subversion_files.ps1) in my powershell path, then&#xD;
I can just open up a powershell prompt and type in:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
kill_subversion_files [path_to_folder_to_remove_subversion_files_from]&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=d769ebce-81e2-4e4a-983b-44ec56464da1"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=LPIIO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=LPIIO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=IMjmO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=IMjmO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=sHOjO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=sHOjO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,d769ebce-81e2-4e4a-983b-44ec56464da1.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=a148d68e-113a-4ddd-a08c-f91084aaa6e3</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,a148d68e-113a-4ddd-a08c-f91084aaa6e3.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,a148d68e-113a-4ddd-a08c-f91084aaa6e3.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a148d68e-113a-4ddd-a08c-f91084aaa6e3</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Did You Know?</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,a148d68e-113a-4ddd-a08c-f91084aaa6e3.aspx</guid>
      <link>http://blog.jpboodhoo.com/DidYouKnow.aspx</link>
      <pubDate>Tue, 23 Dec 2008 19:35:00 GMT</pubDate>
      <description>&#xD;
        &lt;object width="425" height="344"&gt;&#xD;
          &lt;param name="movie" value="http://www.youtube.com/v/jpEnFwiqdx8&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;/param&gt;&#xD;
          &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&#xD;
          &lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&#xD;
          &lt;embed src="http://www.youtube.com/v/jpEnFwiqdx8&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&#xD;
          &lt;/embed&gt;&#xD;
        &lt;/object&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=a148d68e-113a-4ddd-a08c-f91084aaa6e3"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=7bnVO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=7bnVO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=eYgRO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=eYgRO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=Sga0O"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=Sga0O" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,a148d68e-113a-4ddd-a08c-f91084aaa6e3.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=dc3e107d-8058-49b1-9088-65084a57a609</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,dc3e107d-8058-49b1-9088-65084a57a609.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,dc3e107d-8058-49b1-9088-65084a57a609.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=dc3e107d-8058-49b1-9088-65084a57a609</wfw:commentRss>
      <slash:comments>4</slash:comments>
      
      <title>How I&amp;rsquo;m Currently Writing My BDD Style Tests &amp;ndash; Part 2</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,dc3e107d-8058-49b1-9088-65084a57a609.aspx</guid>
      <link>http://blog.jpboodhoo.com/HowIrsquomCurrentlyWritingMyBDDStyleTestsNdashPart2.aspx</link>
      <pubDate>Mon, 22 Dec 2008 21:29:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
We left off in &lt;a href="http://blog.jpboodhoo.com/HowIrsquomCurrentlyWritingMyBDDStyleTestsNdashPart1.aspx"&gt;part&#xD;
1&lt;/a&gt; with an example of a test written using my current style and I finished off&#xD;
outlining the skeleton for one of the base classes that shields the actual Concern&#xD;
classes from a lot of noisy test related nomenclature.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In this post I am going to break down the responsibilities of the “an_observations_basic_set_of_behaviours”&#xD;
class. For a quick reminder, here is the skeleton outline of the class:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        [&lt;span style="color: #2b91af"&gt;Observations&lt;/span&gt;]&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;abstract&lt;/span&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt;&lt;span style="color: #2b91af"&gt;an_observations_set_of_basic_behaviours&lt;/span&gt;&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt;&lt;span style="color: #2b91af"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;, &lt;span style="color: blue"&gt;object&lt;/span&gt;&amp;gt;&#xD;
dependencies;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; exception_thrown_while_the_sut_performed_its_work;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Action&lt;/span&gt; behaviour_of_the_sut;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            [&lt;span style="color: #2b91af"&gt;SetUp&lt;/span&gt;]&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; setup()&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;void&lt;/span&gt; prepare_to_make_an_observation()&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            [&lt;span style="color: #2b91af"&gt;TearDown&lt;/span&gt;]&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; tear_down()&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;after_all_observations&lt;/span&gt; a&#xD;
= () =&amp;gt; dependencies.Clear();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;ICommand&lt;/span&gt; build_command_chain&amp;lt;DelegateType&amp;gt;()&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;void&lt;/span&gt; run_action&amp;lt;DelegateType&amp;gt;()&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;protected&lt;/span&gt;&lt;span style="color: blue"&gt;virtual&lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; initialize_the_sut()&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; doing(&lt;span style="color: #2b91af"&gt;Action&lt;/span&gt; action)&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; exception_thrown_by_the_sut&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
                &lt;span style="color: blue"&gt;get&lt;/span&gt; {&#xD;
}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; get_exception_throw_by(&lt;span style="color: #2b91af"&gt;Action&lt;/span&gt; action)&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt;&lt;span style="color: blue"&gt;object&lt;/span&gt; an(&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt; type)&#xD;
{}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; InterfaceType&#xD;
an&amp;lt;InterfaceType&amp;gt;() &lt;span style="color: blue"&gt;where&lt;/span&gt; InterfaceType : &lt;span style="color: blue"&gt;class&lt;/span&gt; {}&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
Let’s start off by discussing the fields:&#xD;
&lt;/p&gt;&#xD;
        &lt;p style="font-size: 12pt; background: white; margin: 0px; color: black; font-family: verdana"&gt;&#xD;
          &lt;span style="color: blue"&gt;static&lt;/span&gt;&#xD;
          &lt;span style="color: blue"&gt;protected&lt;/span&gt;&#xD;
          &lt;span style="color: #2b91af"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;, &lt;span style="color: blue"&gt;object&lt;/span&gt;&amp;gt;&#xD;
dependencies;&#xD;
&lt;/p&gt;&#xD;
        &lt;p style="font-size: 12pt; background: white; margin: 0px; color: black; font-family: verdana"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; color: black; font-family: verdana"&gt;&#xD;
          &lt;ul&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;p&gt;&#xD;
This field is hopefully pretty self explanatory. It is a dictionary that will contain&#xD;
any direct dependencies of the SUT. In most of my apps I tend to favour Constructor&#xD;
based DI so, this dictionary basically contains the set of objects (mocks and/or reals)&#xD;
that the sut will depend on. How this gets populated will be discussed later.&#xD;
&lt;/p&gt;&#xD;
            &lt;/li&gt;&#xD;
          &lt;/ul&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; exception_thrown_while_the_sut_performed_its_work;&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;font face="Verdana" size="3"&gt;This field will be used to store a reference to the&#xD;
exception that the sut threw while it performed its work. Is used in conjunction with&#xD;
the doing() method (more on that later).&lt;/font&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;Action&lt;/span&gt; behaviour_of_the_sut;&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;font face="Verdana" size="3"&gt;I am going to revisit this field when we discuss the&#xD;
doing() method&lt;/font&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;font face="Verdana" size="3"&gt;&#xD;
          &lt;/font&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
That takes care of the first set of fields, lets move on to a method that should look&#xD;
very familiar to MbUnit/NUnit people:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        [&lt;span style="color: #2b91af"&gt;SetUp&lt;/span&gt;]&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; setup()&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            exception_thrown_while_the_sut_performed_its_work&#xD;
= &lt;span style="color: blue"&gt;null&lt;/span&gt;;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            dependencies = &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;, &lt;span style="color: blue"&gt;object&lt;/span&gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            prepare_to_make_an_observation();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This is a traditional MbUnit setup method. Because it is decorated with the SetUp&#xD;
attribute, all of the code in this method will get run once before each observation&#xD;
(test). Essentially this method is used to reset stateful fields, this is not that&#xD;
interesting. The guts of setup happen in the following method:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;void&lt;/span&gt; prepare_to_make_an_observationjjj()&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            run_action&amp;lt;&lt;span style="color: #2b91af"&gt;context&lt;/span&gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            initialize_the_sut();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            run_action&amp;lt;&lt;span style="color: #2b91af"&gt;after_the_sut_has_been_initialized&lt;/span&gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            run_action&amp;lt;&lt;span style="color: #2b91af"&gt;because&lt;/span&gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
In this base class the initialize_the_sut method has an empty implementation. The&#xD;
prepare_to_make_an_observation method leverages a hook method (initialize_the_sut)&#xD;
that can be leveraged (it will be by an_observation_for_an_instance_sut). In the base&#xD;
class, it is a virtual method with no implementation. As you can see, this method&#xD;
is responsibility for performing the following actions before an observation can be&#xD;
made:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Establishing the context (run_action&amp;lt;context&amp;gt;()) &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Initializing the SUT &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Invoking the behaviour under test (run_action&amp;lt;because&amp;gt;()) &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
Again this is a small little method that basically serves as a driver for prepping&#xD;
the way to be able to make observations. By the time we actually enter an observation&#xD;
in our actual fixtures, the SUT has already performed its work!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now I am sure you are wondering what the deal is with the run_action method? Here&#xD;
is the signature for the run_action method:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;void&lt;/span&gt; run_action&amp;lt;DelegateType&amp;gt;()&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
This method is a generic method that accepts a delegate type as its generic argument.&#xD;
Again this is a convention that is understood by the naming of the generic parameter.&#xD;
You can’t place constraints on a generic method that constrain the Generic argument&#xD;
to be assignable from a delegate (of course, you can do this with a guard clause).&#xD;
Here are the different delegate signatures that I defined for use in the test-harnesses:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;delegate&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;context&lt;/span&gt;();&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;delegate&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;after_the_sut_has_been_initialized&lt;/span&gt;();&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;delegate&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;because&lt;/span&gt;();&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;delegate&lt;/span&gt;&#xD;
            &lt;span style="color: blue"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;after_each_observation&lt;/span&gt;();&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
You may be wondering why I did not just use the plain old action delegate as opposed&#xD;
to creating discrete delegate types. This is so the driver class (this one we are&#xD;
examining) has a clearer way of differentiation between the different delegates. Without&#xD;
the named delegate types, I would have to resort to following a convention for the&#xD;
name I assigned to a field for an Action delegate (messy, messy).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Here is the full implementation of the run_action method:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;void&lt;/span&gt; run_action&amp;lt;DelegateType&amp;gt;()&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            build_command_chain&amp;lt;DelegateType&amp;gt;().run();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Once again, this method is pretty simple as it is really delegating its responsibility&#xD;
to whatever gets created by the build_command_chain method. So lets dive into the&#xD;
full body of this method, as this is really where the majority of the work is being&#xD;
done:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #2b91af"&gt;ICommand&lt;/span&gt; build_command_chain&amp;lt;DelegateType&amp;gt;()&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;var&lt;/span&gt; actions&#xD;
= &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;ICommand&lt;/span&gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;var&lt;/span&gt; current_class&#xD;
= GetType();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;while&lt;/span&gt; (current_class.is_a_concern_type())&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
               &#xD;
actions.Push(&lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;DelegateFieldInvocation&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt; (DelegateType), &lt;span style="color: blue"&gt;this&lt;/span&gt;,&#xD;
current_class));&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
               &#xD;
current_class = current_class.BaseType;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;return&lt;/span&gt; actions.as_command_chain();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So what is going on here. Take a look at this test one more time as it will give you&#xD;
a good visual as to what is going on:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    [&lt;span style="color: #2b91af"&gt;Concern&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;MappingStep&lt;/span&gt;&amp;lt;,,&amp;gt;))]&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt;&lt;span style="color: #2b91af"&gt;when_an_expression_mapping_step_is_told_to_run&lt;/span&gt; :&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #2b91af"&gt;concern_for_mapping_step&lt;/span&gt;&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: #2b91af"&gt;SomeSourceObject&lt;/span&gt; item;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: #2b91af"&gt;SomeDestinationObject&lt;/span&gt; destination;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; name;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #2b91af"&gt;context&lt;/span&gt; c&#xD;
= () =&amp;gt;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            item = &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;SomeSourceObject&lt;/span&gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            name = &lt;span style="color: #a31515"&gt;"JP"&lt;/span&gt;;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            destination = &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;SomeDestinationObject&lt;/span&gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            source_evaluator.Stub(x&#xD;
=&amp;gt; x.evaluate_against(item)).Return(name);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        };&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #2b91af"&gt;because&lt;/span&gt; b&#xD;
= () =&amp;gt; sut.map(item, destination);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        [&lt;span style="color: #2b91af"&gt;Observation&lt;/span&gt;]&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; should_run_the_target_evaluator_passing_it_the_information_retrieved_from_evaluating_the_source()&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            target_action.was_told_to(x&#xD;
=&amp;gt; x.act_against(destination, name));&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
I chose not to also put in this Concerns base class, the only important thing to remember&#xD;
about the “concern_for_mapping_step” is that it also has its own context block :&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
         &lt;span style="color: #2b91af"&gt;context&lt;/span&gt; c&#xD;
= () =&amp;gt;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            target_action =&#xD;
the_dependency&amp;lt;&lt;span style="color: #2b91af"&gt;ITargetAction&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;SomeDestinationObject&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            source_evaluator&#xD;
= the_dependency&amp;lt;&lt;span style="color: #2b91af"&gt;ISourceEvaluator&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;SomeSourceObject&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        };&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It is important to remember that the “an_observations_basic_set_of_behaviours” class&#xD;
is the test driver. Here is the inheritance hierarchy for this current test fixture:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
an_observations_basic_set_of_behaviours &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
observations_for_an_instance_sut &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
obsevations_for_a_sut_with_a_contract &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
concern_for_mapping_step &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
when_an_expression_mapping_step_is_told_to_run &#xD;
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
At any point in the chain (starting from the top, working down) each level could have&#xD;
its own context to run. The run_action method is responsible for walking the inheritance&#xD;
hierarchy of a particular concern and building a chain of “commands” for a particular&#xD;
delegate type. Once the command chain has been build, the chain can be executed in&#xD;
the right order (from top to bottom) to ensure that any prior context in a base class&#xD;
has been established before a subclass runs. If you are already thinking, could he&#xD;
not have done the same thing with abstract/virtual methods. Yes. When I initially&#xD;
started down that route, I kept getting stung by forgetting to call back into the&#xD;
base method. By now having to worry about calling the base method prior to doing your&#xD;
own work, you as a developer can just focus on the context that is applicable to a&#xD;
particular test. You can do this, as the driver class is responsible for ensuring&#xD;
blocks run in the order they are supposed to run. Without the driver class, all the&#xD;
fields that have lambdas assigned to them would be useless as they are just sitting&#xD;
there waiting to be invoked.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
At the end of the while loop in the build_command_chain method there will be a stack&#xD;
(I chose stack as it is a LIFO structure, which is perfect for walking a class hierarchy,&#xD;
as when the last item is added – the base class, I can just start popping items off&#xD;
and they will be in the right order, ending with the ultimate test class itself).&#xD;
The stack itself is being used to store a set of ICommand implementations. Here is&#xD;
the ICommand interface:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;interface&lt;/span&gt;&lt;span style="color: #2b91af"&gt;ICommand&lt;/span&gt;&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;void&lt;/span&gt; run();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This is a pretty stock interface that I have used for years. The uses are endless!!&#xD;
How does the loop know when to end? What is with the following method?:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
current_class.is_a_concern_type()&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The field current_class is of type Type. The is_a_concern_type method is a local extension&#xD;
method that has the following implementation:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;bool&lt;/span&gt; is_a_concern_type(&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt; type)&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;return&lt;/span&gt;&lt;span style="color: blue"&gt;typeof&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;an_observations_set_of_basic_behaviours&lt;/span&gt;)&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            .IsAssignableFrom(type);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This method just adds a bit of readability (from the point of usage, which is a huge&#xD;
bonus of extension methods) and ensures that we wont worry about putting anything&#xD;
that is not either a derivative of an_observations_set_of_basic_behaviours or the&#xD;
an_observations_set_of_basic_behaviours type itself on the stack (it will always be&#xD;
the top item on the stack at the end of the traversal).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So lets explore the line that does the grunt work:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
actions.Push(&lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;DelegateFieldInvocation&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt; (DelegateType), &lt;span style="color: blue"&gt;this&lt;/span&gt;,&#xD;
current_class));&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Keep in mind that the actions field is a stack of ICommand. It stands to reason that&#xD;
the DelegateFieldInvocation class is an ICommand implementation. Which it is. The&#xD;
DelegateFieldInvocation class takes in its constuctor a delegate type to scour for,&#xD;
an instance to act against (always this), and finally the particular type to reflect&#xD;
against (this will change as we continue to walk up the inheritance hierarchy). Here&#xD;
is the implementation of the DelegateFieldInvocation:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt;&lt;span style="color: #2b91af"&gt;DelegateFieldInvocation&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;ICommand&lt;/span&gt;&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;const&lt;/span&gt;&lt;span style="color: #2b91af"&gt;BindingFlags&lt;/span&gt; probing_flags&#xD;
= &lt;span style="color: #2b91af"&gt;BindingFlags&lt;/span&gt;.Static | &lt;span style="color: #2b91af"&gt;BindingFlags&lt;/span&gt;.NonPublic&#xD;
| &lt;span style="color: #2b91af"&gt;BindingFlags&lt;/span&gt;.Public | &lt;span style="color: #2b91af"&gt;BindingFlags&lt;/span&gt;.DeclaredOnly;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt; delegate_type;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;readonly&lt;/span&gt;&lt;span style="color: blue"&gt;object&lt;/span&gt; instance;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;FieldInfo&lt;/span&gt;&amp;gt;&#xD;
fields;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;public&lt;/span&gt; DelegateFieldInvocation(&lt;span style="color: #2b91af"&gt;Type&lt;/span&gt; delegate_type, &lt;span style="color: blue"&gt;object&lt;/span&gt; instance, &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt; current_type)&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            fields = current_type.GetFields(probing_flags);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;this&lt;/span&gt;.delegate_type&#xD;
= delegate_type;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;this&lt;/span&gt;.instance&#xD;
= instance;&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; run()&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            all_fields_of_the_target_delegate_type().each(x&#xD;
=&amp;gt; x.GetValue(instance).downcast_to&amp;lt;&lt;span style="color: #2b91af"&gt;Delegate&lt;/span&gt;&amp;gt;().DynamicInvoke());&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
 &#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;FieldInfo&lt;/span&gt;&amp;gt;&#xD;
all_fields_of_the_target_delegate_type()&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;return&lt;/span&gt; fields.Where(x&#xD;
=&amp;gt; x.FieldType.Equals(delegate_type));&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
    }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
All this command does in its run implementation is scour all of the fields in the&#xD;
“current_type” and filters them to look for only fields of the certain delegate type&#xD;
being searched for. Once the particular delegate type is found, we get the value of&#xD;
the field using the instance:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
x.GetValue(instance).downcast_to&amp;lt;&lt;span style="color: #2b91af"&gt;Delegate&lt;/span&gt;&amp;gt;()&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
downcast_to is just a utility extension method to do casting. At this point we have&#xD;
an actual reference to the delegate. With that, because we know (again by convention)&#xD;
that all of the delegate types we are working with are void with no arguments, they&#xD;
can just be invoked by using the DynamicInvoke method that lives on the delegate class.&#xD;
Again, the beauty of the command pattern allows this command to be queued up with&#xD;
all the information that it needs, and then it can simply perform it when it is told&#xD;
to run.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Of course, the build_command_chain ends with this line:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;return&lt;/span&gt; actions.as_command_chain();&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
All that this method does is return a Composite of commands that when told to run,&#xD;
will run each of the commands that it is composed with (we’ll dive into that at a&#xD;
later date). So back up in the run_action method:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
build_command_chain&amp;lt;DelegateType&amp;gt;().run();&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It should now be clear to see that the run() method is invoked on the Composite, that&#xD;
will cause all of the commands to run in sequence. In the case of run_action&amp;lt;context&amp;gt;&#xD;
it will cause a Composite command to be built that is composed of commands to run&#xD;
“context” delegates from the Grandparent down to the actual Concern itself. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
For clarification, look again at how the run_action method is used:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;void&lt;/span&gt; prepare_to_make_an_observation()&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            run_action&amp;lt;&lt;span style="color: #2b91af"&gt;context&lt;/span&gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            initialize_the_sut();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            run_action&amp;lt;&lt;span style="color: #2b91af"&gt;after_the_sut_has_been_initialized&lt;/span&gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            run_action&amp;lt;&lt;span style="color: #2b91af"&gt;because&lt;/span&gt;&amp;gt;();&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
The other calls to run action simply walk down the hierarchy invoking the appropriate&#xD;
delegate fields that may or may not be present in the actual test classes. The because&#xD;
block is the behaviour we are invoking of our system under test. In the case of the&#xD;
test we first examined:&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 12pt; background: white; overflow: auto; color: black; font-family: verdana"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: #2b91af"&gt;because&lt;/span&gt; b = () =&amp;gt; sut.map(item, destination);&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;p&gt;&#xD;
For the design pattern aware, you will have already realized that the prepare_to_make_an_observation&#xD;
method (along with the use of delegate fields that can be defined at any level of&#xD;
the hierarchy) is just a specialization of the template method pattern, the main difference&#xD;
being that subclasses do not provide their behaviour by overriding abstract methods,&#xD;
rather they just simply have to define fields of a certain delegate type, that contain&#xD;
the code that will be invoked dynamically by the base class using reflection!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
That is enough for now, we’ll carry on the drilldown in the next part!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=dc3e107d-8058-49b1-9088-65084a57a609"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=WddyO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=WddyO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=AVKXO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=AVKXO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=L4oQO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=L4oQO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,dc3e107d-8058-49b1-9088-65084a57a609.aspx</comments>
      <category>C Sharp;Programming</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=2aff6531-539a-4c28-99e1-a2bc2c0e4815</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,2aff6531-539a-4c28-99e1-a2bc2c0e4815.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,2aff6531-539a-4c28-99e1-a2bc2c0e4815.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2aff6531-539a-4c28-99e1-a2bc2c0e4815</wfw:commentRss>
      
      <title>Code Formatting Issues Resolved (for now)</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,2aff6531-539a-4c28-99e1-a2bc2c0e4815.aspx</guid>
      <link>http://blog.jpboodhoo.com/CodeFormattingIssuesResolvedForNow.aspx</link>
      <pubDate>Fri, 19 Dec 2008 22:02:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
A couple of people have gotten back to me about the formatting resolution, so unless&#xD;
I hear otherwise I will consider this issue closed (for the time being!!).&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=2aff6531-539a-4c28-99e1-a2bc2c0e4815"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=7sjSO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=7sjSO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=vwIaO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=vwIaO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=jipRO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=jipRO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,2aff6531-539a-4c28-99e1-a2bc2c0e4815.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=1c6eecfd-ba94-406b-8e0c-cf3aeefe3f0c</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,1c6eecfd-ba94-406b-8e0c-cf3aeefe3f0c.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,1c6eecfd-ba94-406b-8e0c-cf3aeefe3f0c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1c6eecfd-ba94-406b-8e0c-cf3aeefe3f0c</wfw:commentRss>
      <slash:comments>6</slash:comments>
      
      <title>Fixing the Code Formatting Issue</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,1c6eecfd-ba94-406b-8e0c-cf3aeefe3f0c.aspx</guid>
      <link>http://blog.jpboodhoo.com/FixingTheCodeFormattingIssue.aspx</link>
      <pubDate>Fri, 19 Dec 2008 20:46:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
After the many emails about the code formatting issues with feed readers. Here is&#xD;
my attempt to get it resolved.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Please get back to me with comments, if this fixes it (or if it doesn’t):&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="font-size: 14pt; background: white; color: black; font-family: consolas"&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        &lt;span style="color: blue"&gt;static&lt;/span&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt;&lt;span style="color: blue"&gt;void&lt;/span&gt; should_not_contain&amp;lt;T&amp;gt;(&lt;span style="color: blue"&gt;this&lt;/span&gt;&lt;span style="color: #2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;T&amp;gt;&#xD;
items, &lt;span style="color: blue"&gt;params&lt;/span&gt; T[] items_that_should_not_be_found)&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        {&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;var&lt;/span&gt; list&#xD;
= &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;T&amp;gt;(items);&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
            &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; item &lt;span style="color: blue"&gt;in&lt;/span&gt; items_that_should_not_be_found) &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsFalse(list.Contains(item));&#xD;
&lt;/p&gt;&#xD;
          &lt;p style="margin: 0px"&gt;&#xD;
        }&#xD;
&lt;/p&gt;&#xD;
        &lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=1c6eecfd-ba94-406b-8e0c-cf3aeefe3f0c"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=wH0qO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=wH0qO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=scqDO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=scqDO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=ZsCgO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=ZsCgO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,1c6eecfd-ba94-406b-8e0c-cf3aeefe3f0c.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=1bda5a9c-b447-4e9f-81e3-173d7ba1701c</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,1bda5a9c-b447-4e9f-81e3-173d7ba1701c.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,1bda5a9c-b447-4e9f-81e3-173d7ba1701c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1bda5a9c-b447-4e9f-81e3-173d7ba1701c</wfw:commentRss>
      
      <title>Back on twitter</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,1bda5a9c-b447-4e9f-81e3-173d7ba1701c.aspx</guid>
      <link>http://blog.jpboodhoo.com/BackOnTwitter.aspx</link>
      <pubDate>Fri, 19 Dec 2008 17:18:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
Most people who know me realize that I am almost obsessive about how I utilize my&#xD;
time during the day to maximize the 8-9 hours I spend developing. This is the main&#xD;
reason I did not stay on twitter long the last time I signed up. I use skype for most&#xD;
of my phone calls, I have probably been on MSN about 13 times in my career, and I&#xD;
never really jumped into twitter the last time I singed up.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
My goals for rejoining are to simply provide small little updates as to what I and/or&#xD;
my family are doing. I realize that even just little jots of information are valuable&#xD;
to the people who care about what is going on with us (it is a season of change here&#xD;
in the Boodhoo house!!). I am not going to use it as a huge conversational mechanism,&#xD;
mostly for micro updates.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
My username is jpboodhoo in case you are one of the people who has expressed interest&#xD;
in keeping up to speed.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
God Bless You and Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=1bda5a9c-b447-4e9f-81e3-173d7ba1701c"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=m4G0O"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=m4G0O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=F1MDO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=F1MDO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=zW9UO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=zW9UO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,1bda5a9c-b447-4e9f-81e3-173d7ba1701c.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=89fa91a1-b971-4e16-a828-8aef0eaccd64</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,89fa91a1-b971-4e16-a828-8aef0eaccd64.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,89fa91a1-b971-4e16-a828-8aef0eaccd64.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=89fa91a1-b971-4e16-a828-8aef0eaccd64</wfw:commentRss>
      <slash:comments>7</slash:comments>
      
      <title>About the 2009 Course Schedule</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,89fa91a1-b971-4e16-a828-8aef0eaccd64.aspx</guid>
      <link>http://blog.jpboodhoo.com/AboutThe2009CourseSchedule.aspx</link>
      <pubDate>Thu, 18 Dec 2008 22:18:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
This is just a note to let people know that the schedule for 2009 has been penciled&#xD;
in and not yet posted. My hope was to get to provide my web site with some much needed&#xD;
TLC and that has not happened. Courses will start up again in May 2009 and run until&#xD;
December 2009. So far the countries that are on the list are:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Canada&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
USA&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
England&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Australia&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Germany&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
India/Cambodia (need to talk with more people before this is finalized)&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
That is just the high level country list, not the city list. My wife and I are finalizing&#xD;
the schedule and even without posting it to the schedule page, there will be a post&#xD;
that outlines that actual destinations within the next 2 weeks. One of the plans for&#xD;
next year (late next year) is to also launch a new course targeting the development&#xD;
and delivery of smart client applications. Nothin But .Net has typically been delivered&#xD;
targeting web developers, this new course would be focused on strategies for building&#xD;
composable Smart Client applications. The majority of my development career has been&#xD;
in the smart client space, and since I have not shared a lot of information on the&#xD;
techniques I use, it would be the perfect venue to share a lot of techniques and strategies&#xD;
I use. My hope is to beta the course late next year, and have a Q4 2009 first offering,&#xD;
or at the latest a Q1 2010 offering.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
At the end of the day this is just a heads up that courses will be continuing for&#xD;
next year and if you are planning on attending, stay tuned.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=89fa91a1-b971-4e16-a828-8aef0eaccd64"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=ARU1O"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=ARU1O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=FFiMO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=FFiMO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=T5kSO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=T5kSO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,89fa91a1-b971-4e16-a828-8aef0eaccd64.aspx</comments>
      <category>Training</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=34e7ee4b-128d-443d-97b2-7ae8dde897fe</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,34e7ee4b-128d-443d-97b2-7ae8dde897fe.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,34e7ee4b-128d-443d-97b2-7ae8dde897fe.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=34e7ee4b-128d-443d-97b2-7ae8dde897fe</wfw:commentRss>
      <slash:comments>5</slash:comments>
      
      <title>How I&amp;rsquo;m Currently Writing My BDD Style Tests &amp;ndash; Part 1</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,34e7ee4b-128d-443d-97b2-7ae8dde897fe.aspx</guid>
      <link>http://blog.jpboodhoo.com/HowIrsquomCurrentlyWritingMyBDDStyleTestsNdashPart1.aspx</link>
      <pubDate>Thu, 18 Dec 2008 22:08:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
In the ongoing goal of “Competing against yourself daily” I have changed many things&#xD;
about my coding style over this past year. One of the areas that has been most affected&#xD;
by all of this is how I organize and write tests for the systems I am building.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Here is an example of a test that I wrote for something called a MappingStep:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;abstract&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; concern_for_mapping_step&#xD;
: observations_for_a_sut_with_a_contract&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;IMappingStep&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;SomeSourceObject,&#xD;
SomeDestinationObject&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;,&#xD;
MappingStep&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;SomeSourceObject,&#xD;
SomeDestinationObject, &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; { &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; ITargetAction&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;SomeDestinationObject, &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; target_action; &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; ISourceEvaluator&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;SomeSourceObject, &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; source_evaluator;&#xD;
context c &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; () &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; {&#xD;
target_action &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; the_dependency&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;ITargetAction&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;SomeDestinationObject, &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;();&#xD;
source_evaluator &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; the_dependency&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;ISourceEvaluator&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;SomeSourceObject, &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;();&#xD;
}; } [Concern(&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; (MappingStep&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;,,&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;))] &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; when_an_expression_mapping_step_is_told_to_run&#xD;
: concern_for_mapping_step { &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; SomeSourceObject&#xD;
item; &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; SomeDestinationObject&#xD;
destination; &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; name;&#xD;
context c &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; () &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; {&#xD;
item &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; SomeSourceObject();&#xD;
name &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;"&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;JP&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;"&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;;&#xD;
destination &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; SomeDestinationObject();&#xD;
source_evaluator.Stub(x &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; x.evaluate_against(item)).Return(name);&#xD;
}; because b &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; () &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; sut.map(item,&#xD;
destination); [Observation] &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; should_run_the_target_evaluator_passing_it_the_information_retrieved_from_evaluating_the_source()&#xD;
{ target_action.was_told_to(x &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; x.act_against(destination,&#xD;
name)); } } &lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
First thing to notice is a convention I have started using when it comes to writing&#xD;
tests. I create a base class named concern_for_[name_of_system_under_test]. You will&#xD;
also see that all of the fields in the test classes are static and not instance. The&#xD;
2 fields in the base concern_for_mapping_step class are there to hold references to&#xD;
dependencies of the system under test. I don’t need to have them there as they are&#xD;
accessible using a helper method on the base test class (more about the base test&#xD;
class hierarchy in a minute), I just like to have them as I find it a bit more readable&#xD;
than calling methods to access the dependencies of the system under test ex:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
I prefer referring to a field named: target_action as opposed to repeatedly having&#xD;
to call a method such as: &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
Mock&amp;lt;ITargetAction&amp;lt;SomeDestinationObject,string&amp;gt;&amp;gt; / the_dependency&amp;lt;ITargetAction&amp;lt;SomeDestinationObject,string&amp;gt;&amp;gt;&#xD;
(of course, in this example, the generic signatures emphasize the issue even more!!!) &#xD;
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
Second thing to notice is the use of a field named c which is of a delegate type named&#xD;
context. Here is the definition for the context delegate type:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;delegate&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; context(); &lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Nothing all that special about it. This field will get used back up in the base test&#xD;
class to “establish the context for the test to run” much like a traditional setup&#xD;
method would / constructor if you are using xUnit.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If we focus our attention now on the “when_an_expression_mapping_step_is_told_to_run’&#xD;
class, you will see that it inherits from the base concern class. The base concern&#xD;
class will be used to hide fields/extra noise that would otherwise pollute the test.&#xD;
You will see that this test also has its own context block. Context blocks are applied&#xD;
recursively from the top of the hierarchy down, this ensures that any contexts in&#xD;
base classes will always run first. In the past I would use overriden methods to accomplish&#xD;
this, but then you had to deal with making sure to call the base “establish_context”&#xD;
method, and if you forgot you could have tests fail because of a silly omission. By&#xD;
adhering to a convention of placing scaffolding in a context block, the “framework”&#xD;
takes care of ensuring that contexts are run in the correct order.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The following block:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt; because&#xD;
b &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; () &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; sut.map(item,&#xD;
destination);&lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
focuses our attention to what behaviour of the system under test we are testing (in&#xD;
the particular context). You will notice that I use the name of the class to embody&#xD;
both action and context. Of course, in this particular test I am focusing on a happy&#xD;
day scenario. An example of testing in another context could be a test fixture named:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
when_a_mapping_step_is_told_to_map_from_an_invalid_source &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
This name implies context. In the first test I am just testing the behaviour of mapping.&#xD;
In the second test (which is a different context), I am testing how the sut behaves&#xD;
when it is provided invalid data. One of the things that is hard to see from this&#xD;
example is that one context (test fixture) could have several observations (assertions).&#xD;
In this current example there is only 1 observation being made.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Notice that the because block, like the context block is a field of a simple delegate&#xD;
type (another void delegate type). This means that the code does not execute as it&#xD;
is just an anonymous method of certain delegate type being assigned to a field of&#xD;
a matching delegate type.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Finally observations are made. Notice the use of the Observation attribute. Inside&#xD;
an observation (Test) I will make logical assertions against either the system under&#xD;
test, the dependencies, or the outputs of the method under test. It is best to try&#xD;
to stick to one logical assertion (keeping in mind that 2 actual assertions can be&#xD;
part of 1 logical assertion) per observation. This is why you will often see a single&#xD;
Context (TestFixture) with multiple Observations.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One of the things that you may have missed is the fact that the System Under Test&#xD;
is never instantiated. This is also taken care of in a base class. I have the ability&#xD;
to override the creation of the system under test, but for most tests, letting the&#xD;
SUT be created for me saves a couple of lines of code, and allows me to not have to&#xD;
change things as more dependencies get added.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
So how does all of this work? Currently all of this is coded to run against MBUnit&#xD;
2.5. I have a project called jpboodhoo.commons.bdd (part of jpboodhoo.commons) where&#xD;
I place all of the plumbing code to make all of this work. Here is a snapshot of the&#xD;
project:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://blog.jpboodhoo.com/content/binary/WindowsLiveWriter/HowImCurrentlyWritingMyBDDStyleTestsPart_1379D/image_2.png" rel="lightbox"&gt;&#xD;
            &lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="373" alt="image" src="http://blog.jpboodhoo.com/content/binary/WindowsLiveWriter/HowImCurrentlyWritingMyBDDStyleTestsPart_1379D/image_thumb.png" width="488" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This is one of those utility type projects that got harvested over time as I saw patterns&#xD;
start to emerge. Under the concern folder there are 4 main classes:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://blog.jpboodhoo.com/content/binary/WindowsLiveWriter/HowImCurrentlyWritingMyBDDStyleTestsPart_1379D/image_4.png" rel="lightbox"&gt;&#xD;
            &lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="156" alt="image" src="http://blog.jpboodhoo.com/content/binary/WindowsLiveWriter/HowImCurrentlyWritingMyBDDStyleTestsPart_1379D/image_thumb_1.png" width="518" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In my projects I derive from either one of the following 3:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
observations_for_a_static_sut &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
observations_for_a_sut_with_a_contract &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
observations_for_a_sut_without_a_contract &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
Those 3 base classes cover the range of classes I may want to write tests against.&#xD;
I am hoping that the naming of the classes is pretty self explanatory. Here are the&#xD;
definitions for each of the above 3 classes:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;abstract&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; observations_for_a_static_sut&#xD;
: an_observations_set_of_basic_behaviours { }&lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This one is the most basic, it simply inherits from “an_observations_set_of_basic_behaviours”.&#xD;
I derive from this class when I am testing static classes. The other 2 are equally&#xD;
as simple with a little twist:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;abstract&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; observations_for_a_sut_with_a_contract&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;Contract,&#xD;
ClassUnderTest&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; :&#xD;
observations_for_an_instance_sut&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;Contract,&#xD;
ClassUnderTest&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; where&#xD;
ClassUnderTest : Contract { } &lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I derive from this class when I want to write tests against a class, but code the&#xD;
tests against an interface of the class, and not the class itself. Here the term interface/contract&#xD;
applies to either a C# interface, or a class that the ClassUnderTest inherits from&#xD;
(usually an abstract class). The final base class (that I can choose to derive from)&#xD;
is very similar:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;abstract&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; observations_for_a_sut_without_a_contract&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;SystemUnderTest&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; :&#xD;
observations_for_an_instance_sut&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;SystemUnderTest,&#xD;
SystemUnderTest&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; {&#xD;
} &lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
Notice how this class derives from the same class as the previous class, except that&#xD;
it uses the same type for providing the generic arguments to the “observations_for_an_instance_sut”&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Again, the 3 classes that I have just covered are there to introduce a convention&#xD;
for people (right now just me) to follow when they are writing their own tests classes.&#xD;
The naming of the 3 makes it pretty simple( I think) to figure out which one you would&#xD;
start with.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
With those 3 covered it really leaves the 2 “big ones” that hide a lot of plumbing&#xD;
and MBUnit specific details. Let’s start by taking a look at the skeleton for the&#xD;
“an_observations_set_of_basic_behaviours”:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt; [Observations] &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;abstract&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; an_observations_set_of_basic_behaviours&#xD;
{ &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; IDictionary&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;Type, &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; dependencies; &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; Exception&#xD;
exception_thrown_while_sut_performed_its_work; &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; Action&#xD;
behaviour_of_the_sut; [SetUp] &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; setup()&#xD;
{ } [TearDown] &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; tear_down()&#xD;
{ } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; do_setup()&#xD;
{ } after_each_observation a &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; () &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; dependencies.Clear();&#xD;
ICommand build_command_chain&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;DelegateType&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;()&#xD;
{ } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; run_action&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;DelegateType&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;()&#xD;
{ } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;virtual&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; initialize_system_under_test()&#xD;
{ } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; doing(Action&#xD;
action) { } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; Exception&#xD;
exception_thrown_by_the_sut { } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; Exception&#xD;
get_exception_throw_by(Action action_that_should_be_taken_by_the_sut) { } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; an(Type&#xD;
type) { } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; InterfaceType&#xD;
an&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;InterfaceType&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;()&#xD;
where InterfaceType : &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; {&#xD;
} } &lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This is just the interface (we’ll dive into implementation of each method in time!!).&#xD;
Let’s break it down step by step. First thing you should see is the use of the Observations&#xD;
attribute on the class itself. This is basically just an alternative to the TestFixtureAttribute&#xD;
(thanks go to Albert Weinert for suggesting this). Here is the code:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt; [AttributeUsage(AttributeTargets.Class,&#xD;
AllowMultiple &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;)] &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; ObservationsAttribute&#xD;
: TestFixturePatternAttribute { &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; ObservationsAttribute(&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; description)&#xD;
: &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;(description)&#xD;
{ } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; ObservationsAttribute()&#xD;
{ } &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; IRun&#xD;
GetRun() { var run &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; SequenceRun();&#xD;
run.Runs.Add(&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; OptionalMethodRun(&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; (SetUpAttribute), &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;));&#xD;
run.Runs.Add(&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; MethodRun(&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; (ObservationAttribute), &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;, &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;));&#xD;
run.Runs.Add(&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; OptionalMethodRun(&lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; (TearDownAttribute), &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;)); &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; run;&#xD;
} } &lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The main thing you should get out of this is that the GetRun method tells MbUnit to&#xD;
look for methods that are decorated with the ObservationAttribute, and to treat them&#xD;
as tests. The ObservationAttribute is really simple:&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;pre&gt;&#xD;
          &lt;div&gt;&#xD;
            &lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&#xD;
            &lt;span style="color: #000000"&gt; [AttributeUsage(AttributeTargets.Method,&#xD;
AllowMultiple &lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;=&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;)] &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&#xD;
            &lt;span style="color: #000000"&gt; ObservationAttribute&#xD;
: TestPatternAttribute { } &lt;/span&gt;&#xD;
          &lt;/div&gt;&#xD;
        &lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
You have already seen this attribute used on the test earlier. The thing that should&#xD;
be immediately apparent about the “an_observations_basic_set_of_behaviours” class&#xD;
is that it is there to shield the rest of the test code from the details of whatever&#xD;
xUnit framework you are targeting (in this case, MBUnit).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Tomorrow I’ll continue by breaking down the responsibilities of this class in a piece&#xD;
meal fashion.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=34e7ee4b-128d-443d-97b2-7ae8dde897fe"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=mM5TO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=mM5TO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=zkGWO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=zkGWO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=JlPgO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=JlPgO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,34e7ee4b-128d-443d-97b2-7ae8dde897fe.aspx</comments>
      <category>C Sharp;Programming</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=c2b8af75-0b6b-4948-b02a-c8df76075b53</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,c2b8af75-0b6b-4948-b02a-c8df76075b53.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,c2b8af75-0b6b-4948-b02a-c8df76075b53.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c2b8af75-0b6b-4948-b02a-c8df76075b53</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>JP&amp;rsquo;s Daily Dose Of Inspiration - #6</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,c2b8af75-0b6b-4948-b02a-c8df76075b53.aspx</guid>
      <link>http://blog.jpboodhoo.com/JPrsquosDailyDoseOfInspiration6.aspx</link>
      <pubDate>Thu, 18 Dec 2008 18:13:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
The road lays out ahead of you. You can’t see your goal in sight, you just know it&#xD;
is waiting to be attained. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It is not important how long you will travel this road for, or how many obstacles&#xD;
you are going to have to overcome. You just know that without this pursuit, nothing&#xD;
in your life will be the same. How much do you want it? Are you willing to put in&#xD;
the enormous effort. Are you ready to start your marathon today? &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you start too fast and don’t set yourself a steady pace, you can risk burning out&#xD;
too early and not achieving your goal. On the other hand if you start off slow and&#xD;
don’t try to continually push yourself, you may find you reach your destination much&#xD;
later than your liking. Find your rhythm, a pace that works for you. Don’t get distracted&#xD;
by the sprinters speeding by you, and don’t get too confident if you start to leave&#xD;
people in your wake, as you might get complacent. Compete against yourself daily.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The road lays out ahead of you. You can’t see your goal in sight, you just know it&#xD;
is waiting to be attained. You take the first step, and then the other. You have started&#xD;
the marathon. After a long time running it is easy to get discouraged and sidetracked.&#xD;
Thoughts of giving up can sometimes consume you when you are running through the desert&#xD;
on your own. These times are there to test you, and to keep you humble.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Over time you will realize that the goal you thought was the goal may not be what&#xD;
you were expecting. Along the way I pray you will have the realization that the real&#xD;
goal of this “marathon” is the journey itself. Take time to breathe in your surroundings.&#xD;
Cherish the people you will meet on the way. Give encouragement to those who need&#xD;
encouragement. Share your “water” with those who are “thirsty”. The journey is beautiful&#xD;
and it is my hope and prayer that all of you cherish every single second of it!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;“.. I do not consider myself yet to have taken hold of it. But one thing I do:&#xD;
Forgetting what is behind and straining toward what is ahead, I press on toward the&#xD;
goal to win the prize for which God has called me heavenward in Christ Jesus.” – Philippians&#xD;
3:13-14&lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=c2b8af75-0b6b-4948-b02a-c8df76075b53"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=LLmLO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=LLmLO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=GDFiO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=GDFiO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=e6i2O"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=e6i2O" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,c2b8af75-0b6b-4948-b02a-c8df76075b53.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=95e6e04a-50f7-4f27-9b33-eec55e5f001f</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,95e6e04a-50f7-4f27-9b33-eec55e5f001f.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,95e6e04a-50f7-4f27-9b33-eec55e5f001f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=95e6e04a-50f7-4f27-9b33-eec55e5f001f</wfw:commentRss>
      <slash:comments>3</slash:comments>
      
      <title>So What Do Past Students Really Think About Nothin But .Net?</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,95e6e04a-50f7-4f27-9b33-eec55e5f001f.aspx</guid>
      <link>http://blog.jpboodhoo.com/SoWhatDoPastStudentsReallyThinkAboutNothinButNet.aspx</link>
      <pubDate>Thu, 11 Dec 2008 14:58:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
Now that the course has been running for over 2 years, there have been plenty of unsolicited&#xD;
comments about the course that have been posted to the blogosphere. This post attempts&#xD;
to aggregate a handful of them into one place so you can see for yourself what people&#xD;
really think about the course (good and bad!!).&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;2007 &lt;/strong&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;ul&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;a href="http://www.igloocoder.com/archive/2007/02/25/1008.aspx"&gt;A week with&#xD;
JP Boodhoo&lt;/a&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://kyle.baley.org/NothinButNETOrHowToJustifyIgnoringYourHomeLife.aspx"&gt;Nothin'&#xD;
But .NET, or "How to justify ignoring your home life"&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
Set&lt;/li&gt;&#xD;
            &lt;ul&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://scourtrille.wordpress.com/2007/02/23/and-thats-all-she-wrote/"&gt;And&#xD;
that’s all she wrote…&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://scourtrille.wordpress.com/2007/02/25/the-jp-experience/"&gt;The JP Experience..&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
            &lt;/ul&gt;&#xD;
            &lt;li&gt;&#xD;
Set&lt;/li&gt;&#xD;
            &lt;ul&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://weblogs.asp.net/bsimser/archive/2007/07/24/nothin-but-net-course-tips-and-tricks-day-1.aspx"&gt;Nothin&#xD;
but .NET course - Tips and Tricks - Day 1&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://weblogs.asp.net/bsimser/archive/2007/07/26/nothing-but-net-tips-and-tricks-day-2.aspx"&gt;Nothing&#xD;
but .NET - Tips and Tricks - Day 2&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://weblogs.asp.net/bsimser/archive/2007/07/26/nothin-but-net-tips-and-tricks-day-3.aspx"&gt;Nothin&#xD;
but .NET - Tips and Tricks - Day 3&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
            &lt;/ul&gt;&#xD;
          &lt;/ul&gt;&#xD;
          &lt;li&gt;&#xD;
2008&lt;/li&gt;&#xD;
          &lt;ul&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://blogs.conchango.com/simonbrown/archive/2008/10/04/continuous-improvement.aspx"&gt;Continuous&#xD;
Improvement&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://www.batteryslave.com/?p=9"&gt;nothing but dotnet – jean-paul boodhoo’s&#xD;
bootcamp&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://www.persistall.com/archive/2008/11/24/boodhoo-take-2.aspx"&gt;Boodhoo&#xD;
Take 2&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://nyveldt.com/blog/post/Nothin-But-NET-Bootcamp-e28093-Philly-Edition.aspx"&gt;Nothin&#xD;
But .Net Bootcamp – Philly Edition&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://ferventcoder.com/archive/2008/11/24/nothin-but-.net-developer-boot-camp---wrap-up.aspx"&gt;Nothin&#xD;
but .NET Developer Boot Camp - Wrap up&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://www.umbyersw.com/2008/06/unofficial-nbdn-survival-guide.html"&gt;The&#xD;
Unofficial NBDN Survival Guide&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://scottmuc.com/blog/development/i-survived-jp-s-nothing-but-dot-net-boot-camp/"&gt;I&#xD;
Survived JP's Nothing but Dot Net Boot camp!&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://darrell.mozingo.net/2008/12/03/nothin-but-net-training/"&gt;Nothin’ But&#xD;
.NET Training&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://weblogs.sqlteam.com/travisl/archive/2008/05/08/60593.aspx"&gt;I'm not&#xD;
a Jedi&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://tnthughes.net/blog/post/2008/03/Nothin-But-NET.aspx"&gt;Nothin' But .NET&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://www.5x1llz.com/index.php/boodhoo-bootcamp-bentleys/"&gt;Boodhoo, Bootcamp&#xD;
&amp;amp; Bentley’s&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://www.johnlmiller.com/archives/2008/11/26/nothin-but-net-experience-of-a-lifetime/"&gt;Nothin’&#xD;
But .Net – Experience of a Lifetime&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://www.bjoernrochel.de/2008/09/24/nothing-but-net-germany-half-time-recap/"&gt;Nothing&#xD;
but .NET Germany - Half time recap&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
              &lt;a href="http://www.bjoernrochel.de/2008/09/27/80-hours-later/"&gt;80 hours later . .&#xD;
.&lt;/a&gt;&#xD;
            &lt;/li&gt;&#xD;
            &lt;li&gt;&#xD;
Set&lt;/li&gt;&#xD;
            &lt;ul&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://geekswithblogs.net/alternativedotnet/archive/2008/09/23/125380.aspx"&gt;Nothin&#xD;
but .net: day 1&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://geekswithblogs.net/alternativedotnet/archive/2008/09/24/125401.aspx"&gt;Nothin&#xD;
but .net: day 2&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://geekswithblogs.net/alternativedotnet/archive/2008/09/25/125439.aspx"&gt;Nothin'&#xD;
but .net: day 3&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://geekswithblogs.net/alternativedotnet/archive/2008/09/26/125467.aspx"&gt;Nothin'&#xD;
but .net: Days 4&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://geekswithblogs.net/alternativedotnet/archive/2008/09/27/125492.aspx"&gt;Nothin'&#xD;
but .net: Day 5&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
            &lt;/ul&gt;&#xD;
            &lt;li&gt;&#xD;
Set&lt;/li&gt;&#xD;
            &lt;ul&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://dirkdev.blogspot.com/2008/09/nothin-but.html"&gt;Nothin but .Net (Day&#xD;
1)&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://dirkdev.blogspot.com/2008/09/nothin-but-net-day-2.html"&gt;Nothin but&#xD;
.Net (Day 2)&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://dirkdev.blogspot.com/2008/09/nothin-but-net-day-3.html"&gt;Nothin but&#xD;
.Net (Day 3)&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://dirkdev.blogspot.com/2008/09/nothin-but-net-day-4.html"&gt;Nothin but&#xD;
.Net (Day 4)&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
              &lt;li&gt;&#xD;
                &lt;a href="http://dirkdev.blogspot.com/2008/09/nothin-but-net-day-5.html"&gt;Nothin but&#xD;
.Net (Day 5)&lt;/a&gt;&#xD;
              &lt;/li&gt;&#xD;
            &lt;/ul&gt;&#xD;
          &lt;/ul&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
If you are a past student and have a blog post that is not listed up above, please&#xD;
get in contact with me as I would love to be able to link to it!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Looking forward to what next years students will say!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Develop With Passion!!&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://blog.jpboodhoo.com/aggbug.ashx?id=95e6e04a-50f7-4f27-9b33-eec55e5f001f"&gt;&lt;/img&gt;&#xD;
      &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=ErhHO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=ErhHO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=wXV7O"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=wXV7O" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JPBoodhoo?a=xjjhO"&gt;&lt;img src="http://feeds.feedburner.com/~f/JPBoodhoo?i=xjjhO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://blog.jpboodhoo.com/CommentView,guid,95e6e04a-50f7-4f27-9b33-eec55e5f001f.aspx</comments>
      <category>Training</category>
    </item>
    <item>
      <trackback:ping>http://blog.jpboodhoo.com/Trackback.aspx?guid=b1c1a409-9dc7-4512-aa42-9b892cbbda6c</trackback:ping>
      <pingback:server>http://blog.jpboodhoo.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.jpboodhoo.com/PermaLink,guid,b1c1a409-9dc7-4512-aa42-9b892cbbda6c.aspx</pingback:target>
      <dc:creator>JPSB</dc:creator>
      <wfw:comment>http://blog.jpboodhoo.com/CommentView,guid,b1c1a409-9dc7-4512-aa42-9b892cbbda6c.aspx</wfw:comment>
      <wfw:commentRss>http://blog.jpboodhoo.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b1c1a409-9dc7-4512-aa42-9b892cbbda6c</wfw:commentRss>
      <slash:comments>2</slash:comments>
      
      <title>Nothin But .Net &amp;ndash; Done For The 2008 Year!!</title>
      <guid isPermaLink="false">http://blog.jpboodhoo.com/PermaLink,guid,b1c1a409-9dc7-4512-aa42-9b892cbbda6c.aspx</guid>
      <link>http://blog.jpboodhoo.com/NothinButNetNdashDoneForThe2008Year.aspx</link>
      <pubDate>Thu, 11 Dec 2008 07:10:00 GMT</pubDate>
      <description>&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://blog.jpboodhoo.com/content/binary/WindowsLiveWriter/NothinBut.NetDoneForThe2008Year_614B/Phliiy%20course%20012_small_2.jpg" rel="lightbox"&gt;&#xD;
            &lt;img title="Phliiy course 012_small" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="427" alt="Phliiy course 012_small" src="http://blog.jpboodhoo.com/content/binary/WindowsLiveWriter/NothinBut.NetDoneForThe2008Year_614B/Phliiy%20course%20012_small_thumb.jpg" width="638" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The picture above is of the last class that occurred in Philadelphia. The last 2 courses&#xD;
introduced some new formats to the course. In particular, the length of group exercises&#xD;
has been increased significantly (a little too much for Philly, but a lesson learned&#xD;
for next time!!). This course has been a blessing that cannot be conveyed in words.&#xD;
The last 2 classes of the year were held in Vegas and Philadelphia and they were absolutely&#xD;
amazing. It was a great way to end the training year.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
What is the secret to the course? Is it the:&#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Great meals (Philadelphia was treated to some of the best dining of the year. Thanks&#xD;
in large part to so many amazing establishments being so close to the venue).&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Great technical content.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Screencasts of every minute of coding that takes place&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Tips on how to maintain a great attitude about life and work&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Laughs (lots of them!!!)&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
While the above are definitely reasons that people choose to attend the course, they&#xD;
are easily eclipsed by the &lt;strong&gt;PEOPLE &lt;/strong&gt;that attend. The amazing energy,&#xD;
enthusiasm, and spirit that the group displays over the course of the week continually&#xD;
blows me away. How many classes do you know where a group of random strangers can&#xD;
come together and by the end of the week are actually planning on forming lasting&#xD;
friendships!!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
God has truly been in the details and I know that none of this would have been possible&#xD;
without Him. I am thankful for every opportunity to deliver this course and will continue&#xD;
to evolve the material and deliver it as long as I feel called to do so!!&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
One of the great things that was conveyed by a couple of repeat students is how much&#xD;
the course has changed over the period of a year. They came in thinking that it would&#xD;
be a refresher and they were greeted with completely new content!! My hope is that&#xD;
the course and its material will continue to evolve as I learn new things . I am excited&#xD;
to see what the 2009 year will bring (along with a much needed set of alumni meetings!!!).&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
To all of the people I have been blessed with the opportunity of sharing with over&#xD;
the past year, I want to send a big &lt;strong&gt;“God Bless You” &lt;/strong&gt;out to all of&#xD;
you. It was an honor, a blessing, and a privilege to help you chart a new course for&#xD;
your development career.  And I am truly honored to be able to say I could help&#xD;
in some small