<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>development</title>
        <link>http://geekswithblogs.net/chriscanal/category/7572.aspx</link>
        <description>development</description>
        <language>en-GB</language>
        <copyright>Chris Canal</copyright>
        <managingEditor>chris@e4ums.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>ASP.NET MVC ActionResult Helper</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/05/15/asp.net-mvc-actionresult-helper.aspx</link>
            <description>Recently I’ve been working a lot with the new ASP.NET MVC framework, with Preview 1 (bleh) and the interim drop, Pre-Preview 3?&lt;br /&gt;
The ActionResult is a fantastic addition, making the framework far easier to test. However, I noticed I was basically doing the same thing for each test: &lt;blockquote&gt;
&lt;div style="border: 1px solid rgb(208, 208, 208); font-family: monospace; color: rgb(0, 0, 102); background-color: rgb(240, 240, 240);" class="csharp"&gt;
&lt;ol&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;Test&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;void&lt;/span&gt; TestSomething&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;   var actionResult = controllerUT.&lt;span style="color: rgb(0, 0, 255);"&gt;Something&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;as&lt;/span&gt; RenderViewResult;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;   &lt;span style="color: rgb(6, 0, 255);"&gt;If&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt; actionResult == &lt;span style="color: rgb(6, 0, 255);"&gt;null&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;      Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;Fail&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;“ActionResult was &lt;span style="color: rgb(6, 0, 255);"&gt;null&lt;/span&gt;.”&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;   Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;That&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;actionResult.&lt;span style="color: rgb(0, 0, 255);"&gt;ViewName&lt;/span&gt;, &lt;a href="http://www.google.com/search?q=is+msdn.microsoft.com" style="color: rgb(0, 0, 96);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Is&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;EqualTo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;“ViewName”&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;   Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;That&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;actionResult.&lt;span style="color: rgb(0, 0, 255);"&gt;ViewData&lt;/span&gt;, &lt;a href="http://www.google.com/search?q=is+msdn.microsoft.com" style="color: rgb(0, 0, 96);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Is&lt;/span&gt;&lt;/a&gt;.&lt;a href="http://www.google.com/search?q=typeof+msdn.microsoft.com" style="color: rgb(0, 0, 96);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Typeof&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?q=typeof+msdn.microsoft.com" style="color: rgb(0, 0, 96);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;typeof&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;SomeClass&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;   Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;That&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;SomeClass&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;actionResult.&lt;span style="color: rgb(0, 0, 255);"&gt;ViewData&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;SomeProperty&lt;/span&gt;, &lt;a href="http://www.google.com/search?q=is+msdn.microsoft.com" style="color: rgb(0, 0, 96);"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Is&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;EqualTo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;123&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/blockquote&gt; Basically asserting the view name, view data type and maybe asserting a property or two on the view data. In the spirit of treating the test code as a first class citizen I decided to refactor out the duplication.  The resulting refactoring turned the above into the following: &lt;blockquote&gt;
&lt;div class="csharp" style="border: 1px solid rgb(208, 208, 208); font-family: monospace; color: rgb(0, 0, 102); background-color: rgb(240, 240, 240);"&gt;
&lt;ol&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;Test&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;void&lt;/span&gt; TestSomething&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;   controller.&lt;span style="color: rgb(0, 0, 255);"&gt;Something&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;AssertViewName&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;“ViewName”&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;AssertViewDataType&lt;/span&gt;&amp;lt;SomeClass&amp;gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;c =&amp;gt; Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;That&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;c.&lt;span style="color: rgb(0, 0, 255);"&gt;SomeProperty&lt;/span&gt;, &lt;a style="color: rgb(0, 0, 96);" href="http://www.google.com/search?q=is+msdn.microsoft.com"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Is&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;EqualTo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;123&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/blockquote&gt; Which I personally think is alot nicer! Although I'm a little biased, so I thought I would share it and see what other people thought of it. Below is the code I came up with. Any and all suggestions (good or bad) are appreciated &lt;blockquote&gt;
&lt;div class="csharp" style="border: 1px solid rgb(208, 208, 208); font-family: monospace; color: rgb(0, 0, 102); background-color: rgb(240, 240, 240);"&gt;
&lt;ol&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;namespace&lt;/span&gt; e4umsMN.&lt;span style="color: rgb(0, 0, 255);"&gt;Spec&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;Utils&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;    &lt;span style="color: rgb(6, 0, 255);"&gt;using&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;System&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;    &lt;span style="color: rgb(6, 0, 255);"&gt;using&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;System&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;Web&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;Mvc&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;    &lt;span style="color: rgb(6, 0, 255);"&gt;using&lt;/span&gt; NUnit.&lt;span style="color: rgb(0, 0, 255);"&gt;Framework&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;    &lt;span style="color: rgb(6, 0, 255);"&gt;using&lt;/span&gt; NUnit.&lt;span style="color: rgb(0, 0, 255);"&gt;Framework&lt;/span&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;SyntaxHelpers&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;    &lt;span style="color: rgb(6, 0, 255);"&gt;internal&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;class&lt;/span&gt; ActionResultHelper&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 128, 128);"&gt;#region Public statics (6)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(6, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;static&lt;/span&gt; ActionResult AssertActionRedirect&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;this&lt;/span&gt; ActionResult actionResult, &lt;span style="color: rgb(255, 0, 0);"&gt;string&lt;/span&gt; actionName&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            &lt;span style="color: rgb(6, 0, 255);"&gt;return&lt;/span&gt; actionResult.&lt;span style="color: rgb(0, 0, 255);"&gt;AssertNotNull&lt;/span&gt;&amp;lt;ActionRedirectResult&amp;gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;arr =&amp;gt; Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;That&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;arr.&lt;span style="color: rgb(0, 0, 255);"&gt;Values&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;"action"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]&lt;/span&gt;, &lt;a style="color: rgb(0, 0, 96);" href="http://www.google.com/search?q=is+msdn.microsoft.com"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Is&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;EqualTo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;actionName&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(6, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;static&lt;/span&gt; ActionResult AssertHttpRedirect&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;this&lt;/span&gt; ActionResult actionResult, &lt;span style="color: rgb(255, 0, 0);"&gt;string&lt;/span&gt; redirect&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            &lt;span style="color: rgb(6, 0, 255);"&gt;return&lt;/span&gt; actionResult.&lt;span style="color: rgb(0, 0, 255);"&gt;AssertNotNull&lt;/span&gt;&amp;lt;HttpRedirectResult&amp;gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;hrr =&amp;gt; Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;That&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;hrr.&lt;span style="color: rgb(0, 0, 255);"&gt;Url&lt;/span&gt;, &lt;a style="color: rgb(0, 0, 96);" href="http://www.google.com/search?q=is+msdn.microsoft.com"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Is&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;EqualTo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;redirect&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(6, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;static&lt;/span&gt; ActionResult AssertRenderViewResult&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;this&lt;/span&gt; ActionResult actonResult, Action&amp;lt;RenderViewResult&amp;gt; extraAssert&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            &lt;span style="color: rgb(6, 0, 255);"&gt;return&lt;/span&gt; actonResult.&lt;span style="color: rgb(0, 0, 255);"&gt;AssertNotNull&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;extraAssert&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(6, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;static&lt;/span&gt; ActionResult AssertViewDataType&amp;lt;T&amp;gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;this&lt;/span&gt; ActionResult actionResult, Action&amp;lt;T&amp;gt; viewDataAssert&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            &lt;span style="color: rgb(6, 0, 255);"&gt;return&lt;/span&gt; actionResult.&lt;span style="color: rgb(0, 0, 255);"&gt;AssertRenderViewResult&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;a =&amp;gt; viewDataAssert&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;T&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;a.&lt;span style="color: rgb(0, 0, 255);"&gt;ViewData&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(6, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;static&lt;/span&gt; ActionResult AssertViewDataType&amp;lt;T&amp;gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;this&lt;/span&gt; ActionResult actionResult&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            &lt;span style="color: rgb(6, 0, 255);"&gt;return&lt;/span&gt; actionResult.&lt;span style="color: rgb(0, 0, 255);"&gt;AssertRenderViewResult&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;a =&amp;gt; Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;That&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;a.&lt;span style="color: rgb(0, 0, 255);"&gt;ViewData&lt;/span&gt;, &lt;a style="color: rgb(0, 0, 96);" href="http://www.google.com/search?q=is+msdn.microsoft.com"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Is&lt;/span&gt;&lt;/a&gt;.&lt;a style="color: rgb(0, 0, 96);" href="http://www.google.com/search?q=typeof+msdn.microsoft.com"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;TypeOf&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;a style="color: rgb(0, 0, 96);" href="http://www.google.com/search?q=typeof+msdn.microsoft.com"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;typeof&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;T&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(6, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;static&lt;/span&gt; ActionResult AssertViewName&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;this&lt;/span&gt; ActionResult actionResult, &lt;span style="color: rgb(255, 0, 0);"&gt;string&lt;/span&gt; viewName&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            &lt;span style="color: rgb(6, 0, 255);"&gt;return&lt;/span&gt; actionResult.&lt;span style="color: rgb(0, 0, 255);"&gt;AssertRenderViewResult&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;a =&amp;gt; Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;That&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;a.&lt;span style="color: rgb(0, 0, 255);"&gt;ViewName&lt;/span&gt;, &lt;a style="color: rgb(0, 0, 96);" href="http://www.google.com/search?q=is+msdn.microsoft.com"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;Is&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0, 0, 255);"&gt;EqualTo&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;viewName&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 128, 128);"&gt;#endregion Public statics&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 128, 128);"&gt;#region Other statics (1)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(6, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(6, 0, 255);"&gt;static&lt;/span&gt; T AssertNotNull&amp;lt;T&amp;gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(6, 0, 255);"&gt;this&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;object&lt;/span&gt; actionResult, Action&amp;lt;T&amp;gt; extraAssert&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            &lt;span style="color: rgb(6, 0, 255);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;actionResult == &lt;span style="color: rgb(6, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;                Assert.&lt;span style="color: rgb(0, 0, 255);"&gt;Fail&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;"ActionResult was null"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            extraAssert&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;T&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt; actionResult&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;            &lt;span style="color: rgb(6, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;T&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt; actionResult;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;        &lt;span style="color: rgb(0, 128, 128);"&gt;#endregion Other statics&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt; &lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 48, 48);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
    &lt;li style="font-weight: bold; color: rgb(0, 96, 96);"&gt;
    &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal; color: rgb(0, 0, 32);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122177"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122177" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/122177.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/05/15/asp.net-mvc-actionresult-helper.aspx</guid>
            <pubDate>Thu, 15 May 2008 23:59:14 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/122177.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/05/15/asp.net-mvc-actionresult-helper.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/122177.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Test First? Or is that new legacy code you just checked in?</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/05/09/test-first-or-is-that-new-legacy-code-you-just.aspx</link>
            <description>&lt;div style="margin: 5px 20px 20px;"&gt;
&lt;div style="margin-bottom: 2px;" class="smallfont"&gt;Quote:&lt;/div&gt;
&lt;table width="100%" cellspacing="0" cellpadding="6" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="border: 1px inset ;" class="alt2"&gt;  ...legacy code is simply code without tests. - &lt;strong&gt;Working Effectivly with Legacy Code - Micheal Feathers&lt;/strong&gt; &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
I was discussing testing with a friend the other day, mainly Test Driven Development and we got onto the topic of new code without tests and retrofitting them. The first thing that popped into my head was the above quote and the following:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin: 5px 20px 20px;"&gt;
&lt;div style="margin-bottom: 2px;" class="smallfont"&gt;Quote:&lt;/div&gt;
&lt;table width="100%" cellspacing="0" cellpadding="6" border="0"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="border: 1px inset ;" class="alt2"&gt; Code without tests us bad code. It doesn't matter how well written it is; it doesn't matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behaviour of our code quickly and verifiably. Without them, we really don't know if our code is getting better or worse. &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
You can imagine his reaction after I shared this with him.&lt;br /&gt;
&lt;br /&gt;
However, I completely agree with that Micheal is saying. Any code without tests, no matter if it was written a few hours ago or a year, is bad legacy tests. Retrofitting tests on the code then becomes a task with dealing with &lt;em&gt;legacy code&lt;/em&gt;. True, you will probably not have as hard a time dealing with new legacy than you would older legacy code, but the main issue is that your still dealing with legacy code.&lt;br /&gt;
&lt;br /&gt;
Once the code is written, retrofitting tests isn't Test Driven Development. Your not designing the code to make your tests pass, your designing you tests to ensure behaviour of exisiting code, and this means &lt;em&gt;legacy code&lt;/em&gt;. Would I recommend retrofitting tests? No, I would give it a miss, concentrate more on integration testing. Add unit tests on the code when your editing it, as you would with, you guessed it, legacy code.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;My Code isn't bad because it doesn't have tests!&lt;/strong&gt;&lt;br /&gt;
It was never my intetion to insult friend, but the fact still remains that I agree with the above quote and view any code without tests as bad code. The key aspect of a good application is not how cool the code or how slick he UI is, but how maintainable it is. And not maintainable for you, but the developer after you.&lt;br /&gt;
&lt;br /&gt;
Over the years I've worked on some really nice applications. The UI is nicely design, the customers are happy with how everything works, but without tests, maintaining it is magnatidues more difficult than an application that does.&lt;br /&gt;
&lt;br /&gt;
How can a new developer to an applicaton confidently make changes if there is nothing to verify the changes? Sure, they can sit and manually test the UI is doing as it should, but what about the subtle bugs that can be introduced? The side affects of a change that can appear somewhere else in the application. I've experienced nasty side-affects without tests before, and when they are in an unrelated section of the code, it can be a nightmare without to track down.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Un-legacying your code&lt;br /&gt;
&lt;/strong&gt;As I said before, there isn't much point in retro-fitting tests as an actual task. Concentrate on adding tests whenever your going to be working on an area. The goal is to introduce confidence building tests and either maintain behaviour when refactoing, or ensuring you don't break anything when changing behaviour.&lt;br /&gt;
&lt;br /&gt;
Without TDD, your probably going going to have to break dependencies. The one common issue I've come across when helping people deal with legacy code is dependencies and interaction with the database. if your test hits an external resoruce, then its not a unit test. A unit test should be small, quick to run, atomic and run is isolation. This makes it difficult to add tests to code that uses things like LINQ to SQL as they are very tightly coupled to the database, trying getting a test quickly and easily in a test harness. Anything that ties your application to a data source is not a good option for maintanability.&lt;br /&gt;
&lt;br /&gt;
It's also detrimental to running the tests. Having tests that hits the database can be time consuming, time consuming tests == test that will probably not be ran and then your back to writing legacy code.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Errr... the point?&lt;/strong&gt;&lt;br /&gt;
So, the point? Well, learn TDD. I know I do keep going on about this, but I do have a good reason. TDD is new to .NET, it needs more people to take it up. Microsoft has just started with the MVC Framework, so momentum is growing. But it's the troops out in the field that need to pick it up too. Trust me, when you get into the full swing of it coding is &lt;em&gt;&lt;strong&gt;exteremly&lt;/strong&gt;&lt;/em&gt; fun again, even the boring tweaks. You've always got a safety net so huge refactoring or changes hold no fear, late requirements from a client are no longer a reason to moan or a worry.&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122014"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122014" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/122014.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/05/09/test-first-or-is-that-new-legacy-code-you-just.aspx</guid>
            <pubDate>Fri, 09 May 2008 20:33:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/122014.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/05/09/test-first-or-is-that-new-legacy-code-you-just.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/122014.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Developer Day Scotland - ALT.NET Open Spaces</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/05/06/developer-day-scotland---alt.net-open-spaces.aspx</link>
            <description>&lt;div style="text-align: center;"&gt;&lt;img src="http://developerdayscotland.com/images/badges/banner2.png" alt="Developer Day Scotland" /&gt; &lt;img width="156" height="60" alt="" src="/images/geekswithblogs_net/chriscanal/images/RWS2-small.PNG" /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
I'm attending this weekends Developer Day Scotland in Glasgow and I'm trying to organise an ALT.NET meet/Open Spaces.  I've left it really really late, but hopefully I'll be able to get something together.&lt;br /&gt;
&lt;br /&gt;
When I say "&lt;span style="font-weight: bold;"&gt;I'll&lt;/span&gt;", I'm hoping this will soon be "&lt;span style="font-weight: bold;"&gt;we'll&lt;/span&gt;".  So, any other ALT.NETters attending DD and interested in having a short session?  &lt;a href="http://blog.colinmackay.net/"&gt;Colin&lt;/a&gt;, one of the organisers, has been kind enough to offer a room over lunch for it.  If your attending and your not sure what ALT.NET is, feel free to join in, the more people the better.  Yes, I am worried about sitting in a room myself for a hour!&lt;br /&gt;
&lt;br /&gt;
If you are an ALT.NETer, please contact me if you want to help out or host/suggest something.  Email me at chris dot-thing canal at-thiny e4ums another-dot co and-another uk&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt; &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121931"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121931" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/121931.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/05/06/developer-day-scotland---alt.net-open-spaces.aspx</guid>
            <pubDate>Tue, 06 May 2008 21:40:10 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/121931.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/05/06/developer-day-scotland---alt.net-open-spaces.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/121931.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Professional ASP.NET 3.5: In C# and VB - £14 on Amazon.co.uk</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/05/06/professional-asp.net-3.5-in-c-and-vb---14-on.aspx</link>
            <description>As you may or may not have seen, a few people have been blogging about &lt;strong class="sans"&gt;&lt;span id="btAsinTitle"&gt;Professional ASP.NET 3.5: In C# and VB &lt;/span&gt;&lt;/strong&gt;&lt;span class="sans"&gt;&lt;span id="btAsinTitle"&gt;on Amazon.com being $16.  Being in the UK, I thought I would check it out.  Turns out its just as cheap: &lt;a href="http://www.amazon.co.uk/Professional-ASP-NET-3-5-VB-Programmer/dp/0470187573/ref=sr_11_1?ie=UTF8&amp;amp;qid=1210067583&amp;amp;sr=11-1"&gt;http://www.amazon.co.uk/Professional-ASP-NET-3-5-VB-Programmer/dp/0470187573/ref=sr_11_1?ie=UTF8&amp;amp;qid=1210067583&amp;amp;sr=11-1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I've just ordered mine :)&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;strong class="sans"&gt;&lt;span id="btAsinTitle"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121920"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121920" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/121920.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/05/06/professional-asp.net-3.5-in-c-and-vb---14-on.aspx</guid>
            <pubDate>Tue, 06 May 2008 15:55:18 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/121920.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/05/06/professional-asp.net-3.5-in-c-and-vb---14-on.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/121920.aspx</wfw:commentRss>
        </item>
        <item>
            <title>New to Design Patterns?</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/04/23/new-to-design-patterns.aspx</link>
            <description>&lt;p&gt; Have all your Desgin Pattern woes solved and more: &lt;a href="http://uncyclopedia.org/wiki/Design_Patterns"&gt;http://uncyclopedia.org/wiki/Design_Patterns&lt;/a&gt; &lt;/p&gt;
&lt;blockquote&gt;As a general rule of thumb, keep in mind that your code instantly gets 270-890% better when using design patterns (unless, of course, you are programming in &lt;a href="http://uncyclopedia.org/wiki/Perl" title="Perl"&gt;Perl&lt;/a&gt; or &lt;a href="http://uncyclopedia.org/wiki/Ass" title="Ass"&gt;Assembly&lt;/a&gt;). Note also that design patterns let you score big time with the &lt;a href="http://uncyclopedia.org/wiki/Chicks" title="Chicks"&gt;ladies&lt;/a&gt; at &lt;a href="http://uncyclopedia.org/wiki/Party" title="Party"&gt;parties&lt;/a&gt; (unless you abuse &lt;a href="http://uncyclopedia.org/wiki/Design_Patterns#Dependency_Rejection" title=""&gt;Dependency Rejection&lt;/a&gt; pattern), increase the &lt;a href="http://uncyclopedia.org/index.php?title=Size&amp;amp;action=edit" class="new" title="Size"&gt;size&lt;/a&gt; of your &lt;a href="http://uncyclopedia.org/wiki/Dick" title="Dick"&gt;member&lt;/a&gt;, make you a better driver, and level you directly to &lt;a href="http://uncyclopedia.org/wiki/Tom_Cruise" title="Tom Cruise"&gt;OT9&lt;/a&gt;. &lt;/blockquote&gt;
&lt;p&gt; Made my chuckle! &lt;/p&gt;
&lt;p&gt;On a totally different note, now long till &lt;a href="http://www.developerdayscotland.com/"&gt;Developer Day Scotland&lt;/a&gt;.  If your in Scotland and have signed up, shame on you!  Get signed up now, should be an interesting day.  Also, like to point out the &lt;a href="http://tech.groups.yahoo.com/group/glasgow_altdotnet_usersgroup/"&gt;Scotland ALT.NET User Group&lt;/a&gt; again.  Looks like a meet on the &lt;a href="http://www.scottishdevelopers.com/modules/extcal/event.php?event=59"&gt;28th May&lt;/a&gt; is set to g oahead.  I'm due to be on &lt;a href="http://en.wikipedia.org/wiki/Azerbaijan"&gt;holiday&lt;/a&gt; then, so I'm not going to make it, but I'm really looking forward to attending future events.  I think raising the developer education level in Glasgow is really long past due.  There are too many developers out there that take the word of Microsoft as gospel won't try any of the fantastic OSS projects out there!&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121534"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121534" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/121534.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/04/23/new-to-design-patterns.aspx</guid>
            <pubDate>Wed, 23 Apr 2008 14:34:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/121534.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/04/23/new-to-design-patterns.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/121534.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Glasgow ALT.NET Meetup - 28th May</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/04/22/glasgow-alt.net-meetup---28th-may.aspx</link>
            <description>Looks like there is going to be a meetup on the 28th of May for the Scotland ALT.NET User Group.  Unfortunately I might be on holiday  so I won't be there! :(  If your interesting in participating, check out the &lt;a href="http://tech.groups.yahoo.com/group/glasgow_altdotnet_usersgroup/"&gt;mailing list.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Looks like it will be an informal meet up in &lt;a href="http://maps.google.co.uk/maps?hl=en&amp;amp;client=firefox-a&amp;amp;ie=UTF8&amp;amp;q=waxy+o'connors,&amp;amp;near=Glasgow,+Lanarkshire&amp;amp;fb=1&amp;amp;cid=0,0,8323350758000725991&amp;amp;z=16&amp;amp;iwloc=A"&gt;Waxy O'Conner&lt;/a&gt; as a precursor to a more formal meetup.  I'm keen on getting an Open Space conference going like what took place in Seattle at the weekend.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121496"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121496" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/121496.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/04/22/glasgow-alt.net-meetup---28th-may.aspx</guid>
            <pubDate>Tue, 22 Apr 2008 16:15:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/121496.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/04/22/glasgow-alt.net-meetup---28th-may.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/121496.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Glasgow ALT.NET User Group</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/04/21/glasgow-alt.net-user-group.aspx</link>
            <description>My dev manager has decided he has had enough of the terrible level of development education in Glasgow, so he's wanting to start a Glasgow ALT.NET User Group.&lt;br /&gt;
&lt;br /&gt;
It's not a job requirement for me to join, so I'm there.  If your in Scotland and you want to discuss ALT.NET with other Scotland based develoepers, be sure to sign up.  He posted on &lt;a href="http://www.scottishdevelopers.com/modules/newbb/viewtopic.php?topic_id=1146&amp;amp;forum=2100&amp;amp;post_id=4007#forumpost4007"&gt;Scottish Developers&lt;/a&gt;  and you can sign up for the mailing list here: &lt;a href="http://tech.groups.yahoo.com/group/glasgow_altdotnet_usersgroup/"&gt;http://tech.groups.yahoo.com/group/glasgow_altdotnet_usersgroup/&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121451"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121451" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/121451.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/04/21/glasgow-alt.net-user-group.aspx</guid>
            <pubDate>Mon, 21 Apr 2008 14:11:35 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/121451.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/04/21/glasgow-alt.net-user-group.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/121451.aspx</wfw:commentRss>
        </item>
        <item>
            <title>WANTED: Glasgow based Trainee .NET Developer</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/04/18/wanted-glasgow-based-trainee-.net-developer.aspx</link>
            <description>&lt;h3 style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Strictly no agencies.  I mean it!  If I get a single call or email I will NOT be polite.&lt;/span&gt;&lt;/h3&gt;
My employer is looking to hire a trainee .NET developer.  No real previous .NET experience is required, but you must have a passion for development and the latest technology.&lt;br /&gt;
&lt;br /&gt;
You'll get the opportunity to learn and work with many practices and tools that fall under the ALT.NET banner:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Agile Practices&lt;/li&gt;
    &lt;li&gt;Test Driven Development&lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Domain Driven Development&lt;/li&gt;
    &lt;li&gt;Continuous Integration&lt;/li&gt;
    &lt;li&gt;NHibernate&lt;/li&gt;
    &lt;li&gt;Castle&lt;/li&gt;
    &lt;li&gt;Binsor&lt;/li&gt;
    &lt;li&gt;BOO&lt;/li&gt;
    &lt;li&gt;Rhino&lt;/li&gt;
    &lt;li&gt;.NET 3.5&lt;/li&gt;
    &lt;li&gt;ASP.NET MVC&lt;br /&gt;
    &lt;/li&gt;
&lt;/ul&gt;
This is a &lt;span style="font-weight: bold;"&gt;great &lt;/span&gt;opportunity for someone just starting out in the .NET world.  You'll get full training in all the above technologies and more (SQL Server, jQuery, etc.).  This position will give you amazing experience with .NET in an ALT.NET influenced development environment.  This is what we looking for from you:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Passionate about technology&lt;br /&gt;
    &lt;/li&gt;
    &lt;li&gt;Willing to learn&lt;/li&gt;
    &lt;li&gt;Hard working&lt;/li&gt;
    &lt;li&gt;Self-motivating&lt;/li&gt;
    &lt;li&gt;Believes in the right tools for the job&lt;/li&gt;
&lt;/ul&gt;
As well as the list of technologies, your duties will include:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Testing the product range&lt;/li&gt;
    &lt;li&gt;Support current product&lt;/li&gt;
    &lt;li&gt;Develop new functionality/software&lt;/li&gt;
&lt;/ul&gt;
If your interested, contact me at chris dot canal at e4ums dot co dot uk.   As I said at the start, you don't need a load of experience, you will get trained in everything your going to need.&lt;br /&gt;
&lt;h3 style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Strictly no agencies.  I mean it!  If I get a single call or email I will NOT be polite.&lt;/span&gt;&lt;/h3&gt;
&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121345"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121345" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/121345.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/04/18/wanted-glasgow-based-trainee-.net-developer.aspx</guid>
            <pubDate>Fri, 18 Apr 2008 16:51:56 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/121345.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/04/18/wanted-glasgow-based-trainee-.net-developer.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/121345.aspx</wfw:commentRss>
        </item>
        <item>
            <title>TeamCity and NUnit 2.4.7 *Updated*</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/04/10/teamcity-and-nunit-2.4.7.aspx</link>
            <description>If your on the ALT.NET mailing list, you probably seen the &lt;span style="text-decoration: line-through;"&gt;argument&lt;/span&gt; debate of the choice of CI Server.  I've always used CC.NET, but decided to give TeamCity a whirl last night.&lt;br /&gt;
&lt;br /&gt;
Overall I'm impressed, but I'm having a problem running my tests.  I'm using the latest build of NUnit (2.4.7) and Team City returns an error :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Failure executing test(s). If you assembly is not built using NUnit version 2.4.6.0, then ensure you have redirected assembly bindings. Consult the documentation of the &amp;lt;nunit2&amp;gt; task for more information.&lt;/blockquote&gt; I've gone through the documenation and tried to find out how to sort it, but I've had no luck so far.  Has anyone had this problem?&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;*Update*&lt;br /&gt;
&lt;/span&gt;Got it sorted.  Todays lesson:  Don't be so lazy!  I was originally building it with the solution file.  I switched it to my NAnt script and it seems to be working ok now... Now to work out if there is anyway to display the NUnit test results.... :)&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121155"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121155" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/121155.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/04/10/teamcity-and-nunit-2.4.7.aspx</guid>
            <pubDate>Thu, 10 Apr 2008 17:02:01 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/121155.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/04/10/teamcity-and-nunit-2.4.7.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/121155.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Building Web Applications with Visual Studio 2008 Talk, Glasgow, 3rd Apr</title>
            <link>http://geekswithblogs.net/chriscanal/archive/2008/03/31/building-web-applications-with-visual-studio-2008-talk-glasgow-3rd.aspx</link>
            <description>&lt;img width="276" height="211" align="right" src="/images/geekswithblogs_net/chriscanal/uni.png" alt="Glasgow Caledonian University" style="border: 0pt none ;" /&gt;I'm going, first one in a very loooong time.  Anyone from Glasgow also going?&lt;br /&gt;
&lt;br /&gt;
There are prizes listed, but not how you win them... hmm... :)&lt;br /&gt;
&lt;br /&gt;
Get more information here: &lt;a href="http://www.scottishdevelopers.com/modules/extcal/event.php?event=48"&gt;http://www.scottishdevelopers.com/modules/extcal/event.php?event=48&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120884"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120884" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chriscanal/aggbug/120884.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Canal</dc:creator>
            <guid>http://geekswithblogs.net/chriscanal/archive/2008/03/31/building-web-applications-with-visual-studio-2008-talk-glasgow-3rd.aspx</guid>
            <pubDate>Mon, 31 Mar 2008 20:39:29 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chriscanal/comments/120884.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chriscanal/archive/2008/03/31/building-web-applications-with-visual-studio-2008-talk-glasgow-3rd.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/chriscanal/comments/commentRss/120884.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>